TCA9548 et afficheurs OLED SSD1306

Bonjour !

Est-il possible de multiplexer le bus I2C, à l'aide d'un TCA9548, afin de piloter indépendamment plusieurs afficheurs OLED (SSD1306) ayant la même adresse ?

Le cas échéant, peut-on m'aiguiller sur la mise en oeuvre requise ?

Merci d'avance !

ata

Bonjour, pas d'expérience, mais cela doit être fait pour comme l'afficheur à 2 adresses et le multiplexeur 8 voies, tu peux commander 16 afficheurs avec un multiplexeur par contre l'arduino risque d'être surmené

Merci pour ta réponse. Effectivement, je me suis donné intuitivement la même réponse que toi, mais je n’ai néanmoins par réussi à faire fonctionner l’ensemble.

Est-il nécessaire de faire une déclaration particulière “d’objets”, par exemple ?

Pour le moment, j’ai simplement tenté d’envoyer une instruction de sélection du port à utiliser, avec une fonction “tcaselect”, comme suit :

 #define TCAADDR 0x70

void tcaselect(uint8_t i) {
  if (i > 7) return;
 
  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i);
  Wire.endTransmission();  
}

Puis :

 void setup()   {   
  char mot[]="Hello !";    
  printscreen1(mot);         
}

void printscreen1(char * c)   {  
  tcaselect(1);              
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(15,25);
  display.println(c);
  display.display();
  delay(2000);
  display.clearDisplay();
}

Voilà, évidemment ça ne fonctionne pas, j’imagine que ça serait trop simple de cette façon ! :slight_smile:
J’ai également tenté de changer l’adresse du display, en mettant celle du multiplexeur à la place (0x70 à la place de 0x3C, dans le code ci-dessus, ainsi que dans le fichier .h de la librairie SSD1306), mais ça ne fonctionne pas mieux…