Kako spojiti OLED I2C zaslon na ARDUINO

Uvod: Uvod u OLED I2C zaslon 128*64 / 128*32.
Kako spojiti OLED I2C zaslon na ARDUINO

Zdravo! Budući da sam amaterski zaljubljenik u elektroniku, siguran sam da je sve što radimo - elektroničke igračke - proizvodi kućne radinosti ili veliki projekti - sve iz znatiželje i lijenosti. Znatiželja nastoji razumjeti i shvatiti ogromno, nepoznato, dokučiti kako tamo funkcionira, što radi, kako se kreće. A lijenost izmisli nešto da smisli, da ne ustane, da ne priđe, da ne podigne, da se ne uprlja ili bilo što drugo važno.

Budući da je vidjeti informacije bolje nego shvatiti što će se dogoditi u našem uređaju, ili se već dogodilo, ili se događa, svakako ćemo htjeti primiti ove najkorisnije informacije od naših mikrokontrolera, senzora ili drugih uređaja. I u svakom slučaju želim primati bilo kakve poruke, poput pitanja, upozorenja, podsjetnika, emotikona, zvjezdica, srca i slično.

Za one koji također imaju sličnu želju, evo kratkog vodiča za spajanje i testiranje malih i jeftinih OLED zaslona.
Zatim ćemo govoriti o jednom od modela OLED zaslona široko dostupnih za radio amatere, kojima upravlja SSD1306 čip, s veličinom zaslona od 0,96 inča i razlučivosti 128 * 64 ili 128 * 32 piksela. Ovi zasloni su idealni za male amaterske radio dizajne i domaće projekte.
Kako spojiti OLED I2C zaslon na ARDUINO

Korak 1: Osnovni pojmovi


Spojit ćemo ga na Arduino UNO / NANO, a također ćemo ga programirati preko Arduina.
  • OLED je Organic Light-Emitting Diode, tj. poluvodički uređaj napravljen od organskih spojeva koji počinje emitirati svjetlost kada kroz njega prođe električna struja.
  • ARDUINO je platforma za obuku i izgradnju sustava automatizacije i robotike.
  • ArduinoIDE - razvojno okruženje. Ovo je besplatan Arduino program za programiranje.
  • I2C – Inter-Integrated Circuits, inter-chip komunikacijska linija.
  • Sketch, aka kod, aka program - Arduino terminologija.

Slijedite upute da biste razumjeli kako pravilno spojiti i konfigurirati OLED zaslon na Arduino i kako prikazati prilagođenu poruku na njegovom zaslonu.
Sve radimo korak po korak.

Korak 2: Pribor


Trebaju nam samo četiri stvari:
  • 1. Sam OLED zaslon je 0.96” (možete ga kupiti na Aliexpressu ili Ebayu, dugačak je, ali jeftin!).
  • 2. Arduino UNO / Nano (na istom mjestu kao i zaslon).
  • 3. Spojne žice (ibid.).
  • 4. Računalo ili prijenosno računalo s instaliranim ArduinoIDE.

Kako spojiti OLED I2C zaslon na ARDUINO

Općenito, kupnja dijelova za razne projekte na Aliexpressu i Ebayu je jako cool stvar, dok radite na jednom projektu, dijelovi za drugi su već na putu. Glavna stvar je ne zaboraviti naručiti.

Korak 3: Spajanje zaslona


Zaslonom upravlja SSD1306 čip, koji podržava pet komunikacijskih protokola, od kojih je jedan I2C. Podaci po ovom protokolu prenose se preko samo dvije žice, a što je manje žica u kućištu, to bolje, tako da nam sasvim dobro odgovara.Ali! Postoje moduli sa SPI protokolom, pa čak i sa prebacivanjem protokola, stoga budite oprezni pri kupnji ovog modula.
Kako spojiti OLED I2C zaslon na ARDUINO

Korištene igle:
OLED zaslon - SCL/SCK (sat) i SDA (podaci), “Plus” napajanje (VCC) i “Minus” napajanje (GND).
Kako spojiti OLED I2C zaslon na ARDUINO

Korištene igle:
Arduino UNO - SCL/SCK na A5 i SSD na A4, “Plus” napajanje (+5V) i “Minus” napajanje (GND).
Spajanje zaslona na Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Kako spojiti OLED I2C zaslon na ARDUINO

Korak 4: I2C skener


Svaki uređaj na I2C sabirnici ima heksadecimalnu adresu, ne može se mijenjati, ožičen je, svaki odgovorni proizvođač to mora navesti negdje na kućištu ili u uputama. Postoje moduli s prekidačima i kratkospojnicima pomoću kojih se može mijenjati adresa, ali... ako su uređaji smiješno jeftini, onda se proizvođač možda neće potruditi baviti takvim detaljem, pa ćete to morati sami odrediti.

Ukupno se na sabirnici može koristiti do 127 adresa - 119 za uređaje i 8 servisnih adresa. Komunikacija se odvija na ovim adresama. Postoji glavni, zvani Gospodar, i postoji rob, zvani Rob - Gospodari pitaju, robovi odgovaraju, sve je jednostavno.
Budući da naš OLED zaslon koristi I2C komunikacijski protokol, a adresa možda nije navedena, pokušat ćemo sami saznati upravo tu adresu.

To možete učiniti tako da prenesete kratku skicu na Arduino ploču s povezanim OLED-om. ALI!
Nemojte žuriti s učitavanjem skice na Arduino odmah! Prvo preuzmimo “drivere”, tj. povežimo biblioteke, a da bismo to učinili, odmah ćemo otići na "Korak br. 5", a zatim se vratiti i nastaviti.

Korak 4: Nastavak:


Preuzmite CODE Finder_I2C_Hex_Address.ino, prenesite na Arduino.
Otvorite “Port Monitor”, postavite brzinu na 9600 i ako je sve ispravno spojeno, program će pokazati adresu uređaja, u mom slučaju OLED s adresom 0x3F.
Kako spojiti OLED I2C zaslon na ARDUINO

Korak 5: Preuzmite i povežite biblioteke


Kako bi sve radilo kako treba, a ne morate ponovno izmišljati kotač, potrebno je povezati par biblioteka na ArduinoIDE okruženje i to: ADAFRUIT GFX i ADAFRUIT SSD1306, one su neophodne kako bi Arduino mogao samostalno komunicirati s OLED zaslonom.
Ove biblioteke možete uključiti slijedeći ove korake.
  • 1. U ArduinoIDE idite na izbornik Sketch.
  • 2. Odaberite “Uključi biblioteke”.
  • 3. Odaberite "Upravljanje knjižnicama".
  • 4. Pronađite ADAFRUIT GFX i instalirajte ih.
  • 5. Pronađite ADAFRUIT SSD1306 i instalirajte ih.

S najnovijim verzijama biblioteka, moj zaslon je krivo radio, to naravno može biti posljedica zakrivljenosti mojih ruku, ali nakon što sam instalirao prve verzije ovih biblioteka, sve je počelo izgledati glatko i lijepo. Iz nekog razloga padaju mi ​​na pamet Puškinovi stihovi:
...i iskustvo, sin teških grešaka,
i genij, prijatelj paradoksa.

Drugi način instaliranja biblioteka je da sami pronađete, preuzmete i instalirate te biblioteke.
Za primjer Githuba:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

To su iste Adafruit biblioteke, ali se slične biblioteke mogu lako pretraživati ​​u tražilicama, na zahtjev OLED I2C. Mnogi entuzijasti pišu biblioteke "za sebe" i zatim ih objavljuju na webu. Koju biblioteku koristiti ovisi o vama.
Da bi zaslon prikazao ruska slova, potrebne su i posebne biblioteke, ali to je posebna tema za poseban članak.
Nakon što su biblioteke instalirane, možete se vratiti na korak 4 i konačno saznati heksadecimalnu adresu vašeg zaslona.

Korak 6: Testiranje zaslona


Kako biste provjerili radi li sve prema očekivanjima, pokrenite testni primjer iz ArduinoIDE-a.
Za ovo:
Idite na DATOTEKA > PRIMJERI > SSD 1306 > Odaberite 128x64 i2c
Ako dobijete "Pogreška", pokušajte odabrati SSD 1306 > 128x32 i2c.
Ako se ponovno pojavi "Greška", pokušajte promijeniti I2C adresu u retku 61 demo koda i zamijenite je adresom vašeg zaslona koju ste odredili u koraku #4.
Ako se pogreška ponovno pojavi, možete pokušati urediti datoteku Adafruit_SSD1306.h, ona se nalazi u mapi Arduino knjižnica.
Kako spojiti OLED I2C zaslon na ARDUINO

Otvorite datoteku Adafruit_SSD1306.h u uređivaču teksta i pronađite retke:
//#definiraj SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Odkomentirajte redak:
#define SSD1306_128_64. 

Trebalo bi izgledati ovako:
#define SSD1306_128_64

//#definiraj SSD1306_128_32

// #define SSD1306_96_16

Ako se pogreška ponovno pojavi, trebate provjeriti ispravne veze.
Nakon završetka preuzimanja, na zaslonu ćete vidjeti testnu animaciju, što znači da ste uspješno postavili svoj OLED zaslon.

Kada ste u potpunosti uživali u ovoj animaciji, možete prijeći na sljedeći korak.

Korak 7: Napišite vlastitu poruku


Kako biste napisali vlastitu poruku, prvo napravite novu skicu u ArduinoIDE programskom okruženju.
U zaglavlju uključujemo 4 biblioteke:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Zatim pišemo protokol resetiranja:
#define OLED_RESET 4

Adafruit_SSD1306 zaslon (OLED_RESET);

U VOID SETUP označavamo heksadecimalnu adresu našeg zaslona 0x3C, koju smo naučili u “Koraku br. 4”.
Zatim inicijaliziramo zaslon i brišemo ga:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

prikaz.clearDisplay();

Zatim u VOID LOOP upisujemo glavni kod, odnosno našu poruku koju želimo prikazati na displeju.
Da bismo to učinili, opisujemo veličinu teksta, boju teksta, poziciju pokazivača i na kraju prikazujemo poruku pomoću naredbe println:
display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(0,0);

display.println("Bravo!");

prikaz.prikaz();

Na kraju ne zaboravite napisati prikaz.prikaztako da se slika prikazuje na ekranu, inače ćete dobiti prazninu.
Ako ste sve učinili ispravno, na zaslonima će se pojaviti poruka.
Kako spojiti OLED I2C zaslon na ARDUINO

Ovdje je Starting_with_Arduino_OLED.ino KOD našeg programa:
kod.zip [946 b] (preuzimanja: 4908)
vrati se
Komentar
  • leptir mašnaosmijehsmijući serumenilosmješkoopušteno opuštenozlobno se smješkati
    srce_očiljubljenje_srcaljubljenje_zatvorenih_očijuzajapurenalaknulozadovoljanosmijeh
    migispružio jezik namigivanje okomisplažen_jezik_zatvorene_očinacerivši seljubljenjeisplažen_jezikspavanje
    zabrinutimršteći setjeskobanotvorena ustapraveći grimasezbunjenautišan
    bezizražajnanezabavljensweat_smileznojrazočarano_lakšeumoranpasivno
    razočaranzbunjenobojažljivhladan znojustrajatiplakatijecanje
    radostzapanjenvrisakumorno_liceljutbijestrijumf
    pospanonjammaskasunčane naočalevrtoglavo_liceimpnasmijan_imp
    neutralno_licebez_ustanevin
4 minus jedan =
Komentari (10)
  1. Tatoshka
    #1 Tatoshka Gosti 14. studenog 2018. 21:18
    9
    Hvala ti prijatelju! Ovo je moja prva prenesena skica i uvod u Arduino. Osim treptanja Blink))
  2. Alisher
    #2 Alisher Gosti 28. srpnja 2019. u 19:35
    8
    Gdje mogu preuzeti ovaj kod Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Gosti 14. kolovoza 2019. 12:51
      11
      ispod slike nalazi se link "Ovdje je Starting_with_Arduino_OLED.ino KOD našeg programa:"
  3. Alex
    #4 Alex Gosti 13. studenog 2019. 20:01
    9
    Ne VOID SETUP ili VOID LOOP, već void setup(); i void petlja(); Jezik C je jezik koji razlikuje velika i mala slova.
  4. Gost Alex
    #5 Gost Alex Gosti 14. siječnja 2020. 03:00
    6
    >Korak 4: ... u mom slučaju OLED s adresom 0x3F.
    i onda
    >U VOID SETUP... adresa našeg zaslona 0x3C, što smo naučili u "Koraku #4".
    Kako je to?
  5. Gost Alex
    #6 Gost Alex Gosti 14. siječnja 2020. u 03:10
    9
    Hvala vam! Napravio sam sve prema uputama na Atmega328 Pro Mini i provjerio kupljeni 0.96". Pokazalo se da oba rade. Arduino IDE 1.8.10
  6. Čitač
    #7 Čitač Gosti 3. ožujka 2020. u 21:50
    4
    Hvala, poučno, sve radi!
  7. Ildar Džafizov
    #8 Ildar Džafizov Gosti 19. travnja 2020. u 19:15
    5
    Imam pitanje. Na fotografiji (druga fotografija) nalaze se 2 OLED zaslona identična vašem. Ne mogu shvatiti koje kratkospojnike koristiti za promjenu adrese?
  8. Gost Maksim
    #9 Gost Maksim Gosti 31. listopada 2020. u 18:53
    11
    Hvala vam na članku.Ali imam problem: pikseli u slovima svijetle jedan u drugom, a font je veći nego što bi trebao biti. Očito Arduino ne prepoznaje razlučivost zaslona. Ako netko ima isti problem, evo kako ga riješiti:
    #define SCREEN_WIDTH 128 // Širina OLED zaslona, ​​u pikselima
    #define SCREEN_HEIGHT 64 // Visina OLED zaslona, ​​u pikselima
    Adafruit_SSD1306 zaslon (SCREEN_WIDTH, SCREEN_HEIGHT, &žica, OLED_RESET);
  9. Dmitrij
    #10 Dmitrij Gosti 9. svibnja 2021. u 19:35
    7
    Hvala vam! Nije sve išlo odmah. Doista, adresa na zaslonu bila je 128*64, ne 0x3D, već 0x3C. I presložio sam Biblioteke "iz sredine" verzija. Ne najnoviji, jer... pojavila se poruka o kritičnoj vrijednosti memorije (imam Arduino Uno).