Jak připojit OLED I2C displej k ARDUINO
Úvod: Úvod do OLED I2C displeje 128*64 / 128*32.
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.
Připojíme jej k Arduino UNO / NANO a také naprogramujeme přes Arduino.
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.
Potřebujeme jen čtyři věci:
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.
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.
Použité špendlíky:
OLED displej - SCL/SCK (hodiny) a SDA (data), „Plus“ napájení (VCC) a „Minus“ napájení (GND).
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:
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.
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.
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ů.
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.
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.
Otevřete soubor Adafruit_SSD1306.h v textovém editoru a najděte řádky:
Odkomentujte řádek:
Mělo by to vypadat takto:
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.
Chcete-li napsat vlastní zprávu, nejprve vytvořte novou skicu v programovacím prostředí ArduinoIDE.
V záhlaví zahrnujeme 4 knihovny:
Poté zapíšeme resetovací protokol:
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:
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:
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.
Zde je Starting_with_Arduino_OLED.ino KÓD našeho programu:
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.
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.
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.
Použité špendlíky:
OLED displej - SCL/SCK (hodiny) a SDA (data), „Plus“ napájení (VCC) a „Minus“ napájení (GND).
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
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.
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.
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.
Zde je Starting_with_Arduino_OLED.ino KÓD našeho programu:
kód.zip
[946 b] (stažení: 4908)
Podobné mistrovské kurzy
Zvláště zajímavé
Komentáře (10)