Bug de compilation

Bonjour,
Dans mon programme de commande de 8 leds par 8 switches via une liaison I2c et 2 pcf8574, il y un bug lors de la compilation lorsque l'instruction "Wire.begin();" est suivie de "Serial.begin(9600);" pour la conexion à l'écran du PC.
La compilation est bonne si je supprime "Serial.begin(9600)" du contrôle écran.
La compilation est effectuée hors connections.
Ou peut-être le problème?
Merci d'avance

Un bug lors de la compilation ??
Impossible

Mais un message d’erreur à la compilation, oui peut-être.

Si tu n’indiques pas quel est le message d’erreur exact, comment penses-tu que nous puissions t’aider?

Désolé mais je n’ai pas de longue vue pour aller lire l’écran par dessus ton épaule :smiling_imp:

  • ton code ça peut aider

Il doit effectivement y avoir un problème dans le code puisque le code suivant fonctionne quelque soit la position du “Wire.begin();”.

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
}

void loop() {
}

lol oui, je t’avoue qu’il ne me serait pas venu à l’idée d’aller tester ça pour m’en assurer.

Tu ne serais comme Saint Thomas, par hasard?

Voici mon programme PCF8574

//Essai de liaison I2c avec PCF8574(sorties) et 8574A(entrees)

#include <Wire.h>
byte Cde = 0;

void setup()
{
// Wire.begin(); //init I2c, Arduino maître

Serial.begin(9600); // init liaison PC

}

void loop()
{

Wire.beginTransmission(0x40); //Adresse du PCF8574 est B0100000
Wire.write (Cde); //I/O en Sorties
Wire.endTransmission();

Cde++;
if (Cde == 64);
{
Cde = 0;
}
delay(500);

// Wire.beginTransmission(0x71); //Adresse du PCF8574A est B0100001
// Wire.read(Cde); //I/O en Entrees
// Wire.endTransmission()
delay(500);
}

Commentaire : Id.exe a rencontré un problème…
signature de l’erreur: AppName Id.exe AppVer:0.0.0.0 ModName: Id.exe
ModVer: 0.0.0.0 Offset: 0008293b

Ai-je commis une erreur et ou?
Merci

  1. l'instruction Wire.begin() est précédé de // donc ça devient un commentaire et est donc ignoré par le compilo.

  2. tu inities la voie série avec Serial.begin(9600) mais tu ne t'en sers à aucun moment, donc pas utile avec ce code.

  3. toujours mettre un code entre balise [code][/code]

Merci à tous.
Il semblerai que le"bug" vient de l’instruction wire.read avec la variable Cde mal placée.
La compilation de mon programme modifié si dessous, est OK. Je vais pouvoir tester d’abord l’allumage des leds, puis tester les liaisons entrées sorties

//Essai de liaison I2c avec PCF8574(sorties) et 8574A(entrees)

#include <Wire.h>
byte Cde = 0;

void setup()
{
Wire.begin(); //init I2c, Arduino maître

Serial.begin(9600); // init liaison PC

Num();
}

void loop()
{
//Commande par switches

Wire.beginTransmission(0x71); //Adresse du PCF8574A est B01110001
Cde = Wire.read(); //IO en Entrees
Wire.endTransmission();
Serial.println(Cde);
delay(500);
Wire.beginTransmission(0x40); //Adresse du PCF8574 est B01000000
Wire.write(Cde); //IO en sorties
Wire.endTransmission();
delay(5000);
}

//Contole del’allumage des leds
void Num(){
for(i=0; i<=64; i++){
Cde++;
}

Serial.print(Cde);
Wire.beginTransmission(0x40); //Adresse du PCF8574 est B01000000
Wire.write(Cde); //IO en sorties
Wire.endTransmission();
delay(500);

}
Merci encore

Jambe:
3) toujours mettre un code entre balise [code][/code]

S'il te plaît, dans un soucis de lisibilité