Précédente Accueil Suivante

 

Accueil
Le projet IRBOT
Chassis roues
Servomoteur
Modif servos
Test servos
Le radar IR
Premiers pas robot
Détection collision
Télécommander
Test RC5
IRBOT et RC5
Mémo parcours
Mise en veille
Vers PIC16F628
Borne recharge
Compilateur CCS
Modif matérielle
Recharge du robot
Bip Bip ...
En musique
Vidéos
Téléchargements
Carte développ.
Liens Affiliation

Test RC5

Ce test permet d'afficher sur l'écran du PC la valeur des codes correspondants aux touches de la télécommande.

La télécommande utilisée

Il s'agit d'une télécommande universelle (One for All), configurée pour émuler une PHILIPS



L'écran du terminal PC

J'ai utilisé l'émulateur de terminal Kermit. On peut aussi utiliser l'hyperterminal de Windows.
Les codes sont affichés sur 2 octets en hexa. Cela correspond au mot de 13 bits reçu. Les 3 bits de poids fort ne sont pas significatifs.




Le schéma

Pour les besoins d'affichage des codes sur l'écran du PC, j'ai rajouté un MAX232 relié a un connecteur 9 points.
IRBOT est rélié au PC par un câble droit sur COM1.




Le programme

Quelques explications:
Le programme boucle en attente du bit de start. A réception de start, on se positionne au milieu du premier niveau d'un bit (sachant qu'un bit doit obligatoirement avoir 2 niveaux). Et on capture les bits au fil de l'eau, on les pousse dans le buffer vers la gauche.
On vérifie qu'il y a bien un changement de niveau à chaque bit, sinon erreur.



//***************************************************
// CCS Compiler
// telecom - Télécommande ir
//
// Auteur : HEILIG Yves
//***************************************************

#include <16f84.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=115200, xmit=PIN_B6, rcv=PIN_B7)


#define REC_IR PIN_B6 // récepteur ir


//**********************
// Programme principal
//**********************

main() {

int1 bit;
int i, nbit, erreur;
byte buffer[2];

printf ("Test Telecommande IR : PHILIPS\r\n\n");

while (TRUE) {

buffer[0]=0;
buffer[1]=0;
erreur=0;
nbit=0;
i=0;

while ( i++ != 4) { // Test si REC_IR au repos prolongé
if (REC_IR == 0) i=0;
delay_us (889);
}

while (input(REC_IR)==1); // Attend bit de START
delay_us(444); // on se positionne au milieu

while ((nbit++ != 13) && (erreur == 0)) {
delay_us (889);

if (input(REC_IR)==0) {
delay_us (889);
if (input(REC_IR) != 1) erreur=1;
bit=0; // c'est un 0
}

else {
delay_us (889);
if (input(REC_IR) != 0) erreur=1;
bit=1;
}
shift_left(buffer,2,bit); // et on le pousse dans le buffer

}
if (erreur) printf ("Erreur\n\r");
else {
printf ("%x %x Touche %d\n\r",buffer[1],buffer[0],buffer[0]);
}
}




}

Tous les codes de la télécommande

Touche Code en décimal Touche Code en décimal
0 0 STOP 54
1 1 PAUSE 41
2 2 VOL+ 16
3 3 VOL- 17
4 4 C+ 32
5 5 C- 33
6 6 VEILLE 12
7 7 HP 13
8 8    
9 9    
10 10    
20 11    
REW 60    
PLAY 63    
FF 46    
REC 50    







Précédente Accueil Suivante