Ako pripojiť OLED I2C displej k ARDUINO

Úvod: Úvod do OLED I2C displeja 128*64 / 128*32.
Ako pripojiť OLED I2C displej k ARDUINO

Ahoj! Keďže som amatérsky nadšenec elektroniky, som si istý, že všetko, čo robíme – elektronické hračky – domáce výrobky alebo veľké projekty – je len zo zvedavosti a lenivosti. Curiosity sa snaží pochopiť a pochopiť to obrovské, neznáme, prísť na to, ako to tam funguje, čo robí, ako sa pohybuje. A lenivosť si niečo vymyslí, aby nevstávala, nepribližovala sa, nedvíhala, nezašpinila alebo čokoľvek iné dôležité.

Keďže vidieť informácie je lepšie ako zisťovať, čo sa v našom zariadení stane, alebo sa už stalo, alebo sa deje, určite budeme chcieť tieto najužitočnejšie informácie dostávať z našich mikrokontrolérov, senzorov alebo iných zariadení. A v každom prípade chcem dostávať akékoľvek správy, ako sú otázky, upozornenia, pripomienky, emotikony, hviezdičky, srdiečka a podobne.

Pre tých, ktorí majú tiež podobnú túžbu, je tu krátky návod na pripojenie a testovanie malých a lacných OLED displejov.
Ďalej budeme hovoriť o jednom z modelov OLED displejov široko dostupných pre rádioamatérov, riadených čipom SSD1306, s veľkosťou obrazovky 0,96 palca a rozlíšením 128 * 64 alebo 128 * 32 pixelov. Tieto displeje sú ideálne pre návrhy malých amatérskych rádií a domáce projekty.
Ako pripojiť OLED I2C displej k ARDUINO

Krok 1: Základné pojmy


Napojíme ho na Arduino UNO / NANO a cez Arduino aj naprogramujeme.
  • OLED je organická dióda vyžarujúca svetlo, t. j. polovodičové zariadenie vyrobené z organických zlúčenín, ktoré začne vyžarovať svetlo, keď ním prechádza elektrický prúd.
  • ARDUINO je platforma pre školenia a systémy automatizácie budov a robotiky.
  • ArduinoIDE - vývojové prostredie. Toto je bezplatný programovací program Arduino.
  • I2C – Inter-Integrated Circuits, medzičipová komunikačná linka.
  • Sketch, aka kód, aka program - Arduino terminológia.

Postupujte podľa pokynov, aby ste pochopili, ako správne pripojiť a nakonfigurovať OLED displej k Arduinu a ako zobraziť vlastnú správu na jeho displeji.
Všetko robíme krok za krokom.

Krok 2: Príslušenstvo


Potrebujeme len štyri veci:
  • 1. Samotný OLED displej má 0,96” (môžete si ho kúpiť na Aliexpress alebo Ebay, je dlhý, ale lacný!).
  • 2. Arduino UNO / Nano (rovnaké miesto ako displej).
  • 3. Spojovacie vodiče (tamtiež).
  • 4. Počítač alebo notebook s nainštalovaným ArduinoIDE.

Ako pripojiť OLED I2C displej k ARDUINO

Vo všeobecnosti je nákup dielov pre rôzne projekty na Aliexpress a Ebay veľmi cool vec, zatiaľ čo vy pracujete na jednom projekte, diely na ďalší sú už na ceste. Hlavná vec je nezabudnúť na objednávku.

Krok 3: Pripojenie displeja


Displej je riadený čipom SSD1306, ktorý podporuje päť komunikačných protokolov, z ktorých jeden je I2C. Dáta pomocou tohto protokolu sa prenášajú len po dvoch vodičoch a čím menej vodičov v puzdre, tým lepšie, takže nám to celkom vyhovuje.Ale! Existujú moduly s protokolom SPI a dokonca aj s prepínaním protokolov, takže pri kúpe tohto modulu buďte opatrní.
Ako pripojiť OLED I2C displej k ARDUINO

Použité špendlíky:
OLED displej - SCL/SCK (hodiny) a SDA (dáta), „Plus“ napájanie (VCC) a „Mínusové“ napájanie (GND).
Ako pripojiť OLED I2C displej k ARDUINO

Použité špendlíky:
Arduino UNO - SCL/SCK na A5 a SSD na A4, „Plus“ napájanie (+5V) a „Mínusové“ napájanie (GND).
Pripojenie displeja k Arduinu:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Ako pripojiť OLED I2C displej k ARDUINO

Krok 4: Skener I2C


Každé zariadenie na I2C zbernici má hexadecimálnu adresu, nedá sa zmeniť, je napevno zapojené, každý zodpovedný výrobca to musí uviesť niekde na obale alebo v návode. Existujú moduly s prepínačmi a prepojkami, pomocou ktorých sa dá zmeniť adresa, ale... ak sú zariadenia smiešne lacné, tak sa výrobca nemusí obťažovať zaoberať sa takýmto detailom, takže si to budete musieť určiť sami.

Celkovo je možné na zbernici použiť až 127 adries - 119 pre zariadenia a 8 adries pre služby. Komunikácia prebieha na týchto adresách. Existuje hlavný, aka Master, a tam je otrok, alias Slave - Páni sa pýtajú, otroci odpovedajú, všetko je jednoduché.
Keďže náš OLED displej používa komunikačný protokol I2C a adresa nemusí byť špecifikovaná, pokúsime sa zistiť práve túto adresu sami.

Môžete to urobiť nahraním krátkeho náčrtu na dosku Arduino s pripojeným OLED. ALE!
Neponáhľajte sa hneď nahrať skicu do Arduina! Najprv si stiahneme “ovládače”, t.j. prepojme knižnice a aby sme to urobili, okamžite prejdeme na „Krok č. 5“ a potom sa vrátime a budeme pokračovať.

Krok 4: Pokračovanie:


Stiahnite si CODE Finder_I2C_Hex_Address.ino, nahrajte do Arduina.
Otvorte “Port Monitor”, nastavte rýchlosť na 9600 a ak je všetko správne pripojené, program zobrazí adresu zariadenia, v mojom prípade OLED s adresou 0x3F.
Ako pripojiť OLED I2C displej k ARDUINO

Krok 5: Stiahnite si a pripojte knižnice


Aby všetko fungovalo správne a nemuseli ste znovu vymýšľať koleso, musíte do prostredia ArduinoIDE pripojiť niekoľko knižníc, a to: ADAFRUIT GFX a ADAFRUIT SSD1306, sú potrebné na to, aby Arduino dokázalo samostatne komunikovať. s OLED displejom.
Tieto knižnice môžete zahrnúť podľa týchto krokov.
  • 1. V ArduinoIDE prejdite do ponuky Sketch.
  • 2. Vyberte „Zahrnúť knižnice“.
  • 3. Vyberte „Spravovať knižnice“.
  • 4. Nájdite ADAFRUIT GFX a nainštalujte ich.
  • 5. Nájdite ADAFRUIT SSD1306 a nainštalujte ich.

Pri najnovších verziách knižníc mi displej fungoval nakrivo, to môže byť samozrejme spôsobené zakrivením mojich rúk, ale po nainštalovaní úplne prvých verzií týchto knižníc sa všetko začalo javiť ako hladké a krásne. Z nejakého dôvodu prichádzajú na myseľ Pushkinove riadky:
...a skúsenosť, syn ťažkých chýb,
a génius, priateľ paradoxov.

Ďalším spôsobom inštalácie knižníc je nájsť, stiahnuť a nainštalovať tieto knižnice sami.
Pre príklad Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Ide o rovnaké knižnice Adafruit, ale podobné knižnice je možné na žiadosť OLED I2C ľahko vyhľadávať vo vyhľadávačoch. Mnoho nadšencov píše knižnice „pre seba“ a potom ich uverejňuje na webe. Akú knižnicu použijete, je len na vás.
Aby sa na displeji zobrazovali ruské písmená, sú potrebné aj špeciálne knižnice, ale toto je samostatná téma na samostatný článok.
Po nainštalovaní knižníc sa môžete vrátiť ku kroku 4 a nakoniec zistiť hexadecimálnu adresu vášho displeja.

Krok 6: Testovanie displeja


Ak chcete skontrolovať, či všetko funguje podľa očakávania, spustite testovací príklad z ArduinoIDE.
Pre to:
Prejdite na SÚBOR > PRÍKLADY > SSD 1306 > Vybrať 128x64 i2c
Ak sa zobrazí „Chyba“, skúste vybrať SSD 1306 > 128x32 i2c.
Ak sa "Chyba" objaví znova, skúste zmeniť I2C adresu v riadku 61 demo kódu a nahraďte ju adresou vášho displeja, ktorú ste určili v kroku #4.
Ak sa chyba vyskytne znova, môžete skúsiť upraviť súbor Adafruit_SSD1306.h, nachádza sa v priečinku Arduino libraries.
Ako pripojiť OLED I2C displej k ARDUINO

Otvorte súbor Adafruit_SSD1306.h v textovom editore a nájdite riadky:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Odkomentujte riadok:
#define SSD1306_128_64. 

Malo by to vyzerať takto:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Ak sa chyba vyskytne znova, musíte skontrolovať správne pripojenia.
Po dokončení sťahovania uvidíte na obrazovke testovaciu animáciu, čo znamená, že ste úspešne nastavili svoj OLED displej.

Keď ste si túto animáciu poriadne užili, môžete prejsť na ďalší krok.

Krok 7: Napíšte svoju vlastnú správu


Ak chcete napísať vlastnú správu, najprv vytvorte novú skicu v programovacom prostredí ArduinoIDE.
V hlavičke obsahujeme 4 knižnice:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Potom napíšeme resetovací protokol:
#define OLED_RESET 4

Displej Adafruit_SSD1306 (OLED_RESET);

V VOID SETUP uvádzame hexadecimálnu adresu nášho displeja 0x3C, ktorú sme sa naučili v “Kroku č. 4”.
Potom inicializujeme displej a vymažeme ho:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Ďalej do VOID LOOP napíšeme hlavný kód, teda našu správu, ktorú chceme zobraziť na displeji.
Aby sme to urobili, popíšeme veľkosť textu, farbu textu, polohu kurzora a nakoniec zobrazíme správu pomocou príkazu println:
display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(0,0);

display.println("Výborne!");

display.display();

Na záver nezabudnite napísať zobraziť.zobraziťaby sa obraz zobrazil na obrazovke, v opačnom prípade vznikne prázdnota.
Ak ste urobili všetko správne, na displejoch sa zobrazí správa.
Ako pripojiť OLED I2C displej k ARDUINO

Tu je Starting_with_Arduino_OLED.ino KÓD nášho programu:
kód.zip [946 b] (stiahnutia: 4908)
vráť sa
Komentujte
  • motýlikúsmevsmejúc sačervenať sausmievavýuvoľnený uvoľnenýuškrnúť sa
    srdce_očibozkávanie_srdcekissing_closed_eyesspláchnutýuľavilospokojnýúsmev
    žmurknutiestick_out_tongue_winking_eyevyplazený jazyk zatvorené očis úsmevombozkávaniezaseknutý_jazykspať
    ustarostenýzamračenéutrápenýotvor ústagrimasyzmätenýutíšil
    bez výrazunepobavenýpot_úsmevpotiť sasklamaný_uľavenýunavenýpasívny
    sklamanýzmätenýstrašnýstudený potvytrvaťplakaťvzlyk
    radosťužasnutýkričaťunavená_tvárnahnevanýzlosťtriumf
    ospalýmňammaskaslnečné okuliarezávrat_tvárimpsmile_imp
    neutrálna_tvárbez_ústnevinný
4 mínus jedna =
Komentáre (10)
  1. Tatoshka
    #1 Tatoshka Hostia 14. novembra 2018 21:18
    9
    Ďakujem, priateľu! Toto je môj prvý nahraný náčrt a úvod do Arduina. Okrem blikania Blink))
  2. Alisher
    #2 Alisher Hostia 28. júla 2019 o 19:35
    8
    Kde si môžem stiahnuť tento kód Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Hostia 14. augusta 2019 12:51
      11
      pod obrázkom je odkaz "Tu je Starting_with_Arduino_OLED.ino KÓD nášho programu:"
  3. Alex
    #4 Alex Hostia 13. novembra 2019 20:01
    9
    Nie VOID SETUP alebo VOID LOOP, ale void setup(); a void loop(); Jazyk C je jazyk, v ktorom sa rozlišujú malé a veľké písmená.
  4. Hosť Alex
    #5 Hosť Alex Hostia 14. januára 2020 03:00
    6
    >Krok 4: ... v mojom prípade OLED s adresou 0x3F.
    a potom
    >V VOID SETUP... adresa nášho displeja 0x3C, ktorý sme sa naučili v „kroku #4“.
    Ako je to, že?
  5. Hosť Alex
    #6 Hosť Alex Hostia 14. januára 2020 03:10
    9
    Ďakujem! Urobil som všetko podľa návodu na Atmega328 Pro Mini a skontroloval som zakúpenú 0,96". Ukázalo sa, že obe fungujú. Arduino IDE 1.8.10
  6. Čitateľ
    #7 Čitateľ Hostia 3. marca 2020 o 21:50
    4
    Ďakujem, poučné, všetko funguje!
  7. Ildar Xafizov
    #8 Ildar Xafizov Hostia 19. apríla 2020 o 19:15
    5
    Mám otázku. Na fotke sú 2 OLED displeje zhodné s tým vašim (druhá fotka). Nemôžem zistiť, ktoré prepojky použiť na zmenu adresy?
  8. Hosť Maxim
    #9 Hosť Maxim Hostia 31. októbra 2020 o 18:53
    11
    dakujem za clanok.Mám však problém: pixely v písmenách svietia každý druhý a písmo je väčšie, ako by malo byť. Arduino zjavne nerozpozná rozlíšenie obrazovky. Ak má niekto rovnaký problém, tu je návod, ako ho vyriešiť:
    #define SCREEN_WIDTH 128 // Šírka OLED displeja v pixeloch
    #define SCREEN_HEIGHT 64 // Výška OLED displeja v pixeloch
    Displej Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitrij
    #10 Dmitrij Hostia 9. mája 2021 o 19:35
    7
    Ďakujem! Nie všetko sa podarilo hneď. Skutočne, adresa na displeji bola 128*64, nie 0x3D, ale 0x3C. A preusporiadal som knižnice „od stredu“ verzií. Nie najnovší, pretože... bola tam správa o kritickej hodnote pamäte (mám Arduino Uno).