Bonjour,
j'ai réalisé un programme de PICA6F877A qui va comparer deux tension sortant d'un LDR : le principe est le suivant : le moteur tourne jusqu'à ce que les deux tension des ldr soit égale, mais quand j'ai commencé dans le pratique je remarque qu'il est impossible d'avoir 2 tension égales dans l'analogique.
le programme est si dessous :
comment je peut faire pour qu'il y'a un intervalle de tolérance des tensionCode:void initialisation(void); void cmd_moteur(signed def1,signed def2 ,unsigned B1,unsigned B2,unsigned B3,unsigned B4); /***************************************************************************/ /* main */ /***************************************************************************/ void main(void){ unsigned Vlaz1,Vlaz2,V1,V2,B1,B2,B3,B4; signed def1,def2; char txt[20]; char txt1[20]; initialisation(); while (1) { PORTB=0X00; Vlaz1 = Adc_Read(0)>>2 ; Vlaz2 = Adc_Read(1) >>2 ; V1= Adc_Read(2) >>2 ; V2= Adc_Read(3) >>2 ; B1= Adc_Read(4) >>2 ; B2= Adc_Read(5) >>2 ; B3= Adc_Read(6) >>2 ; B4= Adc_Read(7) >>2 ; def1=Vlaz1-Vlaz2; def2=V1-V2; cmd_moteur(def1,def2 ,B1,B2,B3,B4); } } /***************************************************************************/ /* fonction() */ /***************************************************************************/ void cmd_moteur(signed def1,signed def2 ,unsigned B1,unsigned B2,unsigned B3,unsigned B4) {unsigned Vlaz1,Vlaz2,V1,V2; while ( ((def1<0)&(B1<100)) || ((def1>0)&(B2<100)) || ((def2<0)&(B3<100)) || ((def2>0)&(B4<100)) ) { Vlaz1 = Adc_Read(0)>>2 ; Vlaz2 = Adc_Read(1) >>2 ; V1= Adc_Read(2) >>2 ; V2= Adc_Read(3) >>2 ; B1= Adc_Read(4) >>2 ; B2= Adc_Read(5) >>2 ; B3= Adc_Read(6) >>2 ; B4= Adc_Read(7) >>2 ; def1=Vlaz1-Vlaz2; def2=V1-V2; if ((def1<0)&(B1<100)) PORTB=0X03; else if ((def1>0)&(B2<100)) // PORTB=0X0C; if ((def2<0)&(B3<100)) PORTB=0X30; else if ((def2>0)&(B4<100)) PORTB=0XC0; } } void initialisation(void){ LCD_Init(&PORTD); // PORTA=0XFF; // PORTE=0XFF; ADCON1=0X80;//0X82; TRISA=0XFF; TRISE=0XFF; TRISB =0X00; TRISD =0X00; }
merci d'avance
-----