Bonjour,
La famille ESP ne disposant pas d'interface I2C hardware, je souhaitais utiliser 2 bus I2C soft. Pour mon test, j'ai fait un petit programme d'évaluation mais il ne fonctionne pas comme prévu.
Le seul bus fonctionnel est le Wire2.
#include <Arduino.h>
#include <Wire.h>
#include <SparkFun_PCA9536_Arduino_Library.h>
#define SDA1 5
#define SCL1 4
#define SDA2 2
#define SCL2 14
#define VERT 0
#define ORANGE 1
#define ROUGE 2
#define ATTENTE 500
PCA9536 io;
PCA9536 io2;
TwoWire Wire2;
void setup() {
Serial.begin(115200);
Serial.println("\n\nPCA9536 example");
Wire.begin(SDA1, SCL1);
Wire2.begin(SDA2, SCL2);
// Initialize the PCA9536 with a begin function
if (io.begin() == false){
Serial.println("PCA9536 not detected. Please check wiring. Freezing...");
while (1)
;
}
if (io2.begin() == false){
Serial.println("PCA9536 not detected. Please check wiring. Freezing...");
while (1)
;
}
for (int i = 0; i < 4; i++){
// pinMode can be used to set an I/O as OUTPUT or INPUT
io.pinMode(i, OUTPUT);
io2.pinMode(i, OUTPUT);
}
for (int i = 0; i < 4; i++){
//pinMode can be used to set an I/O as OUTPUT or INPUT
io.pinMode(i, OUTPUT);
io2.pinMode(i, OUTPUT);
}
for (int i = 0; i < 4; i++){
io.write(i, LOW);
io2.write(i, LOW);
}
for (int i = 0; i < 4; i++){
io.write(i, LOW);
io2.write(i, LOW);
}
}
void loop() {
io2.digitalWrite(VERT, HIGH);
delay(ATTENTE);
io2.write(VERT, LOW);
delay(ATTENTE);
io.digitalWrite(ORANGE, HIGH);
delay(ATTENTE);
io.write(ORANGE, LOW);
delay(ATTENTE);
io.digitalWrite(ROUGE, HIGH);
delay(ATTENTE);
io.write(ROUGE, LOW);
delay(ATTENTE);
}
J'ai du loupé quelque chose. Peut être une piste ?