La pantalla OLED s'ha convertit en una opció popular per integrar en projectes d'Arduino, principalment perquè és compacta, té un consum energètic baix i permet una visibilitat excepcional fins i tot en entorns amb molta llum. A més, gràcies a la fàcil connexió, el seu ús està a l'abast de qualsevol aficionat a l'electrònica, independentment de la seva experiència. En aquest article, analitzarem en profunditat com connectar i programar una pantalla OLED de 0.96 polzades amb Arduino, detallant tant els aspectes tècnics com oferint exemples de codi pràctics.
Si mai no has treballat amb una pantalla OLED, hi ha alguns punts clau que has de conèixer abans de començar el teu projecte. Les OLED (Diode Orgànic Emissor de Llum per les sigles en anglès) presenten diferències fonamentals amb altres tipus de pantalles com les LCD. Per exemple, l'OLED no requereix retroil·luminació, cosa que redueix significativament el consum d'energia. En pantalles tan petites com la de 0.96 polzades, això pot ser essencial si el projecte funciona amb una bateria. Ara, aprofundirem en les seves característiques.
Què és una pantalla OLED?
Una pantalla OLED és un tipus de display que fa servir un compost orgànic que emet llum quan s'aplica corrent elèctric. Això les fa ideals per a molts projectes d'electrònica, ja que la seva tecnologia permet que cada píxel s'il·lumini per si mateix, cosa que a més millora la visibilitat a exteriors. La majoria de pantalles OLED que es comercialitzen per a Arduino tenen un controlador SSD1306, que permet gestionar l'enviament de senyals a la pantalla. De fet, el SSD1306 és un dels més comuns en projectes d'Arduino, i ho veurem en els exemples més endavant.
Un dels avantatges principals de les pantalles OLED n'és el baix consum. De mitjana, una petita pantalla de 0.96″ pot consumir al voltant de 20mA. Per què és això important? Bé, si utilitzeu una bateria per alimentar el vostre projecte d'Arduino, reduir el consum d'energia sempre és un plus significatiu. A més, la seva resolució de 128×64 píxels pot representar imatges amb una nitidesa força bona tenint en compte la seva mida.
En contra, un dels problemes que es podria presentar amb aquest tipus de pantalles és que la seva mida és realment petita. Encara que ofereixen bona visibilitat, en alguns projectes on cal mostrar molta informació, aquesta mida pot ser insuficient.
Connexió de la pantalla OLED a Arduino
La pantalla OLED es connecta fàcilment a la placa d'Arduino usant un bus I2C o SPI, depenent del model. Per a aquest tutorial, ens enfocarem en la connexió mitjançant I2C, ja que és una de les més comunes i senzilles.
Has de connectar els pins de la pantalla OLED amb els pins corresponents del teu Arduino de la següent manera:
- GND (Terra) amb el pin GND d'Arduino
- VCC amb el pin de 5V o 3.3V d'Arduino
- SDA al pin A4 de l'Arduino
- SCL al pin A5 de l'Arduino
Com pots veure, la connexió és força senzilla: només necessites quatre cables. Després, ja sigui que facis servir el bus SPI o l'I2C, el procés de connexió és similar, encara que els pins varien depenent del tipus de comunicació que triïs.
Exemple de codi per a la pantalla OLED
Per fer funcionar la pantalla OLED amb Arduino, una de les millors opcions és recórrer a les llibreries desenvolupades per Adafruit. El controlador SSD1306, com esmentem abans, és compatible amb la llibreria Adafruit SSD1306, que ens facilita la vida en crear gràfics i textos a la pantalla.
A continuació et deixo un codi bàsic que et permetrà mostrar text a una pantalla OLED amb connexió I2C:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println(F("Hola, Mundo!"));
display.display();
}
void loop() {}
Aquest codi inicialitza la pantalla, neteja el display i després escriu Hola, Món! a la pantalla OLED. Podeu utilitzar diverses funcions de la llibreria Adafruit GFX per crear gràfics, dibuixar línies, cercles o mostrar imatges a la pantalla.
Altres exemples útils per a la pantalla OLED
L'exemple anterior és només una introducció bàsica, però pots fer molt més amb les pantalles OLED. Per exemple, pots dibuixar diferents formes geomètriques, fer animacions o fins i tot crear petits gràfics.
Una de les característiques més interessants que ofereixen les llibreries d'Adafruit és la possibilitat de dibuixar múltiples píxels, cosa que implica que pots crear animacions amb desplaçaments. .
Un altre dels usos que pots donar a aquestes pantalles és mostrar dades en temps real en projectes interactius, com ara un sensor de temperatura o d'humitat. La pantalla es pot actualitzar conforme s'obtenen noves lectures del sensor, fent molt més visual qualsevol projecte.
Problemes comuns en utilitzar pantalles OLED
Un dels problemes més freqüents en utilitzar pantalles OLED amb Arduino és la manca de memòria. Les llibreries d'Adafruit, encara que són molt completes, poden consumir una quantitat considerable de memòria al processador de l'Arduino, especialment en versions com el Arduino Uno. Si tens problemes d'espai, pots intentar optimitzar el teu codi, eliminar funcions que no necessites o fins i tot fer ús d'una placa amb més capacitat, com ara un Arduino Mega.
Un altre problema comú és la configuració inicial de la connexió I2C. Si no utilitzeu els pins SDA i SCL correctes, és probable que la pantalla no funcioni o mostri errors de connexió. Assegureu-vos de fer servir els pins correctes segons el model d'Arduino.
Finalment, alguns usuaris també reporten una pantalla en blanc o que no respon a cap ordre. Això es pot resoldre assegurant-se que el voltatge d'alimentació sigui el correcte (3.3V o 5V segons el model de pantalla) i que els cables estiguin correctament connectats.