Notifications
Clear all

I2C Multiplexer and three 128x64 Displays

1 Posts
1 Users
0 Likes
864 Views
(@fabian1011)
Member
Joined: 4 years ago
Posts: 1
Topic starter  

Hey,

I want to adress three SSD1306 Displays with the size 128x64 pixels. Im using an TCA9548A I2C multiplexer for that as shown in the tutorial "Solving I2C Adress Conflicts - TCA9548 Multiplexer". I want to use the Adafruit_GFX.h and Adafruit_SSD1306.h librarys for this.
I got them to work, but cant change the Display height from 32 to 64 pixels. Is there a command for that?
Here is my code

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64 //the two lines have no effect so far (only when using a single display)

#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //the two lines have no effect so far (only when using a single display)
Adafruit_SSD1306 display1(OLED_RESET);
Adafruit_SSD1306 display2(OLED_RESET);
Adafruit_SSD1306 display3(OLED_RESET);

void TCA9548A(uint8_t bus) {
Wire.beginTransmission(0x70);
Wire.write(1 << bus);
Wire.endTransmission();
}

void displayEins() {
display1.clearDisplay();
display1.setTextColor(WHITE);
display1.setTextSize(1);

display1.drawLine(0,32,128,32,WHITE);
display1.drawLine(64,0,64,64,WHITE);

display1.setCursor(0,0);
display1.print("Helligkeit");
}

void displayZwei() {
display2.clearDisplay();
display2.setTextColor(WHITE);
display2.setTextSize(1);

display2.drawLine(0,32,128,32,WHITE);
display2.drawLine(64,0,64,64,WHITE);

display2.setCursor(0,0);
display2.print("Kontrast");
}

void displayDrei() {
display3.clearDisplay();
display3.setTextColor(WHITE);
display3.setTextSize(1);

display3.drawLine(0,32,128,32,WHITE);
display3.drawLine(64,0,64,64,WHITE);

display3.setCursor(0,0);
display3.print("Weiss");
}

void setup() {
Wire.begin();

TCA9548A(1);
display1.begin(SSD1306_SWITCHCAPVCC,0x3C);

TCA9548A(2);
display2.begin(SSD1306_SWITCHCAPVCC,0x3C);

TCA9548A(3);
display3.begin(SSD1306_SWITCHCAPVCC,0x3C);
}

void loop() {
TCA9548A(1);
displayEins();
display1.display();

TCA9548A(2);
displayZwei();
display2.display();

TCA9548A(3);
displayDrei();
display3.display();
}

Thanks for your help.


   
Quote