Salut )
Je suis entrain de réaliser une liaison infrarouge dans le but de transmettre un seul caractère( 0,1 ,2,3,4,5,6,7,8,9) a partir de mon interface labview .la première liaison entre pc et premier pic est a travers rs232 j'ai choisis d'utiliser comme émetteur ( pic 16f628a et une LED infrarouge) et comme récepteur ( pic 16f877 et un tsop ) la liaison entre les 2 pic se fait a travers un rayonnement infrarouge donc je veux que mon caractère envoyé a partir de mon interface graphique soit récupérer dans le deuxième pic d'ou j'ai penser a faire un codage coté émetteur par exemple 1 sera module 0001
2 sera module 0010 ect.. et d'autre coté je dois seulement faire le décodage..
la visualisation sur isisCode:unsigned char location=0; void main() { UART1_Init(9600); Delay_ms(100); trisb=0b00011111; //portb sortie pwm portb=0; PWM1_Init(38000); Pwm1_Set_Duty(255); PWM1_Start(); while(1) { if (UART1_Data_Ready()==1 ) { location = UART1_Read(); uart1_write(location); } if (portb.f2==1) if (location ='1') { PWM1_Set_Duty(0) ; delay_ms(1020); PWM1_Set_Duty(0) ; delay_ms(1020); PWM1_Set_Duty(0) ; delay_ms(1020); PWM1_Set_Duty(127) ; delay_ms(1020); PWM1_Stop(); } else if (location ='2') { PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Stop(); } else if (location ='3') { PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127); delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Stop(); } else if (location ='4') { PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(0) ; delay_ms(1020); PWM1_Stop(); } else if (location ='5') { PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Stop(); } else if (location ='6') { PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(127); delay_us(1020); PWM1_Set_Duty(0) ; delay_ms(1020); PWM1_Stop(); } else if (location ='7') { PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(127); delay_us(1020); PWM1_Stop(); } else if (location ='8') { PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Set_Duty(0); delay_us(1020); PWM1_Set_Duty(0); delay_us(1020); PWM1_Set_Duty(0); delay_us(1020); PWM1_Stop(); } else if (location ='9') { PWM1_Set_Duty(127); delay_us(1020); PWM1_Set_Duty(0) ; delay_us(1020); PWM1_Set_Duty(0); delay_us(1020); PWM1_Set_Duty(127) ; delay_us(1020); PWM1_Stop(); } else if (portb.f2==0); { pwm1_set_duty(0) ; } } }
pour le récepteur mon code est le suivant Suppression de l'image hébergée pour la modération, Cram 64.
il y'a un siganl mais meme je n'envoye pas un caractrere ce siganl est toujours a ??
mais je ne visualise rien coté récepteur !!! j'ai relié ma sortie de tsop au port b .dois je relier a Rx ??Code:unsigned char location; int a,b,r,d; void main() { trisb=0xff; portb=0; while (1) { if (portb.f7==0){ delay_us(300); a=portb.f0; delay_us(600); b=portb.f0 ; delay_us(600); r=portb.f0; delay_us(600); d=portb.f0; delay_us(600); } if (a==0 && b==0 && r==0&& d==1 ) { location ='1'; } else if(a==0 && b==0 && r==1&& d==0) { location='2'; } else if (a==0 && b==0 && r==1 && d==1) { location='3'; } else if (a==0 && b==1 && r==0 && d==0) { location='4'; } else if(a==0 && b==1 && r==0 && d ==1) { location='5'; } else if(a==0 && b==1 && r==1 && d==0) { location='6'; } else if(a==0 && b==1 && r==1 && d==1 ) { location='7'; } else if(a==1 && b==0 && r==0 && d==0) { location='8'; } else if(a==1 && b==0 && r==0 && d==1 ) { location='9'; } }}
d'ou vient le problème ??
ici une copie sur la visualisation ###### supprimé : pas d'image sur un serveur extérieur
Aurevoir
peace
-----