Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
Pantalla OLED
Les pantalles OLED estan formades per làmines de materials orgànics (derivats del carboni). Aquestes làmines, que están col·locades entre dos conductors metal·lics, són electrol·luminescents, emeten llum quan se’ls aplica electricitat.
La pantalla OLED que nosaltres utilitzem ...
128 px
64 px
És monocolor, de 0,96 polsades, amb resolució de 128X64 píxels.
Es comunica amb el microcontrolador mitjançant el protocol de comunicació I2C.
I2C és un bus de comunicació que transmet la informació de diversos dispositius a través de només dues línies: una per les dades (SDA) i l’altre pel senyal del rellotge (SDL). En el bus cada dispositiu té una adreça, que permet accedir a ell de manera individual.
Esquema de connexions
Els pins I2C de l'ESP32:
GPIO 22 (SCL, rellotge) i GPIO 21 (SDA, dades)
Pautes de programació
Les llibreries
Per treballar amb l’OLED cal instal·lar dues llibreries des del gestor de llibreries de l'IDE (Programa / Incluir libreria / Administrar Bibliotecas): Adafruit_SSD1306 i Adafruit-GFX-Library
A més, per treballar amb I2C cal inserir als programes la llibreria Wire, inclosa a l'IDE Arduino.
L'adreça I2C
Pel bus I2C l’ESP32 pot controlar fins a 112 dispositius de manera independent connectats als mateixos dos pins.
Per distinguir un dispositiu d’un altre cal especificar als programes la seva adreça I2C.
L’adreça de les pantalles OLED que utilitzem sol ser 0x3C o 0x3D, però és millor comprobar-la executant l’sketch i2c_scanner.
Aquest sketch escombra totes les possibles adreces del bus i si troba un dispositiu, mostra el resultat pel monitor serie.
Hola Mon ...
// llibreries:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// definició de la pantalla:
Adafruit_SSD1306 oled (128, 64, &Wire, -1);
void setup ( )
{
oled.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicialització de la pantalla (0x3C és la seva adreça I2C)
oled.clearDisplay ( ); // neteja la pantalla. Si no ho fem, es mostrarà el darrer desat a la memòria
oled.display ( );
oled.setTextSize (1); // tamany del text (1: alçada de 8 px - 2: alçada de 16 px)
oled.setTextColor (WHITE); // color del text
oled.setCursor (0,10); // coordenades de la posició inicial del cursor. Tingueu present el sistema de coordenades:
oled.println ("Hola Mon"); // text a mostrar
oled.print ("des d'ESP32");
oled.display ( ); // mostra el text amb les caracteristiques indicades
}
void loop ( )
{}
A l'objecte associat a la llibreria Adafruit_SSD1306 li podem posar el nom que vulguem (al meu l'he anomenat oled).
Paràmetres de la definició:
amplada de la pantalla (en pixels)
alçada de la pantalla (en pixels)
&Wire: indica ús del protocol de comunicació I2C.
-1: indica que l’OLED no té pin RESET.
(If your OLED display does have a RESET pin, it should be connected to a GPIO. In that case, you should pass the GPIO number as a parameter).
(0,0)
(128,64)
També podem ...
-
Mostrar text en moviment (Scroll)
-
Definir el tipus de font
-
Dibuixar formes: línies, rectangles, cercles, triangles
-
Mostrar imatges (Bitmap)
https://randomnerdtutorials.com/esp32-ssd1306-oled-display-arduino-ide/
https://programarfacil.com/blog/arduino-blog/ssd1306-pantalla-oled-con-arduino/