- Maquinari necessari:
- Informació sobre les pantalles OLED:
- Maquinari i connexions:
- Programació de la pantalla OLED SSD1306 per a Arduino:
La majoria de nosaltres estaria familiaritzat amb la pantalla LCD de matriu de 16 × 2 que s’utilitza en la majoria dels projectes per mostrar informació a l’usuari. Però aquestes pantalles LCD tenen moltes limitacions en el que poden fer. En aquest tutorial aprendrem sobre pantalles OLED i com utilitzar-les Arduino. Hi ha un munt de tipus de pantalles OLED disponibles al mercat i hi ha moltes maneres de fer-les funcionar. En aquest tutorial analitzarem les seves classificacions i també quines seran les més adequades per al vostre projecte.
Maquinari necessari:
- Mòdul de pantalla OLED de 7 pines 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Taula de pa
- Connexió de cables
- Ordinador / ordinador portàtil
Informació sobre les pantalles OLED:
El terme OLED significa " díode emissor de llum orgànica" que utilitza la mateixa tecnologia que s'utilitza a la majoria dels nostres televisors, però té menys píxels en comparació amb ells. És molt divertit tenir aquests mòduls de visualització d’aspecte interessant per a la interfície amb l’Arduino, ja que farà que els nostres projectes siguin genials. Aquí hem tractat un article complet sobre pantalles OLED i els seus tipus.


Utilitzem una pantalla OLED SSD1306 de 0,96 polzades monocroma. La raó per escollir aquesta pantalla és que pot funcionar en tres protocols de comunicacions diferents, com ara el mode SPI 3 Wire, el mode SPI de quatre fils i el mode IIC. Aquest tutorial explicarà com utilitzar el mòdul en mode de 4 fils SPI, ja que és el mode de comunicació més ràpid i el predeterminat.
Els pins i les seves funcions s’expliquen a la taula següent.
|
Número de pin |
Nom del pin |
Altres noms |
Ús |
|
1 |
Gnd |
Terra |
Pas de terra del mòdul |
|
2 |
Vdd |
Vcc, 5V |
Pin d'alimentació (tolerable de 3-5 V) |
|
3 |
SCK |
D0, SCL, CLK |
Actua com el passador del rellotge. S’utilitza tant per a I2C com per a SPI |
|
4 |
SDA |
D1, MOSI |
Pin de dades del mòdul. S’utilitza tant per a IIC com per a SPI |
|
5 |
RES |
RST, RESET |
Restableix el mòdul (útil durant SPI) |
|
6 |
DC |
A0 |
Pin de comandament de dades. S'utilitza per al protocol SPI |
|
7 |
CS |
Selecció de xip |
Útil quan s'utilitza més d'un mòdul sota el protocol SPI |
En aquest tutorial simplement farem servir el mòdul en mode SPI de 4 fils, deixarem la resta per a algun altre tutorial.
La comunitat Arduino ja ens ha donat moltes biblioteques que es poden utilitzar directament per fer-ho molt més senzill. Vaig provar algunes biblioteques i vaig trobar que la biblioteca Adafruit_SSD1306 era molt fàcil d'utilitzar i tenia un grapat d'opcions gràfiques, de manera que farem servir el mateix en aquest tutorial. Però, si el vostre projecte té una limitació de memòria / velocitat, proveu d'utilitzar la biblioteca U8g, ja que funciona més ràpidament i ocupa menys memòria del programa.
Maquinari i connexions:
El diagrama de circuits per a la interfície OLED SSD1306 amb Arduino és realment senzill i es mostra a continuació

Simplement hem d’establir una comunicació SPI entre el mòdul OLED i Arduino. Com que l'OLED funciona amb 3V-5V i consumeix molt poca energia, no necessita una font d'alimentació externa. Simplement podeu fer servir cables per establir la connexió o fer servir una placa de configuració com he fet servir perquè sigui fàcil d’experimentar. La connexió també s’enumera al conte següent
|
S.No |
Pin Name al mòdul OLED |
Pin Nom a Arduino |
|
1 |
Gnd, terra |
Terra |
|
2 |
Vdd, Vcc, 5V |
5V |
|
3 |
SCK, D0, SCL, CLK |
10 |
|
4 |
SDA, D1, MOSI |
9 |
|
5 |
RES, RST, RESET |
13 |
|
6 |
DC, A0 |
11 |
|
7 |
CS, Xip Select |
12 |
Nota: no podreu visualitzar cap llum de fons / resplendor al mòdul OLED només en alimentar-lo. Cal programar-lo correctament per notar qualsevol canvi a la pantalla OLED.
Programació de la pantalla OLED SSD1306 per a Arduino:
Un cop preparades les connexions, podeu començar a programar l'Arduino. Com s'ha dit anteriorment, utilitzarem la biblioteca Adafruit i la biblioteca GFX per treballar amb aquest mòdul OLED. Seguiu els passos per provar d'executar la pantalla OLED.
Pas 1: baixeu la biblioteca Adafruit i la biblioteca GFX de Github mitjançant l'enllaç següent
- Biblioteca Adafruit
- Biblioteca de gràfics GFX
Pas 2: hauríeu de descarregar dos fitxers Zip. Ara afegiu-los al vostre Arduino seguint
Esbós-> Inclou biblioteca -> Afegeix una biblioteca Zip com es mostra a continuació. A continuació, seleccioneu la biblioteca que acabem de descarregar. Només podeu seleccionar una biblioteca a la vegada, de manera que heu de repetir aquest pas de nou.

Pas 3: Inicieu l'exemple de programa seleccionant Fitxer-> Exemples-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino tal com es mostra a la imatge següent.

Pas 4: dins del programa d'exemple a la part superior de la línia 64, afegiu la línia "#define SSD1306_LCDHEIGHT 64" tal com es mostra a la imatge següent.

Pas 5: ara carregueu el programa i hauríeu de veure que la pantalla OLED s'activa amb el codi d'exemple per defecte d'Adafruit, tal com es mostra a la imatge següent. El vídeo de treball complet es presenta al final.
Aquest programa d'exemple mostra tots els gràfics possibles que es podrien mostrar a la pantalla OLED. Aquest codi hauria de ser suficient per crear mapes de bits, dibuixar línies / cercles / rectangles, jugar amb píxels, mostrar caràcters i cadenes amb diferents tipus de lletra i mida, etc.
Si voleu entendre millor la biblioteca i les seves funcions, podeu llegir-ne més. Cada junk del codi es divideix i s’explica amb l’ajut de línies de comentaris. Es dóna un codi complet al final d’aquest article
Visualització i neteja de la pantalla:
Escriure a la pantalla OLED és com escriure a una pissarra negra, hem d’escriure els valors i després netejar-los abans que es puguin sobreescriure. Les ordres següents s’utilitzen per escriure i esborrar la pantalla
display.display (); // Escriure per mostrar display.clearDisplay (); // neteja la pantalla
Visualització d'una variable de caràcter:
Per mostrar el contingut dins d’una variable es pot utilitzar el següent codi.
char i = 5; // la variable que es mostrarà display.setTextSize (1); // Seleccioneu la mida del text display.setTextColor (BLANC); // per a la visualització monocroma només és possible display.setCursor (0,0); // 0,0 és la cantonada superior esquerra de la pantalla OLED display.write (i); // Escriviu la variable que es mostrarà
Dibuixar una línia, cercle, rectangle, triangle:
Si voleu afegir alguns símbols a la pantalla, podeu utilitzar el següent codi per dibuixar qualsevol dels següents
display.drawLine (display.width () - 1, 0, i, display.height () - 1, BLANC); // void drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, BLANC); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, BLANC); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, BLANC); // void drawCircle (x0, y0, r, color);
Dibuixar una cadena a la pantalla:
Es pot utilitzar el següent fragment de codi o mostrar qualsevol missatge a la pantalla en un lloc i una mida concrets
display.setTextSize (2); // defineix la mida del text display.setTextColor (BLANC); // configuració del color display.setCursor (10,0); // La cadena començarà a les 10,0 (x, y) display.clearDisplay (); // Esborreu qualsevol visualització anterior a la pantalla display.println ("Circuit Digest"); // Imprimiu la cadena aquí "Circuit Digest" display.display (); // enviar el text a la pantalla
Mostra una imatge de mapa de bits:
Una cosa que no es pot confiar amb el mòdul OLED és que es pot utilitzar per mostrar mapes de bits. El codi següent s’utilitza per mostrar una imatge de mapa de bits
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, mapa de bits, w, h, BLANC); // void drawBitmap (x, y, * mapa de bits, w, h, color);
Com podeu veure, per tal de mostrar una imatge, les dades del mapa de bits s’han d’emmagatzemar a la memòria del programa en forma de directiva PROMGMEM. En poques paraules, hem d’instruir a la pantalla OLED què cal fer amb cada píxel passant-li una seqüència o valors d’una matriu tal com es mostra més amunt. Aquesta matriu contindrà les dades del mapa de bits de la imatge.
Pot semblar complicat, però amb l'ajuda d'una eina web és molt fàcil convertir una imatge en valors de mapa de bits i carregar-los a la matriu anterior.
Simplement carregueu la imatge i ajusteu la configuració per obtenir la vostra previsualització preferida. A continuació, feu clic a "Genera codi", copieu el codi i enganxeu-lo a la vostra matriu. Pengeu el programa i heu acabat. Vaig provar de mostrar un logotip de Batman i així va ser.


Encara hi ha moltes coses que podeu fer amb aquestes biblioteques. Per conèixer les possibilitats completes, visiteu la pàgina Adafruit GFX Graphics Primitives.
Espero que ho hàgiu executat i a punt per implementar una pantalla OLED en alguns dels vostres projectes. Si teniu algun problema, compartiu-los a la secció de comentaris i faré tot el possible per corregir-los.
