top of page

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.

https://ca.wikipedia.org/wiki/Díode_orgànic_emissor_de_llum

La pantalla OLED que nosaltres utilitzem ...

OLED1.png

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

OLED3.png

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 ...

OLED4.png

// 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)

OLED5.png

(128,64)

OLED6.png

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/

bottom of page