Cum se conectează afișajul OLED I2C la ARDUINO

Introducere: Introducere în afișajul OLED I2C 128*64 / 128*32.
Cum se conectează afișajul OLED I2C la ARDUINO

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ă.
Cum se conectează afișajul OLED I2C la ARDUINO

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.

Cum se conectează afișajul OLED I2C la ARDUINO

Î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.
Cum se conectează afișajul OLED I2C la ARDUINO

Ace utilizate:
Afișaj OLED - SCL/SCK (ceas) și SDA (date), putere „Plus” (VCC) și putere „Minus” (GND).
Cum se conectează afișajul OLED I2C la ARDUINO

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

Cum se conectează afișajul OLED I2C la ARDUINO

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.
Cum se conectează afișajul OLED I2C la ARDUINO

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.
Cum se conectează afișajul OLED I2C la 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.
Cum se conectează afișajul OLED I2C la ARDUINO

Iată CODUL Starting_with_Arduino_OLED.ino al programului nostru:
cod.zip [946 b] (descărcări: 4908)
cometariu
  • papionzâmbetrazandfard de obrazzâmbitoarerelaxat relaxatrânjet
    ochi inimainimă_sărutăsărutând cu ochii inchișiînroșituşuratmultumitgrimasă
    a face cu ochiullimbă_înfiptatălimbă_închisă_ochii_închișirânjindsărutândlimbă_înfundatădormit
    îngrijoratîncruntatangoasadeschide gurastrâmbându-seconfuztăcut
    inexpresivneamuzatăsudoare_zâmbetsudoaredezamăgit_uşuratobositpasiv
    dezamăgitîncurcatfricostranspirație receperseverastrigătsuspin
    bucurieuimitţipătfata_obositfuriosfurietriumf
    somnorosyummascaochelari de soaredizzy_faceimpsmiling_imp
    chip_neutrunu_guranevinovat
4 minus unu =
Comentarii (10)
  1. Tatoshka
    #1 Tatoshka Vizitatori 14 noiembrie 2018 21:18
    9
    Multumesc prietene! Aceasta este prima mea schiță încărcată și introducerea în Arduino. În afară de clipirea Clipire))
  2. Alisher
    #2 Alisher Vizitatori 28 iulie 2019 19:35
    8
    De unde pot descărca acest cod Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Vizitatori 14 august 2019 12:51
      11
      sub imagine există un link „Aici este CODUL Starting_with_Arduino_OLED.ino al programului nostru:”
  3. Alex
    #4 Alex Vizitatori 13 noiembrie 2019 20:01
    9
    Nu VOID SETUP sau VOID LOOP, ci void setup(); și void loop(); Limbajul C este un limbaj sensibil la majuscule.
  4. Invitat Alex
    #5 Invitat Alex Vizitatori 14 ianuarie 2020 03:00
    6
    >Pasul 4: ... în cazul meu OLED cu adresă 0x3F.
    și apoi
    >În VOID SETUP... adresa afișajului nostru 0x3C, pe care l-am învățat în „Pasul #4”.
    Ce zici de asta?
  5. Invitat Alex
    #6 Invitat Alex Vizitatori 14 ianuarie 2020 03:10
    9
    Mulțumesc! Am făcut totul conform instrucțiunilor de pe Atmega328 Pro Mini și am verificat 0,96". Ambele s-au dovedit a funcționa. Arduino IDE 1.8.10
  6. Cititor
    #7 Cititor Vizitatori 3 martie 2020 21:50
    4
    Mulțumesc, instructiv, totul funcționează!
  7. Ildar Xafizov
    #8 Ildar Xafizov Vizitatori 19 aprilie 2020 19:15
    5
    Am o întrebare. Există 2 afișaje OLED identice cu ale dvs. în fotografie (a doua fotografie). Nu îmi pot da seama ce jumperi să folosesc pentru a schimba adresa?
  8. Invitat Maxim
    #9 Invitat Maxim Vizitatori 31 octombrie 2020 18:53
    11
    Multumesc pentru articol.Dar am o problemă: pixelii din litere strălucesc unul pe altul și fontul este mai mare decât ar trebui să fie. Aparent, Arduino nu recunoaște rezoluția ecranului. Dacă cineva are aceeași problemă, iată cum să o rezolvi:
    #define SCREEN_WIDTH 128 // Lățimea afișajului OLED, în pixeli
    #define SCREEN_HEIGHT 64 // Înălțimea afișajului OLED, în pixeli
    Afișaj Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitrii
    #10 Dmitrii Vizitatori 9 mai 2021 19:35
    7
    Mulțumesc! Nu totul a mers imediat. Într-adevăr, adresa de pe afișaj era 128*64, nu 0x3D, ci 0x3C. Și am rearanjat Bibliotecile „de la mijlocul” versiunilor. Nu este cel mai recent, pentru că... a fost un mesaj despre valoarea critică a memoriei (am un Arduino Uno).