Hi there,
I need some help with my Arduino code - I'd like to use 2 TCA9548A Multiplexers to run 10 OLED screens and 2 LCDs.
I have 1 Multiplexer working with 5 OLED screens on it and 1 LCD but I don't know how to connect the second Multiplexer to run the same 5 OLED and 1 LCD.
I have the second Multiplexer with A0 connected to VIN so it has the address 0x71 but it's not working...
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal_I2C.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET 4
#define I2C_ADDR 0x27
LiquidCrystal_I2C lcd1(I2C_ADDR, 20, 4);
LiquidCrystal_I2C lcd2(I2C_ADDR, 20, 4);
void displayLCD(int channel, LiquidCrystal_I2C &LCD, long value);
Adafruit_SSD1306 display1(OLED_RESET);
Adafruit_SSD1306 display2(OLED_RESET);
Adafruit_SSD1306 display3(OLED_RESET);
Adafruit_SSD1306 display4(OLED_RESET);
Adafruit_SSD1306 display5(OLED_RESET);
Adafruit_SSD1306 display6(OLED_RESET);
Adafruit_SSD1306 display7(OLED_RESET);
Adafruit_SSD1306 display8(OLED_RESET);
Adafruit_SSD1306 display9(OLED_RESET);
Adafruit_SSD1306 display10(OLED_RESET);
// 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.println(bus);
}
void TCA9548A_2(uint8_t bus2){
Wire.beginTransmission(0x71); // TCA9548A address
Wire.write(1 << bus2); // send byte to select bus
Wire.endTransmission();
Serial.println(bus2);
}
void setup() {
Serial.begin(115200);
// Start I2C communication with the Multiplexer
Wire.begin();
// Init OLED display on bus number 2 (display 1)
TCA9548A(2);
if(!display1.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display1.clearDisplay();
// Init OLED display on bus number 3
TCA9548A(3);
if(!display2.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display2.clearDisplay();
// Init OLED display on bus number 4
TCA9548A(4);
if(!display3.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display3.clearDisplay();
// Init OLED display on bus number 5
TCA9548A(5);
if(!display4.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display4.clearDisplay();
TCA9548A(6);
if(!display5.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display5.clearDisplay();
TCA9548A_2(2);
if(!display6.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display6.clearDisplay();
// Init OLED display on bus number 3
TCA9548A_2(3);
if(!display7.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display7.clearDisplay();
// Init OLED display on bus number 4
TCA9548A_2(4);
if(!display8.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display8.clearDisplay();
// Init OLED display on bus number 5
TCA9548A_2(5);
if(!display9.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display9.clearDisplay();
TCA9548A_2(6);
if(!display10.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Clear the buffer
display10.clearDisplay();
// Init LCDs
TCA9548A(7);
lcd1.begin();
lcd1.backlight();
lcd1.clear();
TCA9548A(1);
lcd2.begin();
lcd2.backlight();
lcd2.clear();
}
void loop() {
// Write to OLED on bus number 2
TCA9548A(2);
display1.setTextSize(1);
display1.setTextColor(WHITE);
display1.setCursor(0, 12);
display1.println("LOVE");
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(78, 8);
display1.print("89");
display1.setCursor(116,8);
display1.println("%");
display1.display();
// Write to OLED on bus number 3
TCA9548A(3);
display2.setTextSize(1);
display2.setTextColor(WHITE);
display2.setCursor(0, 12);
display2.println("HAPPINESS");
display2.setTextSize(2);
display2.setTextColor(WHITE);
display2.setCursor(78, 8);
display2.print("95");
display2.setCursor(116,8);
display2.println("%");
display2.display();
// Write to OLED on bus number 4
TCA9548A(4);
display3.setTextSize(1);
display3.setTextColor(WHITE);
display3.setCursor(0, 12);
display3.println("SADNESS");
display3.setTextSize(2);
display3.setTextColor(WHITE);
display3.setCursor(78, 8);
display3.print("12");
display3.setCursor(116 ,8);
display3.println("%");
display3.display();
// Write to OLED on bus number 5
TCA9548A(5);
display4.setTextSize(1);
display4.setTextColor(WHITE);
display4.setCursor(0, 12);
display4.println("DISAPPOINTMENT");
display4.setTextSize(2);
display4.setTextColor(WHITE);
display4.setCursor(89, 8);
display4.print("11");
display4.setCursor(116 ,8);
display4.println("%");
display4.display();
// Write to OLED on bus number 5
TCA9548A(6);
display5.setTextSize(1);
display5.setTextColor(WHITE);
display5.setCursor(0, 12);
display5.println("ANGER");
display5.setTextSize(2);
display5.setTextColor(WHITE);
display5.setCursor(78, 8);
display5.print("100");
display5.setCursor(116,8);
display5.println("%");
display5.display();
TCA9548A(2);
display6.setTextSize(1);
display6.setTextColor(WHITE);
display6.setCursor(0, 12);
display6.println("LOVE");
display6.setTextSize(2);
display6.setTextColor(WHITE);
display6.setCursor(78, 8);
display6.print("89");
display6.setCursor(116,8);
display6.println("%");
display6.display();
// Write to OLED on bus number 3
TCA9548A(3);
display7.setTextSize(1);
display7.setTextColor(WHITE);
display7.setCursor(0, 12);
display7.println("HAPPINESS");
display7.setTextSize(2);
display7.setTextColor(WHITE);
display7.setCursor(78, 8);
display7.print("95");
display7.setCursor(116,8);
display7.println("%");
display7.display();
// Write to OLED on bus number 4
TCA9548A(4);
display8.setTextSize(1);
display8.setTextColor(WHITE);
display8.setCursor(0, 12);
display8.println("SADNESS");
display8.setTextSize(2);
display8.setTextColor(WHITE);
display8.setCursor(78, 8);
display8.print("12");
display8.setCursor(116 ,8);
display8.println("%");
display8.display();
// Write to OLED on bus number 5
TCA9548A(5);
display9.setTextSize(1);
display9.setTextColor(WHITE);
display9.setCursor(0, 12);
display9.println("DISAPPOINTMENT");
display9.setTextSize(2);
display9.setTextColor(WHITE);
display9.setCursor(89, 8);
display9.print("11");
display9.setCursor(116 ,8);
display9.println("%");
display9.display();
// Write to OLED on bus number 5
TCA9548A(6);
display10.setTextSize(1);
display10.setTextColor(WHITE);
display10.setCursor(0, 12);
display10.println("ANGER");
display10.setTextSize(2);
display10.setTextColor(WHITE);
display10.setCursor(78, 8);
display10.print("100");
display10.setCursor(116,8);
display10.println("%");
display10.display();
delay(100);
}
I was wondering if I could have some help with this?
Thanks so much,
Tigris