ESP32 Basic Starter Kit for dummys: Proyecto - 12 ESP32_OLED_Display

Proviene deProyecto-11 


Para este proyecto se utiliza una pantalla muy común en los proyectos de Arduino/ESP32 que es la 0.96" (Tamaño en pulgadas de la diagonal) SSD1306 OLED display monocolor que tiene una resolución de  128×64 


Para que funcione la OLED se requiere que estén instaladas las siguientes librerias en nuestro entorno de desarrollo (Arduino IDE), como por ejemplo:
  • Adafruit_SSD1306 y sus librerias dependientes Adafruit_GFX y Adafruit_BUsio

El fuente del programa  lo podemos encontrar en 

https://github.com/LontenTechnology/ESP32_Basic_Starter_Kit_LTARK_8/tree/main/Code/Project_12_ESP32_OLED_Display 
https://randomnerdtutorials.com/esp32-ssd1306-oled-display-arduino-ide/

//Librerias para la pantalla 
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#include <Wire.h>
// Tamaño de la pantalla
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define SCREEN_WIDTH 128 // OLED display width, in pixels
//Inicialización de la pantalla
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
  //Incialización de la salida serie
  Serial.begin(115200);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) 
  { 
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 30);
  // Display static text
  display.println("LONTEN");
  display.display(); 
  delay(100);
}
void loop() {
  // Scroll in various directions, pausing in-between:
  display.startscrollright(0x00, 0x0F);
  delay(7000);
  display.stopscroll();
  delay(1000);
  display.startscrollleft(0x00, 0x0F);
  delay(7000);
  display.stopscroll();
  delay(1000);
}

Mas detalles sobre la conexión en general de una OLED a una ESP32 los hemos visto en "ESP32 LoRa for dummys - Pantalla OLED"


CONSIDERACIONES SOBRE PANTALLAS OLED

La pantalla OLED SSD1306 externa puede conectarse con SPI o con I2C (SDA, SCL, +5V y GND), si ya viene incluida en la placa de desarrollo se evita un problema.

Los pines se definen de forma automática a través de la libreria wire.h:
  • arduino UNO:       A4(SDA), A5(SCL)
  • arduino MEGA 2560: 20(SDA), 21(SCL)
  • arduino LEONARDO:   2(SDA),  3(SCL)
  • ESP32-WROOM-32D:   21(SDA), 22(SCL)
La dirección de memoria depende de la pantalla:
  • 0x3D for 128x64 (ojo las pantallas que he comprado en Aliexpress tienen 0x3C)
  • 0x3C for 128x32
Mas información

Referencia 

Prohibida la reproducción parcial o total de este artículo sin permiso previo del autor

Comentarios

Entradas populares de este blog

SDR - Software Defined Radio - IIIb: Receptores RSP o MSI (MSI3001: MSI2500 + MSI001)

ESP32 LoRa for dummys - Inicio

Antena exterior logarítmica UHF/VHF : Metronic 425010 - Ia Características