Outils pour utilisateurs

Outils du site


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