#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Define display dimensions and addresses
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define OLED1_ADDR 0x3C
#define OLED2_ADDR 0x3C
TwoWire I2Cone = TwoWire(0);
TwoWire I2Ctwo = TwoWire(1);
Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &I2Cone, OLED_RESET);
Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &I2Ctwo, OLED_RESET);
void setup() {
// Initialize I2C buses
I2Cone.begin(20, 21); // SDA, SCL for display 1
I2Ctwo.begin(17, 16); // SDA, SCL for display 2
// Initialize display 1
if (!display1.begin(SSD1306_SWITCHCAPVCC, OLED1_ADDR)) {
Serial.println(F("SSD1306 allocation failed for display 1"));
for (;;);
}
display1.display();
delay(2000);
display1.clearDisplay();
// Initialize display 2
if (!display2.begin(SSD1306_SWITCHCAPVCC, OLED2_ADDR)) {
Serial.println(F("SSD1306 allocation failed for display 2"));
for (;;);
}
display2.display();
delay(2000);
display2.clearDisplay();
}
void loop() {
// Draw something on display 1
display1.clearDisplay();
display1.setTextSize(1);
display1.setTextColor(SSD1306_WHITE);
display1.setCursor(0,0);
display1.print("Hello, Display 1!");
display1.display();
// Draw something on display 2
display2.clearDisplay();
display2.setTextSize(1);
display2.setTextColor(SSD1306_WHITE);
display2.setCursor(0,0);
display2.print("Hello, Display 2!");
display2.display();
delay(2000);
}