J'ai découvert Arduino depuis peu de temps, et j'ai trouvé la solution excellente car j'arrive à programmer sans trop de difficulté !!!
En fait, j'ai un projet de commander un réseau de trains miniatures avec des "expanders" I2C.
Donc voici quelques programmes de mon cru (même si j'ai parfois pomper sur les programmes existants
Lecture d'un PCF8574 [A]
- Code: Select all
#include <Wire.h>
byte iInput=0;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("Lecture d'un PCF8574");
}
void loop()
{
Wire.requestFrom(0x38,1); // Commencement de la réception de l'état PCF8574
if(Wire.available()); //
{
iInput = Wire.read(); // Lecture de l'octet
Serial.println(iInput); // Tansfert du contenu du PCF8574A dans la liaison USB.
}
delay(2000);
Lectures de plusieurs PCF8574 [A] ...
- Code: Select all
#include <Wire.h>
byte iInput=0;
int adresse;
int adresse2;
int car;
int check;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("Lecture d'un PCF8574");
}
void loop()
{
adresse2 = 0x00; //reset des valeurs
adresse = 0x00;
car = Serial.read(); // Lecture du port série
if ( car == 'r') //Si on appuie sur la touche "r", envoie de l'ordre de réception
{
Serial.println("Adresse ?");
delay(2000);
iInput=0;
adresse = Serial.read(); // Lecture de l'adresse au foramt ASCII
adresse = adresse - 48; // Transformation de de l'ASCII en octet
switch (adresse) //Test de l'adresse 1 -> adresse 0x22 ; 2 -> adresse 0x38 ; 3 -> adresse 0x39
{
case 1 :
adresse2 = 0x22;
break;
case 2 :
adresse2 = 0x38;
break;
case 3 :
adresse2 = 0x39;
break;
}
Wire.requestFrom(adresse2,1); // Commencement de la réception de l'état PCF8574
if(Wire.available()); //
{
check = Wire.endTransmission();
Serial.println(check);
iInput = Wire.read(); // Lecture de l'octet
Serial.println(iInput,BIN); // Tansfert du contenu du PCF8574A dans la liaison USB.
}
}
else
{ Serial.println("Attente");
}
check = Wire.endTransmission();
Serial.println(check);
delay(2000);
}




