fiz o seguinte codigo mas nao tenho como testar. e sei que deve ter farios problemas.
espero que possam me ajudar a melhorar essa logica.
// PIC16F628A
#define s1 RA1 // SENSOR DA ESQUERDA
#define s2 RA2 // SENSOR DA ESQUERDA DO CENTRO
#define s3 RA3 // SENSOR DA DIREITA DO CENTRO
#define s4 RA4 // SENSOR DA DIREITA
// NA PONTE H L293D
#define m1_in1 RB1 // MOTOR ESUERDO SENTIDO 1
#define m1_in2 RB2 // MOTOR ESQUERDO SENTIDO 2
#define m2_in3 RB3 // MOTOR DIREITO SENTIDO 2
#define m2_in4 RB4 // MOTOR DIREITO SENTIDO 1
#define _XTAL_FREQ 4000000
void configura ()
{
INTCON = 0;
CMCON = 0x07;
OPTION_REG = 0x80;
TRISA = 0b1111111;
TRISB = 0;
PORTB = 0;
}
void main ()
{
configura();
while(1)
{
// QUANDO SO O SENSOR s1(SENSOR DA ESQUERDA) ESTA NA FAIXA
// VIRA PARA ESQUERDA
if(s1==0)
m1_in1 = 1;
else
m1_in1 = 0;
// QUANDO SO O SENSOR s4 (SENSOR DA DIREITA) ESTA NA FAIXA
// VIRA PARA DIREIA
if(s4==0)
m2_in4 = 1;
else
m2_in4 = 0;
// QUANDO OS SENSORES s2 E s3 estão NA FAIXA
// SITUACAO EM QUE A FAIXA ESTA NO CENTRO
// SEGUE EM FRENTE
if(s2==0&&s3==0){
m1_in1 = 1; // MOTOR ESUQERDO SENTIDO 1
m2_in4 = 1; // MOTOR DIREITO SENTIDO 1
}
// QUANDO s1 E s4 estão NA FAIXA
// SITUACAO QUE E POSSIVEL EM UM CRUZAMENTO DE FAIXAS
// SEGUE EM FRENTE
if(s1==0&&s4==0){
m1_in1 = 1; // MOTOR ESQUERDO SENTIDO 1
m2_in4 = 1; // MOTOR DIREITO SENTIDO 1
}
}
}