Conectar mas de una pantalla oled i2c en arduino

en esta ocasión, traigo la manera mas sencilla y eficaz de conectar dos pantallas oled a Arduino, consiste en hacer una secuencia de la rutina de configuración de la pantalla oled, solo que al final se cambia su dirección i2c por la que se desea leer a continuación. espero haber sido de utilidad.


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

// Define las direcciones I2C de las pantallas
#define SCREEN_ADDRESS_1 0x3C
#define SCREEN_ADDRESS_2 0x3D

// Define el ancho y alto de las pantallas
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
int contador=0;
float contador2=0.0;
// Crea objetos para cada pantalla
//Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  Serial.begin(115200);
  Wire.begin();
}

void loop() 
{ 
if(contador<135){contador++;}
if(contador2<135.0){contador2=contador2+0.01;}
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS_1)) {
    for(;;);
  }
  delay(500);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print(F("Num:"));
  display.print(contador);
  display.display();

   if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS_2)) {
   
    for(;;);
  }
  delay(500);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print(F("Num="));
  display.print(contador2);
  display.display();
}

con este método se conectan sin necesidad de usar otro dispositivo, de igual manera no requiere realizar otra distribución de pines i2c por software para implantarla, simplemente se conectan ambas pantallas al i2c del arduino y se ejecuta el programa.

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @antonio1983.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

No estoy de acuerdo con tu idea, creo que es ineficiente.

Usar display.begin() en cada loop resetea las pantallas, consume tiempo (creo haber leído que es algo de 100 ms) y provoca parpadeos. Efecto molesto.
Debe usarse 1 sola vez en el setup().

Entonces generalmente se usan dos instancias no una.
No hay por qué reinventar la rueda.
Creas Adafruit_SSD1306 display1() y display2().
Así no cambias la dirección “a mano”, cada objeto recuerda su propia dirección.

Evita siempre que puedas los delay(500) si quieres fluidez y usa millis() para no bloquear el microcontrolador.