Bonjour à tous
Alors pardonnez moi si mon post n'est pas totalement complet mais c'est la 1ère fois que je viens vous voir pour demander un peu d'aide
Je suis un débutant et je m'inspire de ci de là des différents bout de code.
Dans mn projet je souhaite afficher des informations sur un écran OLED 1.3 SH1106 et des information plus précise et en plus grand sur 2 écrans OLED SSD1306.
Pour cela j'utilise une carte TCA9548A multiplexer I2C pour mes écrans.
Avec Espeasy en flash cela fonctionne comme il faut sur mon Lolin wemos D1 mini mais je veux gérer la taille de l'affichage et donc je passe par du code via arduino.
le code que j'utilise est celui ci :
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//#include <Adafruit_SH110X.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Adafruit_SSD1306 display3(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//Adafruit_SSD1306 display4(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Select I2C BUS
void TCA9548A(uint8_t bus){
Wire.beginTransmission(0x70); // TCA9548A address
Wire.write(1 << bus); // send byte to select bus
Wire.endTransmission();
Serial.print(bus);
}
void setup() {
Serial.begin(115200);
// Start I2C communication with the Multiplexer
Wire.begin();
// Init OLED display on bus number 1 (display 1)
TCA9548A(1);
if(!display1.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display1.clearDisplay();
// Init OLED display on bus number 2
TCA9548A(2);
if(!display2.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display2.clearDisplay();
// Init OLED display on bus number 3
TCA9548A(3);
if(!display3.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display3.clearDisplay();
/* // Init OLED display on bus number 4
TCA9548A(4);
if(!display4.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display4.clearDisplay();*/
// Write to OLED on bus number 1
TCA9548A(1);
display1.setTextSize(8);
display1.setTextColor(WHITE);
display1.setCursor(45, 10);
// Display static text
display1.println("1");
display1.display();
// Write to OLED on bus number 2
TCA9548A(2);
display2.setTextSize(8);
display2.setTextColor(WHITE);
display2.setCursor(45, 10);
// Display static text
display2.println("2");
display2.display();
// Write to OLED on bus number 3
TCA9548A(3);
display3.setTextSize(8);
display3.setTextColor(WHITE);
display3.setCursor(45, 10);
// Display static text
display3.println("3");
display3.display();
/* // Write to OLED on bus number 4
TCA9548A(4);
display4.setTextSize(8);
display4.setTextColor(WHITE);
display4.setCursor(45, 10);
// Display static text
display4.println("4");
display4.display();*/
}
void loop() {
}
Mais avec ce code j'ai ce résultat :
J'ai du faire une erreur quelque part !
Est-ce que je peux mélanger les 2 types d'écran avec le multiplexeur I2C ?
Merci de votre aide sur le sujet je tourne en rond