synth_as
Ceci est une ancienne révision du document !
TP Synthèse AS
Dans un premier temps, relever les adresses des composants PCF8574 de la carte tel que configuré par les cavaliers (ne pas modifier la configuration des cavaliers).
Dans l'IDE Arduino, compléter le fichier suivant avec :
- Les adresses relevés pour les composants PCF8574.
- Le comportement décrit dans la fonction loop.
#include <Wire.h> #define SLAVE_ADDR_8574_A 0x00 #define SLAVE_ADDR_8574_B 0x00 ////////////////////////////////////////// char readPort8574(char addr, char * ptr_value) { Wire.requestFrom((byte)addr, (byte)1);// demande la lecture d'1 octet depuis l'adresse du pérpiphérique if (Wire.available()==1) //si l'octet est disponible { (* ptr_value) = Wire.read(); // lire l'octet return 0; } else { (* ptr_value) =0; //valeur par défaut si le composant n'a pas acquité return -1; } } ////////////////////////////////////////// char writePort8574(char addr, char value) { Wire.beginTransmission((byte)addr);//démarre la transmission avec l'adresse du pérpiphérique Wire.write((byte)value); //envoie la donnée if (Wire.endTransmission()==0) //stoppe la transmission return 0; else return -1; } char ascii_to_hex(char * ascii, char * hex){ int i ; for(i = 0 ; i < 2 ; i ++){ char one_ascii = ascii[i]; if(one_ascii >= '0' && one_ascii <= '9' || one_ascii >= 'A' && one_ascii <= 'F'){ (*hex) = (*hex) << 4 ; if(one_ascii >= '0' && one_ascii <= '9') one_ascii -= '0'; else one_ascii -= ('A' - 10) ; (*hex) |= (one_ascii & 0x0F); }else{ return -1 ; } } return 1 ; } char hex_to_ascii(char * ascii, char hex){ int i ; for(i = 0 ; i < 2 ; i ++){ char one_hex = ((hex >> (4 - (i*4))) & 0x0F); if(one_hex < 10) ascii[i] = one_hex + '0' ; else ascii[i] = (one_hex - 10) + 'A'; } ascii[2]='\0'; return 1 ; } void setup() { Serial.begin(9600); Wire.begin(); // joindre le bus i2c en tant que maître writePort8574( SLAVE_ADDR_8574_B , 0xff); //configure le composant B en entrée } char tab_reception[16]; char taille_tab_reception = 0 ; char tab_emission[16]; char value ; void loop() { // Dans un premier temps, relever les adresses des composants PCF8574 de la carte par la lecture des cavaliers et éditer les define SLAVE_ADDR_8574_A et SLAVE_ADDR_8574_B // Si un caractère est disponible sur l'UART // Ajouter le caractère au tableau tab_reception // Incrémenter taille_tab_reception // Si taille taille_tab_reception est supérieur ou égale à 2 // Convertir le contenu de tab_réception en hexa et écrire le résultat sur le PCF8574 A // remettre taille_tab_reception à zéro //Lire le PCF8574 B //Convertir la valeur lue en une chaine ascii contenant sa représentation hexadecimal dans le tableau tab_emission //Envoyer la chaine sur la laison série //Attendre 1s }
synth_as.1464023839.txt.gz · Dernière modification : 2016/05/23 19:17 de jpiat