Outils pour utilisateurs

Outils du site


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