- Hardware necesar:
- Noțiuni de bază despre afișajele OLED:
- Hardware și conexiuni:
- Programarea afișajului OLED SSD1306 pentru Arduino:
Cei mai mulți dintre noi ar fi familiarizați cu afișajul LCD cu matrice de 16 × 2 puncte care este utilizat în majoritatea proiectelor pentru a afișa câteva informații utilizatorului. Dar aceste afișaje LCD au o mulțime de limitări în ceea ce pot face. În acest tutorial vom învăța despre afișajele OLED și cum să le folosim Arduino. Există o mulțime de tipuri de afișaje OLED disponibile pe piață și există o mulțime de modalități de a le face să funcționeze. În acest tutorial vom discuta despre clasificările sale și, de asemenea, care vor fi cele mai potrivite pentru proiectul dvs.
Hardware necesar:
- Modul de afișare OLED 128 x 64 pini (SSD1306)
- Arduino UNO / Nano
- Breadboard
- Conectarea firelor
- Computer / laptop
Noțiuni de bază despre afișajele OLED:
Termenul OLED înseamnă „ diodă cu lumină organică”, care folosește aceeași tehnologie care este utilizată în majoritatea televizoarelor noastre, dar are mai puțini pixeli în comparație cu acestea. Este foarte distractiv să aveți aceste module de afișare interesante pentru a fi interfațate cu Arduino, deoarece va face proiectele noastre să arate cool. Am acoperit aici un articol complet despre afișajele OLED și tipurile sale.
Folosim un ecran OLED monocrom cu 7 pini SSD1306 0,96 ”. Motivul pentru alegerea acestui afișaj este că poate funcționa pe trei protocoale de comunicații diferite, cum ar fi modul SPI 3 Wire, SPI mode cu patru fire și modul IIC. Acest tutorial va acoperi modul de utilizare a modulului în modul SPI cu 4 fire, deoarece este cel mai rapid mod de comunicare și cel implicit.
Pinii și funcțiile sale sunt explicate în tabelul de mai jos.
Numarul pin |
Nume PIN |
Alte nume |
Utilizare |
1 |
Gnd |
Sol |
Pinul de masă al modulului |
2 |
Vdd |
Vcc, 5V |
Pin de alimentare (3-5V tolerabil) |
3 |
SCK |
D0, SCL, CLK |
Acționează ca știftul ceasului. Folosit atât pentru I2C, cât și pentru SPI |
4 |
SDA |
D1, MOSI |
Pinul de date al modulului. Folosit atât pentru IIC, cât și pentru SPI |
5 |
RES |
RST, RESET |
Resetează modulul (util în timpul SPI) |
6 |
DC |
A0 |
Pinul de comandă a datelor. Folosit pentru protocolul SPI |
7 |
CS |
Chip Select |
Util când sunt utilizate mai multe module în cadrul protocolului SPI |
În acest tutorial vom opera pur și simplu modulul în modul SPI cu 4 fire, restul îl vom lăsa pentru un alt tutorial.
Comunitatea Arduino ne-a oferit deja o mulțime de biblioteci care pot fi utilizate direct pentru a simplifica mult acest lucru. Am încercat câteva biblioteci și am constatat că Biblioteca Adafruit_SSD1306 era foarte ușor de utilizat și avea o mână de opțiuni grafice, prin urmare, vom folosi același lucru în acest tutorial. Dar, dacă proiectul dvs. are o constrângere de memorie / viteză, încercați să utilizați Biblioteca U8g, deoarece funcționează mai repede și ocupă mai puțină memorie de program.
Hardware și conexiuni:
Schema circuitului pentru SSD1306 OLED interfațare cu Arduino este foarte simplu și este prezentat mai jos
Pur și simplu stabilim o comunicare SPI între modulul OLED și Arduino. Deoarece OLED funcționează pe 3V-5V și consumă foarte puțină energie, nu are nevoie de o sursă de alimentare externă. Puteți utiliza pur și simplu fire pentru a face conexiunea sau puteți utiliza o panou de calcul așa cum am folosit-o, astfel încât să fie ușor de experimentat. Conexiunea este, de asemenea, listată în povestea de mai jos
S. Nu |
Pin Name pe modulul OLED |
Nume Pin pe Arduino |
1 |
Gnd, Ground |
Sol |
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, Selectare chip |
12 |
Notă: Nu veți putea vizualiza nicio lumină de fundal / strălucire pe modulul OLED doar alimentând-o. Trebuie să-l programați corect pentru a observa orice modificare pe ecranul OLED.
Programarea afișajului OLED SSD1306 pentru Arduino:
Odată ce conexiunile sunt gata, puteți începe programarea Arduino. După cum am spus mai devreme, vom folosi biblioteca Adafruit și biblioteca GFX pentru a lucra cu acest modul OLED. Urmați pașii pentru a testa rulați afișajul OLED.
Pasul 1: Descărcați biblioteca Adafruit și biblioteca GFX de la Github folosind linkul de mai jos
- Biblioteca Adafruit
- Biblioteca grafică GFX
Pasul 2: ar trebui să descărcați două fișiere Zip. Acum adăugați-le la Arduino urmând
Schiță-> Includeți bibliotecă -> Adăugați o bibliotecă Zip așa cum se arată mai jos. Apoi selectați biblioteca pe care tocmai am descărcat-o. Puteți selecta o singură bibliotecă la un moment dat, prin urmare trebuie să repetați acest pas din nou.
Pasul 3: Lansați exemplul de program selectând Fișier-> Exemple-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino așa cum se arată în imaginea de mai jos.
Pasul 4: În interiorul programului de exemplu din partea de sus a liniei 64 adăugați linia „#define SSD1306_LCDHEIGHT 64” așa cum se arată în imaginea de mai jos.
Pasul 5: Încărcați acum programul și ar trebui să vedeți afișajul OLED pornind cu codul de exemplu implicit Adafruit, așa cum se arată în imaginea de mai jos. Completă video de lucru este dat la sfârșitul anului.
Acest exemplu de program vă arată toate elementele grafice posibile care ar putea fi afișate pe ecranul OLED. Acest cod ar trebui să vă fie suficient pentru a crea bitmap-uri, a desena linii / cercuri / dreptunghiuri, a vă juca cu pixeli, a afișa caractere și șiruri cu diferite fonturi și dimensiuni etc.
Dacă doriți să înțelegeți mai bine Biblioteca și funcțiile sale, puteți citi mai departe. Fiecare junk al codului este împărțit și explicat cu ajutorul liniilor de comentarii. Codul complet este dat la sfârșitul acestui articol
Afișarea și ștergerea ecranului:
Scrierea pe ecranul OLED este la fel ca și scrierea pe o tablă neagră, trebuie să scriem valorile și apoi să le curățăm înainte de a putea fi suprascrise. Următoarele comenzi sunt folosite pentru a scrie și a șterge afișajul
display.display (); // Scrieți pentru a afișa display.clearDisplay (); // ștergeți afișajul
Afișarea unei variabile de caractere:
Pentru a afișa conținutul în interiorul unei variabile se poate utiliza următorul cod.
char i = 5; // variabila de afișat display.setTextSize (1); // Selectați dimensiunea textului display.setTextColor (WHITE); // pentru afișajul monocrom numai dacă este posibil display.setCursor (0,0); // 0,0 este colțul din stânga sus al ecranului OLED display.write (i); // Scrieți variabila de afișat
Desenarea unei linii, cerc, dreptunghi, triunghi:
Dacă doriți să adăugați câteva simboluri pe ecran, puteți utiliza următorul cod pentru a desena oricare dintre următoarele
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // void drawLine (x0, y0, x1, y1, culoare); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // nul nul drawRect (x0, y0, w, h, culoare); 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, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, culoare); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // nul nul drawCircle (x0, y0, r, culoare);
Desenarea unui șir pe ecran:
Următoarea bucată de cod poate fi utilizată pentru a afișa orice mesaj pe ecran la un anumit loc și dimensiune
display.setTextSize (2); // setați dimensiunea textului display.setTextColor (WHITE); // setare culoare display.setCursor (10,0); // Șirul va începe de la 10,0 (x, y) display.clearDisplay (); // Ștergeți orice afișare anterioară pe ecran.println ("Circuit Digest"); // Imprimați șirul aici „Circuit Digest” display.display (); // trimite textul pe ecran
Afișarea unei imagini bitmap:
Un lucru care nu poate avea încredere în modulul OLED este acela că poate fi folosit pentru a afișa bitmap-uri. Următorul cod este utilizat pentru a afișa o imagine bitmap
static const nesemnat logo PROGMEM16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11, 1100, 1100, 1100, 1100 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, culoare);
După cum puteți vedea, pentru a afișa o imagine, datele bitmap-ului trebuie stocate în memoria programului sub forma directivei PROMGMEM. Pur și simplu, trebuie să instruim afișajul OLED ce să facem cu fiecare pixel, trimițându-i o secvență sau valori dintr-o matrice așa cum se arată mai sus. Această matrice va conține datele bitmap ale imaginii.
S-ar putea să pară complicat, dar cu ajutorul unui instrument web este foarte ușor să convertiți o imagine într-o hartă de valori bit și să o încărcați în matricea de mai sus.
Pur și simplu încărcați imaginea și reglați setările pentru a obține previzualizarea preferată a imaginii. Apoi faceți clic pe „Generați cod” copiați codul și lipiți-l în matrice. Încărcați programul și ați terminat. Am încercat să afișez un logo Batman și așa s-a dovedit.
Există încă o mulțime de lucruri pe care le puteți face cu aceste biblioteci. Pentru a cunoaște posibilitățile complete, vizitați pagina Adafruit GFX Graphics Primitive.
Sper că ați rulat acest lucru și sunteți gata să implementați un ecran OLED în unele dintre proiectele dvs. Dacă ați avut vreo problemă, împărtășiți-le în secțiunea de comentarii și voi încerca tot posibilul să le rectific.