Outils pour utilisateurs

Outils du site


synth_as

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
synth_as [2016/05/23 19:17]
jpiat
synth_as [2016/05/24 09:50]
jpiat
Ligne 1: Ligne 1:
-====== TP Synthèse AS ======+====== TP Synthèse AS SUJET A======
  
-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 la suite vous sauvegarderez le sketch (fichier) arduino dans le sketchbook de l'​utilisateur (répertoire par défaut) en utilisant votre nom de famille comme nom de fichier. 
 + 
 +Dans un premier temps, relever les adresses des composants PCF8574 de la carte telles ​que configurées ​par les cavaliers (ne pas modifier la configuration des cavaliers).
  
 Dans l'IDE Arduino, compléter le fichier suivant avec : Dans l'IDE Arduino, compléter le fichier suivant avec :
Ligne 7: Ligne 9:
   * Les adresses relevés pour les composants PCF8574.   * Les adresses relevés pour les composants PCF8574.
   * Le comportement décrit dans la fonction loop.   * Le comportement décrit dans la fonction loop.
 +
 +Faire valider en séance :
 +  * La réception d'une valeur hexa et son affichage sur les leds
 +  * L'​émission de la valeur hexa codée par les interrupteurs
  
 <file synthese.ino>​ <file synthese.ino>​
Ligne 12: Ligne 18:
  
  
-#define SLAVE_ADDR_8574_A 0x00+#define SLAVE_ADDR_8574_A 0x00 
 #define SLAVE_ADDR_8574_B 0x00 #define SLAVE_ADDR_8574_B 0x00
    
Ligne 42: Ligne 48:
  
  
 +/////////////////////////////////////////////////////////////////​
 +//fonction de conversion qui traite le tableau pointé par ascii contenant une chaine de 2 caractères ascii correspondants à une valeur hexadécimale. La valeur convertie est rangée à l'​adresse hex (paramètre en sortie). La fonction retourne 1 en cas de réussite de la conversion et 0 en cas d'​échec.
 char ascii_to_hex(char * ascii, char * hex){ char ascii_to_hex(char * ascii, char * hex){
   int i ;   int i ;
Ligne 47: Ligne 55:
       char one_ascii = ascii[i];       char one_ascii = ascii[i];
       if(one_ascii >= '​0'​ && one_ascii <= '​9'​ || one_ascii >= '​A'​ && one_ascii <= '​F'​){       if(one_ascii >= '​0'​ && one_ascii <= '​9'​ || one_ascii >= '​A'​ && one_ascii <= '​F'​){
-      ​(*hex) = (*hex) << 4 ; +        ​(*hex) = (*hex) << 4 ; 
-        if(one_ascii >= '​0'​ && one_ascii <= '​9'​) one_ascii -= '​0';​ +        if(one_ascii >= '​0'​ && one_ascii <= '​9'​) ​ 
-        else one_ascii -= ('​A'​ - 10) ;+             one_ascii -= '​0';​ 
 +        else  
 +             one_ascii -= ('​A'​ - 10) ;
         (*hex) |= (one_ascii & 0x0F);         (*hex) |= (one_ascii & 0x0F);
       }else{       }else{
Ligne 57: Ligne 67:
   return 1 ;   return 1 ;
 } }
 +/////////////////////////////////////////////////////////////////​ 
 +//fonction de conversion qui remplie le tableau pointé par ascii avec une chaine de 2 caractères ascii correspondants à la valeur hexadécimale hex. La fonction retourne toujours 1.
 char hex_to_ascii(char * ascii, char hex){ char hex_to_ascii(char * ascii, char hex){
   int i ;   int i ;
Ligne 69: Ligne 80:
   ​   ​
 } }
 +///////////////////////////////////////////////////////////::​
 void setup() { void setup() {
   Serial.begin(9600);​   Serial.begin(9600);​
Ligne 75: Ligne 86:
   writePort8574( SLAVE_ADDR_8574_B , 0xff); //configure le composant B en entrée   writePort8574( SLAVE_ADDR_8574_B , 0xff); //configure le composant B en entrée
 } }
 +///////////////////////////////////////////////////////////::​
 char tab_reception[16];​ char tab_reception[16];​
 char taille_tab_reception = 0 ; char taille_tab_reception = 0 ;
 char tab_emission[16];​ char tab_emission[16];​
 char value ; char value ;
 +///////////////////////////////////////////////////////////::​
 void loop() { 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+  // 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+  // Si un caractère est disponible ​en lecture ​sur l'UART
     // Ajouter le caractère au tableau tab_reception     // Ajouter le caractère au tableau tab_reception
     // Incrémenter taille_tab_reception     // Incrémenter taille_tab_reception
-    // Si taille taille_tab_reception est supérieur ​ou égale à 2+    // Si taille taille_tab_reception est supérieure ​ou égale à 2
         // Convertir le contenu de tab_réception en hexa et écrire le résultat sur le PCF8574 A         // Convertir le contenu de tab_réception en hexa et écrire le résultat sur le PCF8574 A
         // remettre taille_tab_reception à zéro          // remettre taille_tab_reception à zéro 
  
- //Lire le PCF8574 B +  ​//Lire le PCF8574 B 
- //​Convertir la valeur lue en une chaine ascii contenant sa représentation ​hexadecimal ​dans le tableau tab_emission +  //Convertir la valeur lue en une chaine ascii contenant sa représentation ​hexadecimale ​dans le tableau tab_emission 
- //​Envoyer la chaine sur la laison série +  //Envoyer la chaine ​ascii sur la laison série 
- //​Attendre 1s+  //Attendre 1s
  
 } }
 </​file>​ </​file>​
  
synth_as.txt · Dernière modification: 2016/05/24 09:50 par jpiat