je veut programme un robot suiveur de ligne avec 6 capteur dans le pic 16F84A mais je trouve des problèmes voici mon code :
// Suiveur de ligne
// 0=noir 1=blanc
#define c1 PORTB.F0 //capteur
#define c2 PORTB.F1 //capteur
#define c3 PORTB.F2 //capteur
#define c4 PORTB.F3 //capteur
#define c5 PORTB.F4 //capteur
#define c6 PORTB.F5 //capteur
#define s1 PORTB.F6 //servo moteur
#define s2 PORTB.F7 //servo moteur
void A(){
s1=1; //s1 -_______________
s2=1; //s2 --______________
delay_ms(1);
s1=0;
delay_ms(1);
s2=0;
delay_ms(18);
}
void R(){
s1=1; // s1 --_____________
s2=1; // s2 -______________
delay_ms(1);
s2=0;
delay_ms(1);
s1=0;
delay_ms(18);
}
void TG(){
s2=1;
s1=0;
delay_ms(2);
s2=0;
delay_ms(18);
}
//tourne droit
void TD(){
s1=1;
s2=0;
delay_ms(1);
s1=0;
delay_ms(19);
}
// 2 fonction stop et demi-tours
void ST(){
s1=0;
s2=0;
delay_ms(20);
}
void DT(){
while(c6!=0){
TD();
/* s1=0;
s2=1;
delay_ms(20);
*/
}
}
void main() {
TRISB=0b00111111;
//TRISA=0b00000100;
while(1){
if(c1==0 && c2==0 && c3==0 && c4==0 && c5==0 && c6==0) TG();
if(c1==0 && c2==0 && c3==1 && c4==1 && c5==1 && c6==1) TG();
if(c1==0 && c2==1 && c3==1 && c4==1 && c5==1 && c6==1) TG();
if(c1==1 && c2==0 && c3==0 && c4==1 && c5==1 && c6==1) TG();
if(c1==1 && c2==1 && c3==0 && c4==0 && c5==0 && c6==0) TD();
if(c1==1 && c2==1 && c3==1 && c4==0 && c5==0 && c6==1) TD();
if(c1==1 && c2==1 && c3==1 && c4==1 && c5==0 && c6==0) TD()
if(c1==1 && c2==1 && c3==1 && c4==1 && c5==1 && c6==0) TD();
if(c1==0 && c2==0 && c3==0 && c4==0 && c5==1 && c6==1) DT();
if(c1==1 && c2==1 && c3==0 &&c4==0 && c5==0 && c6==0)) DT();
if(c1==1 && c2==1 && c3==1 && c4==1 && c5==1 && c6==1)ST(); //fonction stop
else
A()
}
//merci
-----