#include #include "biosdem.h" __CONFIG (0x3D39); #define SEUIL 113 void tout_droit(void); void virage_droite(void); void virage_gauche(void); void arret(void); void init_moteur(void); void init_del(void); char Detection_Piste(void); void main ( void ) { char Capteur=0; ADCON1=0x00; adc_on(); init_moteur(); init_del(); RD3=0; for(;;) { if (RD7==1) { Capteur=Detection_Piste(); switch(Capteur) { case 8 : { RD3=1; virage_gauche(); break;} case 12 : { RD3=1; virage_gauche(); break;} case 6 : {RD3=1; virage_droite(); break;} case 4 : {RD3=1; tout_droit(); break;} case 2 : {RD3=1; virage_droite(); break;} default: // arret(); break; } } } } void init_del(void) { TRISB1=0; TRISB2=0; TRISB4=0; TRISB5=0; } void init_moteur(void) { PR2=99; //periode 100us avec quartz 4Mhz CCPR1L=0; CCPR2L=0; TRISD1=0; TRISD2=0; TRISD3=0; TRISC1=0; TRISC2=0; TMR2ON=1; CCP1CON=0x0C; CCP2CON=0x0C; } char Detection_Piste(void) { char masque=0; char CaptDroit1=0,CaptDroit2=0,CaptCentre=0, CaptGauche1=0,CaptGauche2=0; CaptDroit2=adc_read_8b(0);//capteur droit CaptDroit1=adc_read_8b(1);//capteur droit CaptCentre=adc_read_8b(2);//capteur Centre CaptGauche1=adc_read_8b(3);//capteur Gauche CaptGauche2=adc_read_8b(4);//capteur Gauche masque = 0; if(CaptDroit2