oled-i2c.ino

ESP32 (original, clase ESP32-WROOM-32) · Archivo : oled-i2c.ino · Lenguaje : Arduino · Uso : Afficher des mesures sur un écran OLED I2C 128×64

El OLED SSD1306 es el display I2C universal: dos hilos, sin librerías propietarias. El sketch escribe un framebuffer y lo envía de golpe con display(), la disciplina correcta contra el parpadeo.

Hardware necesario

Una placa ESP32 clásica (módulo ESP32-WROOM-32, doble núcleo Xtensa a 240 MHz, Wi-Fi + Bluetooth) tipo DevKitC / DOIT V1, alimentada por micro-USB. 1 módulo OLED SSD1306 128x64 I2C (4 pines).

Cableado

VCC 3,3 V, GND, SDA/SCL en los pines I2C por defecto del SoC (a menudo GPIO21/22; verifique su placa). Dirección 0x3C (a veces 0x78 → jumper).

Funcionamiento

Wire gestiona el bus; Adafruit_SSD1306 mantiene un framebuffer en RAM y lo copia de una en display(). begin() detecta la ausencia del chip y el monitor serie sirve de depuración. En el Arduino IDE, instale el paquete « esp32 » (Gestor de placas), elija « Dev Module », el puerto y Subir (mantenga BOOT si falla la detección). GPIO34-39 son solo entrada; evite GPIO6-11 y GPIO12.

Para ir más lejos

Añada las lecturas del DHT22 del sketch anterior, o haga desfilar un mensaje cuando el búfer supere 64 píxeles de alto.

oled-i2c.ino

// OLED SSD1306 128x64 en I2C (0x3C) — Adafruit SSD1306 + GFX.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define ADRESSE 0x3C
#define RAZ -1

Adafruit_SSD1306 oled(128, 64, &Wire, RAZ);

void setup() {
  Serial.begin(115200);
  Wire.begin();                       // SDA/SCL par defaut du SoC
  if (!oled.begin(SSD1306_SWITCHCAPVCC, ADRESSE)) {
    Serial.println("OLED absent : scanner 0x3C ?");
    for (;;);
  }
  oled.clearDisplay();
  oled.setTextColor(SSD1306_WHITE);
  oled.setTextSize(1);
}

void loop() {
  oled.clearDisplay();
  oled.setCursor(0, 0);
  oled.println(F("Carte "));
  oled.setTextSize(2);
  oled.printf("%lu ms\n", millis());
  oled.setTextSize(1);
  oled.printf("Heap : %u o\n", ESP.getFreeHeap());
  oled.printf("Rssi : %d dBm\n", WiFi.Rssi());
  oled.display();                     // envoie le framebuffer
  delay(250);
}

← Volver a la ficha