Action disabled: diff
synth_as
Ceci est une ancienne révision du document !
TP Synthèse AS
#include <Wire.h> #define SLAVE_ADDR_8574_A 0x3E #define SLAVE_ADDR_8574_B 0x3F ////////////////////////////////////////// char readPort8574(char addr, char * ptr_value) /*addr, l'adresse du PCF8574 ptr_value, pointeur pour renvoyer la valeur lue sur le port retourne -1 si échec 0 sinon*/ { 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) /*addr, l'adresse du PCF8574 value, la valeur à écrire sur le port retourne -1 si échec 0 sinon */ { 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 // 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.1464023392.txt.gz · Dernière modification : 2016/05/23 19:09 de jpiat