Cum se conectează afișajul OLED I2C la ARDUINO
Introducere: Introducere în afișajul OLED I2C 128*64 / 128*32.
Buna ziua! Fiind un pasionat de electronică amator, sunt sigur că tot ceea ce facem – jucării electronice – produse de casă, sau proiecte mari – este totul din curiozitate și lene. Curiozitatea se străduiește să înțeleagă și să înțeleagă vastul, necunoscutul, pentru a-și da seama cum funcționează acolo, ce face, cum se mișcă. Iar lenea inventează ceva cu care să vină, ca să nu se ridice, să nu se apropie, să nu ridice, să nu se murdărească sau orice altceva important.
Deoarece este mai bine să vedem informații decât să ne dăm seama ce este pe cale să se întâmple în dispozitivul nostru, sau s-a întâmplat deja sau se întâmplă, cu siguranță vom dori să primim cele mai utile informații de la microcontrolere, senzori sau alte dispozitive noastre. Și, în orice caz, vreau să primesc orice mesaje, cum ar fi întrebări, avertismente, mementouri, emoticoane, stele, inimi și altele asemenea.
Pentru cei care au și o dorință similară, iată un scurt ghid pentru conectarea și testarea afișajelor OLED mici și ieftine.
În continuare, vom vorbi despre unul dintre modelele de afișaj OLED disponibile pe scară largă pentru radioamatorii, controlat de cipul SSD1306, cu o dimensiune a ecranului de 0,96 inci și o rezoluție de 128 * 64 sau 128 * 32 pixeli. Aceste afișaje sunt ideale pentru proiecte de radio amatori mici și proiecte de casă.
Îl vom conecta la Arduino UNO / NANO și îl vom programa și prin Arduino.
Urmați instrucțiunile pentru a înțelege cum să conectați și să configurați corect afișajul OLED la Arduino și cum să afișați un mesaj personalizat pe afișajul acestuia.
Facem totul pas cu pas.
Avem nevoie doar de patru lucruri:
În general, cumpărarea de piese pentru diverse proiecte de pe Aliexpress și Ebay este un lucru foarte tare, în timp ce lucrezi la un proiect, piese pentru altul sunt deja pe drum. Principalul lucru este să nu uitați să plasați o comandă.
Afișajul este controlat de un cip SSD1306, care acceptă cinci protocoale de comunicație, dintre care unul este I2C. Datele care folosesc acest protocol sunt transmise doar pe două fire, iar cu cât sunt mai puține fire în carcasă, cu atât mai bine, așa că ni se potrivește destul de bine.Dar! Există module cu protocolul SPI și chiar cu comutare de protocol, așa că aveți grijă când cumpărați acest modul.
Ace utilizate:
Afișaj OLED - SCL/SCK (ceas) și SDA (date), putere „Plus” (VCC) și putere „Minus” (GND).
Ace utilizate:
Arduino UNO - SCL/SCK pe A5 și SSD pe A4, putere „Plus” (+5V) și putere „Minus” (GND).
Conectarea afișajului la Arduino:
Fiecare dispozitiv de pe magistrala I2C are o adresă hexazecimală, nu poate fi schimbată, este cablat, fiecare producător responsabil trebuie să o indice undeva pe carcasă sau în instrucțiuni. Există module cu comutatoare și jumperi care pot fi folosite pentru a schimba adresa, dar... dacă dispozitivele sunt ridicol de ieftine, atunci producătorul s-ar putea să nu se deranjeze să se ocupe de un astfel de detaliu, așa că va trebui să îl determinați singur.
În total, pe magistrală pot fi utilizate până la 127 de adrese - 119 pentru dispozitive și 8 adrese de serviciu. Comunicarea se realizează la aceste adrese. Există unul principal, aka Master, și există un sclav, aka Slave - Stăpânii întreabă, sclavii răspund, totul este simplu.
Deoarece afișajul nostru OLED folosește protocolul de comunicare I2C, iar adresa poate să nu fie specificată, vom încerca să aflăm chiar noi înșine această adresă.
Puteți face acest lucru încărcând o scurtă schiță pe placa Arduino cu OLED-ul conectat. DAR!
Nu vă grăbiți să încărcați schița pe Arduino imediat! Să descarcăm mai întâi „driverele”, adică. haideți să conectăm bibliotecile și, pentru a face acest lucru, vom merge imediat la „Pasul nr. 5”, apoi ne vom întoarce și vom continua.
Descărcați CODE Finder_I2C_Hex_Address.ino, încărcați în Arduino.
Deschideți „Port Monitor”, setați viteza la 9600 și dacă totul este conectat corect, programul va afișa adresa dispozitivului, în cazul meu OLED cu adresa 0x3F.
Pentru ca totul să funcționeze corect și nu trebuie să reinventați roata, trebuie să conectați câteva biblioteci la mediul ArduinoIDE și anume: ADAFRUIT GFX și ADAFRUIT SSD1306, acestea sunt necesare pentru ca Arduino să poată comunica independent. cu afișajul OLED.
Puteți include aceste biblioteci urmând acești pași.
Cu cele mai recente versiuni ale bibliotecilor, afișajul meu a funcționat strâmb, acest lucru se poate datora, desigur, curburii mâinilor mele, dar după ce am instalat primele versiuni ale acestor biblioteci, totul a început să pară neted și frumos. Din anumite motive, îmi vin în minte replicile lui Pușkin:
...și experiența, fiul greșelilor grele,
și geniu, prieten al paradoxurilor.
O altă modalitate de a instala biblioteci este să găsiți, descărcați și instalați singuri aceste biblioteci.
Pentru exemplu Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
Acestea sunt aceleași biblioteci Adafruit, dar biblioteci similare pot fi căutate cu ușurință în motoarele de căutare, la cererea OLED I2C. Mulți entuziaști scriu biblioteci „pentru ei înșiși” și apoi le postează pe web. Ce bibliotecă să utilizați depinde de dvs.
Pentru ca afișajul să afișeze litere rusești, sunt necesare și biblioteci speciale, dar acesta este un subiect separat pentru un articol separat.
După ce bibliotecile sunt instalate, puteți reveni la pasul 4 și, în sfârșit, puteți afla adresa hexazecimală a afișajului dvs.
Pentru a verifica dacă totul funcționează conform așteptărilor, rulați exemplul de testare de la ArduinoIDE.
Pentru aceasta:
Accesați FIȘIER > EXEMPLE > SSD 1306 > Selectați 128x64 i2c
Dacă primiți „Eroare”, încercați să selectați SSD 1306 > 128x32 i2c.
Dacă „Eroare” apare din nou, încercați să schimbați adresa I2C de pe linia 61 a codului demonstrativ și înlocuiți-o cu adresa afișajului pe care ați determinat-o la pasul #4.
Dacă eroarea apare din nou, puteți încerca să editați fișierul Adafruit_SSD1306.h, acesta se află în folderul biblioteci Arduino.
Deschideți fișierul Adafruit_SSD1306.h într-un editor de text și găsiți liniile:
Decomentează linia:
Ar trebui să arate așa:
Dacă eroarea apare din nou, trebuie să verificați conexiunile corecte.
Odată ce descărcarea este finalizată, veți vedea o animație de testare pe ecran, ceea ce înseamnă că ați configurat cu succes afișajul OLED.
După ce v-ați bucurat din plin de această animație, puteți trece la pasul următor.
Pentru a scrie propriul mesaj, mai întâi creați o nouă schiță în mediul de programare ArduinoIDE.
În antet includem 4 biblioteci:
Apoi scriem protocolul de resetare:
În VOID SETUP indicăm adresa hexazecimală a afișajului nostru 0x3C, pe care am învățat-o în „Pasul nr. 4”.
Apoi, inițializam afișajul și îl ștergem:
Apoi, în VOID LOOP scriem codul principal, adică mesajul nostru pe care dorim să-l afișăm pe display.
Pentru a face acest lucru, descriem dimensiunea textului, culoarea textului, poziția cursorului și, în final, afișam mesajul folosind comanda println:
La final nu uita sa scrii afisaj.afisajastfel încât imaginea să fie afișată pe ecran, altfel veți obține un gol.
Dacă ați făcut totul corect, pe afișaje va apărea un mesaj.
Iată CODUL Starting_with_Arduino_OLED.ino al programului nostru:
Buna ziua! Fiind un pasionat de electronică amator, sunt sigur că tot ceea ce facem – jucării electronice – produse de casă, sau proiecte mari – este totul din curiozitate și lene. Curiozitatea se străduiește să înțeleagă și să înțeleagă vastul, necunoscutul, pentru a-și da seama cum funcționează acolo, ce face, cum se mișcă. Iar lenea inventează ceva cu care să vină, ca să nu se ridice, să nu se apropie, să nu ridice, să nu se murdărească sau orice altceva important.
Deoarece este mai bine să vedem informații decât să ne dăm seama ce este pe cale să se întâmple în dispozitivul nostru, sau s-a întâmplat deja sau se întâmplă, cu siguranță vom dori să primim cele mai utile informații de la microcontrolere, senzori sau alte dispozitive noastre. Și, în orice caz, vreau să primesc orice mesaje, cum ar fi întrebări, avertismente, mementouri, emoticoane, stele, inimi și altele asemenea.
Pentru cei care au și o dorință similară, iată un scurt ghid pentru conectarea și testarea afișajelor OLED mici și ieftine.
În continuare, vom vorbi despre unul dintre modelele de afișaj OLED disponibile pe scară largă pentru radioamatorii, controlat de cipul SSD1306, cu o dimensiune a ecranului de 0,96 inci și o rezoluție de 128 * 64 sau 128 * 32 pixeli. Aceste afișaje sunt ideale pentru proiecte de radio amatori mici și proiecte de casă.
Pasul 1: Concepte de bază
Îl vom conecta la Arduino UNO / NANO și îl vom programa și prin Arduino.
- OLED este o diodă emițătoare de lumină organică, adică un dispozitiv semiconductor format din compuși organici care începe să emită lumină atunci când trece un curent electric prin el.
- ARDUINO este o platformă pentru instruire și automatizare a clădirilor și sisteme robotice.
- ArduinoIDE - mediu de dezvoltare. Acesta este un program de programare Arduino gratuit.
- I2C – Circuite Inter-Integrate, linie de comunicare inter-chip.
- Schiță, alias cod, alias program - terminologie Arduino.
Urmați instrucțiunile pentru a înțelege cum să conectați și să configurați corect afișajul OLED la Arduino și cum să afișați un mesaj personalizat pe afișajul acestuia.
Facem totul pas cu pas.
Pasul 2: Accesorii
Avem nevoie doar de patru lucruri:
- 1. Ecranul OLED în sine are 0,96” (îl poți cumpăra de pe Aliexpress sau Ebay, este lung, dar ieftin!).
- 2. Arduino UNO / Nano (același loc ca și afișajul).
- 3. Fire de conectare (ibid.).
- 4. Computer sau laptop cu ArduinoIDE instalat.
În general, cumpărarea de piese pentru diverse proiecte de pe Aliexpress și Ebay este un lucru foarte tare, în timp ce lucrezi la un proiect, piese pentru altul sunt deja pe drum. Principalul lucru este să nu uitați să plasați o comandă.
Pasul 3: Conectarea afișajului
Afișajul este controlat de un cip SSD1306, care acceptă cinci protocoale de comunicație, dintre care unul este I2C. Datele care folosesc acest protocol sunt transmise doar pe două fire, iar cu cât sunt mai puține fire în carcasă, cu atât mai bine, așa că ni se potrivește destul de bine.Dar! Există module cu protocolul SPI și chiar cu comutare de protocol, așa că aveți grijă când cumpărați acest modul.
Ace utilizate:
Afișaj OLED - SCL/SCK (ceas) și SDA (date), putere „Plus” (VCC) și putere „Minus” (GND).
Ace utilizate:
Arduino UNO - SCL/SCK pe A5 și SSD pe A4, putere „Plus” (+5V) și putere „Minus” (GND).
Conectarea afișajului la Arduino:
- Vcc - 5V
- GND - GND
- SDA-A4
- SCL-A5
Pasul 4: Scanner I2C
Fiecare dispozitiv de pe magistrala I2C are o adresă hexazecimală, nu poate fi schimbată, este cablat, fiecare producător responsabil trebuie să o indice undeva pe carcasă sau în instrucțiuni. Există module cu comutatoare și jumperi care pot fi folosite pentru a schimba adresa, dar... dacă dispozitivele sunt ridicol de ieftine, atunci producătorul s-ar putea să nu se deranjeze să se ocupe de un astfel de detaliu, așa că va trebui să îl determinați singur.
În total, pe magistrală pot fi utilizate până la 127 de adrese - 119 pentru dispozitive și 8 adrese de serviciu. Comunicarea se realizează la aceste adrese. Există unul principal, aka Master, și există un sclav, aka Slave - Stăpânii întreabă, sclavii răspund, totul este simplu.
Deoarece afișajul nostru OLED folosește protocolul de comunicare I2C, iar adresa poate să nu fie specificată, vom încerca să aflăm chiar noi înșine această adresă.
Puteți face acest lucru încărcând o scurtă schiță pe placa Arduino cu OLED-ul conectat. DAR!
Nu vă grăbiți să încărcați schița pe Arduino imediat! Să descarcăm mai întâi „driverele”, adică. haideți să conectăm bibliotecile și, pentru a face acest lucru, vom merge imediat la „Pasul nr. 5”, apoi ne vom întoarce și vom continua.
Pasul 4: Continuare:
Descărcați CODE Finder_I2C_Hex_Address.ino, încărcați în Arduino.
Deschideți „Port Monitor”, setați viteza la 9600 și dacă totul este conectat corect, programul va afișa adresa dispozitivului, în cazul meu OLED cu adresa 0x3F.
Pasul 5: Descărcați și conectați bibliotecile
Pentru ca totul să funcționeze corect și nu trebuie să reinventați roata, trebuie să conectați câteva biblioteci la mediul ArduinoIDE și anume: ADAFRUIT GFX și ADAFRUIT SSD1306, acestea sunt necesare pentru ca Arduino să poată comunica independent. cu afișajul OLED.
Puteți include aceste biblioteci urmând acești pași.
- 1. În ArduinoIDE, accesați meniul Sketch.
- 2. Selectați „Include biblioteci”.
- 3.Selectați „Gestionați bibliotecile”.
- 4. Găsiți ADAFRUIT GFX și instalați-le.
- 5. Găsiți ADAFRUIT SSD1306 și instalați-le.
Cu cele mai recente versiuni ale bibliotecilor, afișajul meu a funcționat strâmb, acest lucru se poate datora, desigur, curburii mâinilor mele, dar după ce am instalat primele versiuni ale acestor biblioteci, totul a început să pară neted și frumos. Din anumite motive, îmi vin în minte replicile lui Pușkin:
...și experiența, fiul greșelilor grele,
și geniu, prieten al paradoxurilor.
O altă modalitate de a instala biblioteci este să găsiți, descărcați și instalați singuri aceste biblioteci.
Pentru exemplu Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
Acestea sunt aceleași biblioteci Adafruit, dar biblioteci similare pot fi căutate cu ușurință în motoarele de căutare, la cererea OLED I2C. Mulți entuziaști scriu biblioteci „pentru ei înșiși” și apoi le postează pe web. Ce bibliotecă să utilizați depinde de dvs.
Pentru ca afișajul să afișeze litere rusești, sunt necesare și biblioteci speciale, dar acesta este un subiect separat pentru un articol separat.
După ce bibliotecile sunt instalate, puteți reveni la pasul 4 și, în sfârșit, puteți afla adresa hexazecimală a afișajului dvs.
Pasul 6: Afișează testarea
Pentru a verifica dacă totul funcționează conform așteptărilor, rulați exemplul de testare de la ArduinoIDE.
Pentru aceasta:
Accesați FIȘIER > EXEMPLE > SSD 1306 > Selectați 128x64 i2c
Dacă primiți „Eroare”, încercați să selectați SSD 1306 > 128x32 i2c.
Dacă „Eroare” apare din nou, încercați să schimbați adresa I2C de pe linia 61 a codului demonstrativ și înlocuiți-o cu adresa afișajului pe care ați determinat-o la pasul #4.
Dacă eroarea apare din nou, puteți încerca să editați fișierul Adafruit_SSD1306.h, acesta se află în folderul biblioteci Arduino.
Deschideți fișierul Adafruit_SSD1306.h într-un editor de text și găsiți liniile:
//#define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16
Decomentează linia:
#define SSD1306_128_64.
Ar trebui să arate așa:
#define SSD1306_128_64
//#define SSD1306_128_32
// #define SSD1306_96_16
Dacă eroarea apare din nou, trebuie să verificați conexiunile corecte.
Odată ce descărcarea este finalizată, veți vedea o animație de testare pe ecran, ceea ce înseamnă că ați configurat cu succes afișajul OLED.
După ce v-ați bucurat din plin de această animație, puteți trece la pasul următor.
Pasul 7: Scrieți propriul mesaj
Pentru a scrie propriul mesaj, mai întâi creați o nouă schiță în mediul de programare ArduinoIDE.
În antet includem 4 biblioteci:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Apoi scriem protocolul de resetare:
#define OLED_RESET 4
display Adafruit_SSD1306(OLED_RESET);
În VOID SETUP indicăm adresa hexazecimală a afișajului nostru 0x3C, pe care am învățat-o în „Pasul nr. 4”.
Apoi, inițializam afișajul și îl ștergem:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
Apoi, în VOID LOOP scriem codul principal, adică mesajul nostru pe care dorim să-l afișăm pe display.
Pentru a face acest lucru, descriem dimensiunea textului, culoarea textului, poziția cursorului și, în final, afișam mesajul folosind comanda println:
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Bravo!");
display.display();
La final nu uita sa scrii afisaj.afisajastfel încât imaginea să fie afișată pe ecran, altfel veți obține un gol.
Dacă ați făcut totul corect, pe afișaje va apărea un mesaj.
Iată CODUL Starting_with_Arduino_OLED.ino al programului nostru:
cod.zip
[946 b] (descărcări: 4908)
Cursuri de master similare
Deosebit de interesant
Comentarii (10)