Bonjour , j'ai modifié je programme et c'est le suivant .
j'ai mit dans mon void loop un led qui clignote pour que je puisse savoir si oui ou non le programme tourne bien .
Je met rend compte que oui! maintenant il tourne a mon avis c'était un problème d'adresses .
car , j'ai recommencé le programme a zéro . particulièrement les adresses et aussi sur ma carte qui est une double face et c'est la première fois que j'en tire une j'ai fait certaine erreurs .
Mais cependant , j'aimerai avec celui ci stoké les valeurs lus par mes PCFde sortis dans un tableau " PCF_SORTIT*" et les i représente un bit dans un OCTET .*
```
* #include "Wire.h"
#include <LiquidCrystal.h>
// Adressage des expandeurs
#define Entrechip1 0x20 // binaire 0x20
#define Entrechip2 0x21 // binaire 0x21
#define Entrechip3 0x22// binaire 0x22
#define Entrechip4 0x23// binaire 0x23
#define Entrechip5 0x24// binaire 0x24
#define Entrechip6 0x25 // binaire 0x25
#define Sortichip1 0x26// binaire 0x26
#define Sortichip2 0x27// binaire 0x27
#define Sortichip3 0x38// binaire 38h
#define Sortichip4 0x39// binaire 39h
#define Sortichip5 0x3A// binaire 3Ah
#define Sortichip6 0x3B// binaire 3Bh
#define Sortichip7 0x3C// binaire 3Ch
#define Sortichip8 0x3D// binaire 3Dh
#define Sortichip9 0x3F// binaire 3Eh
#define LENGTH_REGISTER 8
int dd=200;
int val= B11111111;
int a,b,c;
byte x,y,u,v,w,s,z,p,t,m,n;
byte count;
int tableau[100];
byte PCF_SORTIT[LENGTH_REGISTER]; //Tableau contenant les valeurs des PCF au format binaire
int NUM_BROCHE [LENGTH_REGISTER]; //Tableau contenant les valeurs des PCF convertit en entier.
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Wire.begin();
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(" test continuite");
allOff(); // toutes les sorties à l'état haut
pinMode(13, OUTPUT);
}
void testcontinu2( int cable)
{
if ( cable == 25)
{
for (int a=1; a<16; a ++)
{
// mettre toutes les broches de win1 a l'état haut
Wire.beginTransmission(Entrechip1);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
// Lecture des valeurs
Wire.requestFrom(Sortichip1, 2);
x = Wire.receive();
y = Wire.receive();
}
for (a =17; a<26; a++)
{
Wire.beginTransmission( Entrechip2);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip2, 2);
t = Wire.receive();
u = Wire.receive();
}
}
// fin de test DB25
if( cable==37)
{
for ( a=1; a<17;a++)
{
Wire.beginTransmission(Entrechip1 );
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip1, 2);
x = Wire.receive();
y = Wire.receive();
}
for( a=17; a<33 ;a++)
{
Wire.beginTransmission(Entrechip2);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip2, 2);
t = Wire.receive();
u = Wire.receive();
}
for ( a= 33 ; a<38; a++)
{
Wire.beginTransmission( Entrechip3);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip3, 1);
v = Wire.receive();
Wire.requestFrom(Sortichip4, 1);
w = Wire.receive();
}
} // fin de test de SOcapex
if (cable==85)
{
for ( a=1; a<17; a++)
{
Wire.beginTransmission(Entrechip1);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip1, 2);
x = Wire.receive();
y = Wire.receive();
}
for( a=17; a< 33; a++)
{
Wire.beginTransmission(Entrechip2);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip2, 2);
t = Wire.receive();
u = Wire.receive();
}
for( a=33 ; a<49; a++)
{
Wire.beginTransmission(Entrechip3);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip3, 1);
v = Wire.receive();
Wire.requestFrom(Sortichip4, 1);
w = Wire.receive();
}
for( a=49; a<66; a++)
{
Wire.beginTransmission( Entrechip4);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip5, 1);
s = Wire.receive();
Wire.requestFrom(Sortichip6, 1);
z = Wire.receive();
}
for( a=66; a<82 ; a++)
{
Wire.beginTransmission( Entrechip5);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip7, 1);
m = Wire.receive();
Wire.requestFrom(Sortichip8, 1);
n = Wire.receive();
}
for( a=82; a<86 ;a++)
{
Wire.beginTransmission(Entrechip6);
Wire.send(val);
Wire.send(val);
Wire.endTransmission();
Wire.requestFrom(Sortichip9, 1);
p = Wire.receive();
}
}
}
// FONCTION DE CONVERSION DE VALEUR DECIMAL EN BINAIRE
/*void decToBin(int dec){ //effectue la conversion decimal vers binaire
int i=0;
for(i=0;i<8;i++){
if(dec%2==1){
lightLed(i,true);
}else{
lightLed(i,false);
}
dec=dec/2;
}
}
void loop() {
int i=0;
for(i=0;i<256;i++){ //boucle principale
decToBin(i);
delay(200);
}
}
// Effacer des caractères d’un point A à un point B sur une même ligne
void clear(byte ligne, byte debut, byte fin) {
for(byte i = debut ; i <= fin ; i++){
lcd.setCursor(i, ligne);
lcd.print(' ');
}
}
*/
void stockage1() // fonction pour stoker les valeurs des PC8575 de sortis ds 1 tableau
{
for(int i = 0; i < LENGTH_REGISTER; i++)
{
PCF_SORTIT[i] = Wire.receive(); //Enregistrement des 1 octects dans PCF_SORTIT
}
for(int i =10; i < LENGTH_REGISTER; i++)
{
PCF_SORTIT[i] = Wire.receive(); //Enregistrement des 1 octects dans PCF_SORTIT
}
//Serial.print( PCF_SORTIT[i], BIN);
//return 0;
}
void stockage2() // fonction pour stoker les valeurs des PC8574A de sortis ds 1 tableau
{
for(int i = 0; i < LENGTH_REGISTER; i++)
{
PCF_SORTIT[i] = Wire.receive(); //Enregistrement des 1 octects dans PCF_SORTIT
}
//return();
}
void allOff()
{
Wire.beginTransmission(Entrechip1);
Wire.send(B00000000);
Wire.send(B00000000);
Wire.endTransmission();
Wire.beginTransmission(Entrechip2);
Wire.send(B00000000);
Wire.send(B00000000);
Wire.endTransmission();
Wire.beginTransmission(Entrechip3);
Wire.send(B00000000);
Wire.send(B00000000);
Wire.endTransmission();
Wire.beginTransmission(Entrechip4);
Wire.send(B00000000);
Wire.send(B00000000);
Wire.endTransmission();
Wire.beginTransmission(Entrechip5);
Wire.send(B00000000);
Wire.send(B00000000);
Wire.endTransmission();
Wire.beginTransmission(Entrechip6);
Wire.send(B00000000);
Wire.send(B00000000);
Wire.endTransmission();
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
delay(3000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(3000); // wait for a second
}*
```
je vous envois le programme si vous pouviez m'aider . merci!