Udělej si sám
Life hacky, mistrovské kurzy, užitečné tipy, recepty.
Domov » Elektronika » DIY elektronika » Jak připojit OLED I2C displej k ARDUINO
Úvod: Úvod do OLED I2C displeje 128*64 / 128*32.
Jak připojit OLED I2C displej k ARDUINO

Ahoj! Jako amatérský nadšenec do elektroniky jsem si jistý, že vše, co děláme – elektronické hračky – domácí výrobky nebo velké projekty – je jen ze zvědavosti a lenosti. Curiosity se snaží porozumět a pochopit to obrovské, neznámé, aby zjistila, jak to tam funguje, co dělá, jak se pohybuje. A lenost vymyslí něco, co vymyslí, aby nevstávalo, nepřibližovalo se, nezvedlo, neušpinilo se nebo cokoliv jiného důležitého.

Vzhledem k tomu, že vidět informace je lepší než zjišťovat, co se v našem zařízení stane, nebo se již stalo nebo děje, budeme určitě chtít tyto nejužitečnější informace přijímat z našich mikrokontrolérů, senzorů nebo jiných zařízení. A v každém případě chci dostávat jakékoli zprávy, jako jsou otázky, varování, upomínky, emotikony, hvězdičky, srdíčka a podobně.

Pro ty, kteří mají také podobnou touhu, je zde krátký návod na připojení a testování malých a levných OLED displejů.
Dále budeme hovořit o jednom z modelů OLED displejů široce dostupných pro radioamatéry, řízeném čipem SSD1306, s velikostí obrazovky 0,96 palce a rozlišením 128 * 64 nebo 128 * 32 pixelů. Tyto displeje jsou ideální pro návrhy malých amatérských rádií a domácí projekty.
Jak připojit OLED I2C displej k ARDUINO

Krok 1: Základní pojmy


Připojíme jej k Arduino UNO / NANO a také naprogramujeme přes Arduino.
  • OLED je organická dioda vyzařující světlo, tedy polovodičové zařízení vyrobené z organických sloučenin, které začne vyzařovat světlo, když jím prochází elektrický proud.
  • ARDUINO je platforma pro školení a systémy automatizace budov a robotiky.
  • ArduinoIDE - vývojové prostředí. Toto je bezplatný programovací program Arduino.
  • I2C – Inter-Integrated Circuits, mezičipová komunikační linka.
  • Sketch, aka kód, aka program - Arduino terminologie.

Postupujte podle pokynů, abyste pochopili, jak správně připojit a nakonfigurovat OLED displej k Arduinu a jak zobrazit vlastní zprávu na jeho displeji.
Vše děláme krok za krokem.

Krok 2: Příslušenství


Potřebujeme jen čtyři věci:
  • 1. Samotný OLED displej má 0,96“ (koupíte na Aliexpress nebo Ebay, je dlouhý, ale levný!).
  • 2. Arduino UNO / Nano (stejné místo jako displej).
  • 3. Spojovací vodiče (tamtéž).
  • 4. Počítač nebo notebook s nainstalovaným ArduinoIDE.

Jak připojit OLED I2C displej k ARDUINO

Obecně platí, že nákup dílů pro různé projekty na Aliexpress a Ebay je velmi cool věc, zatímco vy pracujete na jednom projektu, díly pro další jsou již na cestě. Hlavní je nezapomenout na objednávku.

Krok 3: Připojení displeje


Displej je řízen čipem SSD1306, který podporuje pět komunikačních protokolů, z nichž jeden je I2C. Data pomocí tohoto protokolu jsou přenášena pouze po dvou drátech a čím méně drátů v pouzdře, tím lépe, takže nám to celkem vyhovuje.Ale! Existují moduly s protokolem SPI a dokonce i s přepínáním protokolů, proto buďte opatrní při nákupu tohoto modulu.
Jak připojit OLED I2C displej k ARDUINO

Použité špendlíky:
OLED displej - SCL/SCK (hodiny) a SDA (data), „Plus“ napájení (VCC) a „Minus“ napájení (GND).
Jak připojit OLED I2C displej k ARDUINO

Použité špendlíky:
Arduino UNO - SCL/SCK na A5 a SSD na A4, „Plus“ napájení (+5V) a „Minus“ napájení (GND).
Připojení displeje k Arduinu:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Jak připojit OLED I2C displej k ARDUINO

Krok 4: Skener I2C


Každé zařízení na I2C sběrnici má hexadecimální adresu, nelze ji změnit, je napevno zapojené, každý odpovědný výrobce ji musí uvést někde na skříni nebo v návodu. Existují moduly s přepínači a propojkami, kterými lze změnit adresu, ale... pokud jsou zařízení levná až ostuda, tak se výrobce možná neobtěžuje řešit takovou drobností, takže budete muset určete si to sami.

Celkem lze na sběrnici použít až 127 adres - 119 pro zařízení a 8 servisních adres. Komunikace probíhá na těchto adresách. Existuje hlavní, aka Master, a tam je otrok, alias Slave - Mistři se ptají, otroci odpovídají, vše je jednoduché.
Vzhledem k tomu, že náš OLED displej používá komunikační protokol I2C a adresa nemusí být uvedena, pokusíme se právě tuto adresu zjistit sami.

Můžete to udělat nahráním krátkého náčrtu na vaši desku Arduino s připojeným OLED. ALE!
Nespěchejte s nahráním náčrtu do Arduina hned! Nejprve si stáhneme „ovladače“, tzn. propojme knihovny a za tímto účelem okamžitě přejdeme na „Krok č. 5“ a pak se vrátíme a budeme pokračovat.

Krok 4: Pokračování:


Stáhněte si CODE Finder_I2C_Hex_Address.ino, nahrajte do Arduina.
Otevřete „Port Monitor“, nastavte rychlost na 9600 a pokud je vše správně připojeno, program zobrazí adresu zařízení, v mém případě OLED s adresou 0x3F.
Jak připojit OLED I2C displej k ARDUINO

Krok 5: Stáhněte a připojte knihovny


Aby vše fungovalo správně a nemuseli jste znovu vymýšlet kolo, musíte do prostředí ArduinoIDE připojit pár knihoven, konkrétně: ADAFRUIT GFX a ADAFRUIT SSD1306, ty jsou nezbytné, aby Arduino mohlo samostatně komunikovat s OLED displejem.
Tyto knihovny můžete zahrnout podle následujících kroků.
  • 1. V ArduinoIDE přejděte do nabídky Sketch.
  • 2. Vyberte „Zahrnout knihovny“.
  • 3. Vyberte „Spravovat knihovny“.
  • 4. Najděte ADAFRUIT GFX a nainstalujte je.
  • 5. Najděte ADAFRUIT SSD1306 a nainstalujte je.

S nejnovějšími verzemi knihoven mi displej fungoval nakřivo, to může být samozřejmě způsobeno zakřivením mých rukou, ale poté, co jsem nainstaloval úplně první verze těchto knihoven, vše začalo vypadat hladce a krásně. Z nějakého důvodu mě napadají Puškinovy ​​řádky:
...a zkušenost, syn těžkých chyb,
a génius, přítel paradoxů.

Dalším způsobem instalace knihoven je najít, stáhnout a nainstalovat tyto knihovny sami.
Pro příklad Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Jedná se o stejné knihovny Adafruit, ale podobné knihovny lze na žádost OLED I2C snadno vyhledávat ve vyhledávačích. Mnoho nadšenců píše knihovny „pro sebe“ a poté je zveřejňuje na webu. Jakou knihovnu použijete, je jen na vás.
Aby se na displeji zobrazovala ruská písmena, jsou potřeba i speciální knihovny, ale to je samostatné téma na samostatný článek.
Po instalaci knihoven se můžete vrátit ke kroku 4 a nakonec zjistit hexadecimální adresu vašeho displeje.

Krok 6: Testování displeje


Chcete-li zkontrolovat, zda vše funguje podle očekávání, spusťte testovací příklad z ArduinoIDE.
Pro tohle:
Přejděte na SOUBOR > PŘÍKLADY > SSD 1306 > Vybrat 128x64 i2c
Pokud se zobrazí „Chyba“, zkuste vybrat SSD 1306 > 128x32 i2c.
Pokud se „Chyba“ objeví znovu, zkuste změnit I2C adresu na řádku 61 ukázkového kódu a nahraďte ji adresou vašeho displeje, kterou jste určili v kroku #4.
Pokud se chyba objeví znovu, můžete zkusit upravit soubor Adafruit_SSD1306.h, nachází se ve složce Arduino libraries.
Jak připojit OLED I2C displej k ARDUINO

Otevřete soubor Adafruit_SSD1306.h v textovém editoru a najděte řádky:
//#define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16 

Odkomentujte řádek:
#define SSD1306_128_64. 

Mělo by to vypadat takto:
#define SSD1306_128_64
//#define SSD1306_128_32
// #define SSD1306_96_16

Pokud se chyba objeví znovu, musíte zkontrolovat správná připojení.
Po dokončení stahování se na obrazovce zobrazí testovací animace, což znamená, že jste svůj OLED displej úspěšně nastavili.

Až si tuto animaci pořádně vychutnáte, můžete přejít k dalšímu kroku.

Krok 7: Napište vlastní zprávu


Chcete-li napsat vlastní zprávu, nejprve vytvořte novou skicu v programovacím prostředí ArduinoIDE.
V záhlaví zahrnujeme 4 knihovny:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Poté zapíšeme resetovací protokol:
#define OLED_RESET 4
Displej Adafruit_SSD1306 (OLED_RESET);

V VOID SETUP uvedeme hexadecimální adresu našeho displeje 0x3C, kterou jsme se naučili v „kroku č. 4“.
Poté inicializujeme displej a vymažeme jej:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();

Dále do VOID LOOP napíšeme hlavní kód, tedy naši zprávu, kterou chceme zobrazit na displeji.
Za tímto účelem popíšeme velikost textu, barvu textu, polohu kurzoru a nakonec zobrazíme zprávu pomocí příkazu println:
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Výborně!");
display.display();

Na závěr nezapomeňte napsat zobrazit.zobrazitaby se obraz zobrazil na obrazovce, jinak získáte prázdnotu.
Pokud jste vše udělali správně, na displejích se zobrazí zpráva.
Jak připojit OLED I2C displej k ARDUINO

Zde je Starting_with_Arduino_OLED.ino KÓD našeho programu:
kód.zip [946 b] (stažení: 4908)
vrať se
Komentář
  • motýlekusměj sesmějící seruměnecsmajlíkuvolněný uvolněnýúšklebek
    srdce_očilíbání_srdcelíbat zavřené očispláchnutéuklidněnýspokojenýúsměv
    mrkatvyplazený jazyk mrkající okostick_out_tongue_closed_eyesšklebící selíbánízaseknutý_jazykSpící
    ustaranýmračit setrápeníotevři pusušklebící sezmatenýztichl
    bezvýraznýnepobavenýpot_úsměvpotit sezklamaný_ulehčenýunavenýpasivní
    zklamanýzmatenýstrašnýstudený potvytrvatplakatvzlyk
    radostužaslývýkřikunavený_obličejrozzlobenývztektriumf
    ospalýMňammaskasluneční brýledizzy_faceimpsmile_imp
    neutrální_obličejžádná_ústanevinný
4 mínus jedna =
Komentáře (10)
  1. Tatoška
    #1 Tatoška Hosté 14. listopadu 2018 21:18
    9
    Děkuji příteli! Toto je můj první nahraný náčrt a úvod do Arduina. Kromě blikání Blink))
  2. Alisher
    #2 Alisher Hosté 28. července 2019 19:35
    8
    Kde si mohu stáhnout tento kód Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Hosté 14. srpna 2019 12:51
      11
      pod obrázkem je odkaz "Zde je Starting_with_Arduino_OLED.ino KÓD našeho programu:"
  3. Alex
    #4 Alex Hosté 13. listopadu 2019 20:01
    9
    Ne VOID SETUP nebo VOID LOOP, ale void setup(); a void loop(); Jazyk C je jazyk citlivý na velká a malá písmena.
  4. Host Alex
    #5 Host Alex Hosté 14. ledna 2020 03:00
    6
    >Krok 4: ... v mém případě OLED s adresou 0x3F.
    a pak
    >V VOID SETUP... adresa našeho displeje 0x3C, který jsme se naučili v „kroku #4“.
    jak to?
  5. Host Alex
    #6 Host Alex Hosté 14. ledna 2020 03:10
    9
    Děkuji! Vše jsem udělal podle návodu na Atmega328 Pro Mini a zkontroloval zakoupený 0,96". Obojí se ukázalo jako funkční. Arduino IDE 1.8.10
  6. Čtenář
    #7 Čtenář Hosté 3. března 2020 21:50
    4
    Děkuji, poučné, vše funguje!
  7. Ildar Xafizov
    #8 Ildar Xafizov Hosté 19. dubna 2020 v 19:15
    5
    Mám otázku. Na fotce jsou 2 OLED displeje shodné s tím vaším (druhá fotka). Nemohu zjistit, které propojky použít ke změně adresy?
  8. Host Maxim
    #9 Host Maxim Hosté 31. října 2020 18:53
    11
    Děkuji za článek.Mám ale problém: pixely v písmenech svítí každý druhý a písmo je větší, než by mělo být. Arduino zřejmě nerozpozná rozlišení obrazovky. Pokud má někdo stejný problém, zde je návod, jak jej vyřešit:
    #define SCREEN_WIDTH 128 // Šířka OLED displeje v pixelech
    #define SCREEN_HEIGHT 64 // Výška OLED displeje v pixelech
    Displej Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitrij
    #10 Dmitrij Hosté 9. května 2021 19:35
    7
    Děkuji! Ne všechno se povedlo hned. Skutečně, adresa na displeji byla 128*64, ne 0x3D, ale 0x3C. A přeuspořádal jsem knihovny „odprostřed“ verzí. Ne nejnovější, protože... byla tam zpráva o kritické hodnotě paměti (mám Arduino Uno).

Nakládaná červená cibule (na jednohubky, saláty, hamburgery a pilaf)

Kreslení mořského západu slunce a zdobení starých dveří | Udělej si sám

DIY kniha přání pro kluka | Udělej si sám

Jak rozebrat a namazat sklíčidlo vrtačky

«Udělejte to sami - vlastníma rukama» - stránka zajímavých domácích výrobků vyrobených z odpadových materiálů a předmětů doma. Mistrovské kurzy krok za krokem s fotografiemi a popisy, technologiemi, životními hacky - vše, co skutečný mistr nebo jen řemeslník potřebuje pro vyšívání. Řemesla jakékoli složitosti, velký výběr směrů a nápadů pro kreativitu.

Doporučujeme přečíst

Chybové kódy pračky