Obsah:
- Krok 1: Veci, ktoré sa dnes naučíme
- Krok 2: Hardvérová požiadavka
- Krok 3: Čo je to OLED displej?
- Krok 4:
- Krok 5: Bližší pohľad
- Krok 6: Knižnica
- Krok 7:
- Krok 8: Zapojenie 128 x 64/32 OLED
- Krok 9: Kód
- Krok 10: Prispôsobenie textu a pridávanie obrázkov
- Krok 11: Pripojenie 2 displejov
- Krok 12: Pripojenie viac ako 2 displejov
- Krok 13: Výhody a nevýhody
- Krok 14: Bežné chyby
- Krok 15: Odkazy
Video: OLED I2C Display Arduino/NodeMCU Tutorial: 15 Steps
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Úplne prvý program, ktorý napíšete, keď sa začnete učiť a
nový programovací jazyk je: „Hello World!“.
Samotný program nerobí nič iné ako vytlačenie textu „Hello World“na obrazovku.
Ako teda prinútime naše Arduino, aby zobrazovalo „Hello World!“?
V tomto videu vám ukážem, ako začať s malými OLED displejmi 0,91 (128x32) a 0,96 (128x64) I2C.
Na webe je k dispozícii niekoľko stoviek návodov, ktoré vysvetľujú rovnakú vec rôznymi spôsobmi, ale nenašiel som žiadny, ktorý by mi povedal všetko o OLED displeji a jeho použití v rôznych scenároch. Trvalo mi nejaký čas, kým som to všetko vyriešil. Preto som si povedal, že by som mal vytvoriť návod o tom, čo som sa naučil, a skombinovať všetky funkcie a spôsoby, akými je možné displeje OLED použiť v našich projektoch.
Krok 1: Veci, ktoré sa dnes naučíme
V tomto videu budeme hovoriť o:
- Čo je to OLED displej?
- Potom sa bližšie pozrieme na OLED displeje 0,91 (128x32) a 0,96 (128x64) I2C
- Ďalej budeme hovoriť o inštalácii knižnice Adafruit do vášho Arduino IDE
- Potom pripojíme NodeMCU a Arduino k OLED displeju
- Ďalej sa pozrieme na kód a zobrazíme na ňom grafiku a text
- Budeme tiež hovoriť o aplikácii vlastných písiem a zobrazovaní obrázkov
- Potom pripojíme viac OLED k mikrokontroléru pomocou multiplexera I2C
- Nakoniec si povieme o niekoľkých bežných chybách, ktorých sa ľudia pri používaní OLED displejov dopúšťajú
Krok 2: Hardvérová požiadavka
Na tento tutoriál potrebujeme:
- Breadboard
- OLED displeje 0,91 "(128x32) a 0,96" (128x64) I2C
- Arduino UNO/NANO (čo je po ruke)
- NodeMCU
- multiplexor TCA9548A I2C
- Niekoľko prepojovacích káblov
- a kábel USB na odoslanie kódu
Krok 3: Čo je to OLED displej?
Svetelná dióda OLED alebo organická dióda vyžarujúca svetlo
dióda (LED), v ktorej je emisná elektroluminiscenčná vrstva filmom organickej zlúčeniny (milióny malých LED svetiel), ktorá vyžaruje svetlo v reakcii na elektrický prúd.
OLED sa používajú na vytváranie digitálnych displejov v zariadeniach, ako sú televízne obrazovky, počítačové monitory, prenosné systémy, ako sú mobilné telefóny, ručné herné konzoly a PDA. OLED displej funguje bez podsvietenia, pretože vyžaruje viditeľné svetlo.
Krok 4:
Existuje veľa typov OLED displejov
trhu na základe ich
- Veľkosti
- Farba
- Značky
- Protokol
- SPI (sériové periférne rozhranie) alebo I2C
-Schéma riadenia pasívnej matice (PMOLED) alebo aktívnej matice (AMOLED)
V tomto návode budem hovoriť o pripojení
modrá farba 0,91 (128x32 OLED) a 0,96 (128x64 OLED) I2C OLDE zobrazuje na Arduino NANO a NodeMCU. Technológia zbernice I2C využíva iba 2 piny MCU, takže pre ďalšie senzory máme k dispozícii haldy.
Krok 5: Bližší pohľad
Pozrime sa bližšie na tieto dva displeje.
Na zadnej strane týchto displejov sú hromady kondenzátorov SMD a odporov spájkovaných na doske; ale keďže ide o zariadenie I2C, staráme sa iba o tieto 2 piny (SCL a SDA)
Displej sa k Arduinu pripája iba štyrmi vodičmi - dvoma pre napájanie (VCC a GND) a dvoma pre dáta (sériové hodiny SCL a
sériové údaje SDA), čo robí zapojenie veľmi jednoduchým. Dátové pripojenie je I2C (I²C, IIC alebo Inter-Integrated Circuit) a toto rozhranie sa nazýva aj TWI (Two Wire Interface).
- Palubné kolíky môžu byť v rôznom poradí, preto ich pred zapojením do projektu vždy trikrát skontrolujte.
- Prevádzkové napätie je medzi 3v až 5v, ale je najlepšie použiť návod z technického listu výrobcu.
- Niekedy v našich projektoch musíme použiť 2 displeje. Ako to teda môžeme dosiahnuť?
Ide o to, mať na displeji konfigurovateľnú adresu. Táto jednotka má konfigurovateľnú adresu medzi 0x78 a 0x7A. Adresu môžeme zmeniť jednoducho odpájaním 0Ohm odporu z jednej strany a jeho zapojením na druhú stranu alebo vložením globálnej spájky. Porozprávame sa o tom do hĺbky, keď k Arduinu pripojíme viac displejov v neskoršej časti tohto tutoriálu.
Na obrázku tieto displeje vyzerajú veľmi veľké. Ale prakticky sú malé. Sú vyrobené zo 128 x 32/64 jednotlivých OLED pixelov a nevyžadujú žiadne protisvetlo. Pozrite sa na to a uvidíte, aké je to malé. Napriek tomu, že sú malé, môžu byť veľmi užitočné v akýchkoľvek elektronických projektoch.
Krok 6: Knižnica
Na ich ovládanie je k dispozícii niekoľko knižníc
zobrazuje. V minulosti som používal „knižnicu u8glib“, ale knižnicu AdaFruit považujem za veľmi ľahko zrozumiteľnú a používateľnú v našich projektoch. V tomto návode teda použijem knižnicu AdaFruit.
Na ovládanie displeja OLED budete potrebovať knižnicu „adafruit_GFX.h“a knižnicu „adafruit_SSD1306.h“.
Existujú dva spôsoby, ako si môžete stiahnuť a nainštalovať knižnicu do svojho Arduino IDE.
Metóda 1
Prejdite na „Správca knižnice“a vyhľadajte „adafruit_SSD1306“a „adafruit_gfx“
Vyberte najnovšiu verziu a kliknite na tlačidlo Inštalovať.
Po inštalácii týchto knižníc môžete vo svojom programe používať.
Metóda 2
Tieto dve knižnice je možné stiahnuť aj z github (potrebujete obe):
Odkazy poskytnem v popise nižšie.
Knižnica zobrazenia:
Knižnica GFX:
Po stiahnutí skopírujte priečinok Adafruit_SSD1306-master zo stiahnutého súboru zip do priečinka knižníc Arduino. Tento priečinok sa zvyčajne nachádza v priečinku Dokumenty> Arduino> knižnice v systémoch Windows. V systéme Linux sa zvyčajne nachádza v domovskom priečinku> Arduino> knižnice. Nakoniec v priečinku knižnice Arduino premenujte hlavný priečinok Adafruit_SSD1306 na Adafruit_SSD1306. Aj keď to nepremenujete, je to v poriadku.
Krok 7:
Teraz sa pozrime na „Adafruit_SSD1306.h“
súbor
V tejto knižnici potrebujeme vedieť dve veci:
1. Ak chcete použiť menší displej, použite predvolený formát 128_32, v opačnom prípade komentujte 128_32 a odkomentujte 128_64.
2. Ak ste na dosku spájkovali adresu 0x7A (o ktorej si povieme neskôr), potom pre väčšie displeje použite 7 -bitovú adresu 0x3D, v opačnom prípade použite predvolenú adresu 0x3C. Pri menších displejoch je adresa 0x3C.
Krok 8: Zapojenie 128 x 64/32 OLED
Začnime pripojením NodeMCU k displeju.
Prvá a najdôležitejšia vec, ktorú je potrebné poznamenať, je, že na niektorých displejoch môže byť vymenený napájací kolík GND a VCC. Skontrolujte displej a uistite sa, že je rovnaký ako na obrázku. Ak sú kolíky vymenené, zaistite zmenu pripojenia k Arduino alebo NodeMCU.
- OLED zapojenie NodeMCU
OLED VCC - NodeMCU 3,3V
OLED GND - NodeMCU GND
OLED SCL - NodeMCU D1
OLED SDA - NodeMCU D2
- OLED zapojenie Arduino Uno
OLED VCC - Arduino 5V
OLED GND - Arduino GND
OLED SCL - Arduino Uno A5
OLED SDA - Arduino Uno A4
- Zapojenie OLED Arduino MEGA 2560
OLED VCC - Arduino 5V
OLED GND - Arduino GND
OLED SCL - Arduino MEGA 2560 pin 21
OLED SDA - Arduino MEGA 2560 pin 20
Krok 9: Kód
Knižnica Adafruit prináša skutočne dobré príklady pre oboch
Displeje 128x32 a 128x64.
Knižnica sa nachádza pod položkou Súbor> Príklady> Adafruit SSD1306> a potom typ zobrazenia v Arduino IDE.
Použijeme príklad 128x32 I2C a upravíme ho tak, aby fungoval s displejmi 128x64 aj 128x32 najskôr tak, že ho pripojíte k Arduinu a potom k doske NodeMCU.
Kód začína zahrnutím oboch knižníc Adafruit. V tomto tutoriáli budem zdôrazňovať iba tie časti kódu, ktoré sú potrebné na to, aby sme ich mohli načítať na dosky aj displeje. Ak sa chcete dozvedieť viac o kóde, zanechajte komentár na mojom blogu alebo v sekcii komentárov nižšie a ja sa snažím dostať vás späť.
- Najprv načítame kód do Arduino Nano pripojeného k displeju 128x32.
Kód môžeme používať tak, ako je, bez akýchkoľvek úprav.
128x32 používa adresu 0x3C, takže tento bit tu vyzerá dobre, dvakrát skontrolujte knižnicu hlavičiek, áno, používa aj adresu 0x3C a typ zobrazenia je 128x32.
- Teraz pripojte displej 128x64. Ako vieme, predvolene používa adresu 0x3C, takže nepotrebujeme aktualizovať adresu ani v kóde, ani v knižnici.
Potrebujeme iba komentovať 128_32 a odkomentovať 128_64 v knižnici záhlaví a v našom kóde zmeniť LCDHEIGHT na 64.
- Na spustenie rovnakého kódu na NodeMCU musíme v kóde zmeniť ešte jeden riadok.
Zvyšok kódu „#define OLED_RESET 4“> „#define OLED_RESET LED_BUILTIN“je rovnaký ako pre Arduino
Skoro na to, aby sme zobrazili čokoľvek, musíme najskôr vyčistiť predchádzajúcu obrazovku pomocou
display.clearDisplay (); // Vymažte vyrovnávaciu pamäť
Potom nakreslite predmet
testdrawline (); // Nakresli čiaru
Ukážte to na hardvéri
display.display (); // Zviditeľnite ich na hardvéri displeja!
Pred zobrazením ďalšej položky chvíľu počkajte.
oneskorenie (2000); // Počkajte 2 sekundy
V tomto prípade zobrazujeme niekoľko položiek, ako napríklad text, riadky, kruhy, posúvaný text, trojuholníky a ďalšie. Neváhajte a využite svoju predstavivosť a ukážte na týchto malých displejoch čokoľvek chcete.
Krok 10: Prispôsobenie textu a pridávanie obrázkov
Váš kód niekedy potrebuje zobraziť vlastné písma a
snímky. Ak ste veľmi dobrí v mapovaní bitov, stačí vytvoriť bajtové polia zapnutím alebo vypnutím malých diód LED na vytváraní vlastných písiem a obrázkov.
Tieto mapovania však nie som veľmi dobrý a nechcem tráviť hodiny vytváraním tabuliek bitových máp.
Aké sú teda moje možnosti? Na generovanie vlastných fontov a obrázkov spravidla používam dve webové stránky. Odkazy sú uvedené v popise nižšie.
Vlastné písma
Prejdite na webovú stránku prevodníka písem, vyberte rodinu písem, štýl, veľkosť, verziu knižnice ako „Písmo Adafruit GFX“a potom kliknite na tlačidlo „Vytvoriť“. Na pravej strane tejto stránky môžete vidieť, ako bude vaše písmo vyzerať na skutočnom displeji.
Na základe vášho výberu webová stránka vygeneruje súbor hlavičky písem. Vytvorte súbor s názvom „modified_font.h“v rovnakom priečinku, kde je váš kód, a skopírujte a uložte do neho vygenerovaný kód. Potom stačí do kódu zahrnúť súbor hlavičky, aby ste mohli používať vlastné písmo.
#include "modified_font.h"
Potom stačí pred zobrazením textu nastaviť písmo, aby ste naň mohli použiť vlastné písmo.
display.setFont (& Your_Fonts_Name);
Názov písma môžete získať z hlavičkového súboru, ktorý ste práve pridali do projektu. To je ľahké.
Pri používaní vlastných písem je pamäť vždy problémom, preto vždy berte do úvahy bajty, ktoré pamäť spotrebuje. Nezabudnite, že Arduino UNO má iba 32 kB pamäte.
Vlastné obrázky
Na zobrazenie bitmapového obrázku na obrazovke musíte najskôr vytvoriť obrázok s rozmermi 128 x 64/32.
Používam starý dobrý „MS Paint“na vytvorenie bitmapového obrázku s rozmermi 128 x 64 pixlov, ktorý potom nahrám na túto webovú stránku s prevodníkom obrázkov. Web prevádza obrázky do bajtových reťazcov, ktoré je možné použiť s displejmi Arduino a OLED.
Začnite odoslaním obrázku na webovú stránku. Potom začiarknite políčko „Invertovať farby obrazu“a zmeňte „formát výstupného kódu“na „kód Arduino“, potom vyberte orientáciu a kliknutím na tlačidlo „Generovať kód“vygenerujte bajtové pole. Sekcia „Náhľad“zobrazuje, ako bude váš obrázok vyzerať na skutočnom displeji.
Zahrnul som kód spolu s týmto návodom, ktorý môžete použiť na zobrazenie svojich obrázkov. Stačí nahradiť pole v mojom kóde tým, ktoré ste práve vygenerovali, a potom ho načítať do svojho Arduina.
Krok 11: Pripojenie 2 displejov
Pripojenie dvoch displejov 128 x 64 k vášmu projektu je jednoduché.
Stačí odpájať odpor 0Ohm z adresy 0x78 a vložiť ho na 0x7A a potom vo svojom kóde použiť adresu 0x3D namiesto predvoleného 0x3C.
Určite vás zaujíma, prečo používame adresu 0x3C a 0x3D a nie skutočné 0x78 a 0x7A. Arduino prijíma 7-bitovú adresu, a nie 8-bitovú hardvérovú adresu. Najprv teda musíme previesť 8-bitovú adresu na binárnu a potom odrezať najmenej významný bit, aby sme získali 7 bitov. Potom konvertujte 7 bitov na HEX, aby ste získali adresy 0x3C alebo 0x3D, ktoré zadáte do kódu.
Najprv inicializujte displej zadaním jedinečného názvu:
Adafruit_SSD1306 display1 (OLED_REST);
Adafruit_SSD1306 display2 (OLED_REST);
Potom vo svojom kóde použite displej 1 a displej 2 na vyvolanie úvodných príkazov s adresami zariadení v nich:
display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // zobrazenie 1 operačnej adresy 0x3C
display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // zobrazenie 2 operačnej adresy 0x3D
To je všetko, teraz môžete pokračovať a robiť čokoľvek chcete pomocou zobrazenia 1 alebo zobrazenia 2 vo zvyšku kódu. V tomto návode som uviedol príklad.
Zapojenie je úplne rovnaké ako to, čo sme urobili predtým, do značnej miery stačí pridať ďalší displej na rovnaké piny I2C buď Arduino alebo NodeMCU. Na základe adries potom MCU odošle údaje na dátový riadok I2C.
Krok 12: Pripojenie viac ako 2 displejov
Čo teraz, ak chcete pripojiť viac ako 2 displeje?
Arduino má obmedzený počet pinov, a preto k nemu nemôžete mať pripojeného viac ako určité množstvo štítov. Navyše má iba jeden pár autobusov I2C.
Ako teda môžeme k Arduinu pripojiť viac ako 2 displeje I2C? Ide o to, použiť multiplexor TCA9548.
TCA9548 umožňuje jednému mikroprocesoru komunikovať až s '64 senzormi ', všetkými s rovnakou alebo odlišnou adresou I2C, priradením jedinečného kanála ku každej zbernici slave snímača.
Keď hovoríme o odosielaní údajov dvoma káblami na viac zariadení, potrebujeme spôsob, ako ich adresovať. Je to rovnaké, ako keby poštár prichádzal po jednej ceste a hádzal poštové balíky do rôznych domov, pretože sú na nich napísané rôzne adresy.
Multiplexor sa pripája k riadkom 3V3, GND, SDA a SCL mikroovládača. Slave snímače sú pripojené k jednému z ôsmich portov SCL/SDA slave na doske. Kanály sa vyberú odoslaním TCA9548A jeho adresy I2C (0x70 {predvolené} - 0x77), za ktorou nasleduje číslo kanála (0b00000001 - 0b10000000). Môžete mať maximálne 8 týchto multiplexorov spojených dohromady na adresách 0x70-0x77, aby ste mohli ovládať 64 rovnakých adresovaných častí I2C. Pripojením troch bitov adresy A0, A1 a A2 k VIN získate rôznu kombináciu adries. Toto podrobne vysvetlím v mojom nasledujúcom návode na odpočinkovej doske TCA9548A. Teraz stačí pripojiť 8 OLED k tejto doske a rýchlo sa pozrieť na kód.
Pripojenie:
VIN až 5 V (alebo 3,3 V)
GND na zem
Hodiny SCL až I2C
Údaje SDA až I2C
Potom zapojte senzory do VIN, GND a použite jednu z multiplexovaných zberníc SCn / SDn
Teraz kód Int umožňuje začať zahrnutím knižnice „Wire“a definovaním adresy multiplexorov.
#include "Wire.h"
#zahrnúť
#define Adresa MUX_Address 0x70 // TCA9548A Adresa snímača
Potom musíme vybrať port, s ktorým chceme komunikovať, a odoslať naň údaje pomocou tejto funkcie:
void tcaselect (uint8_t i) {
ak (i> 7) vráti;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Ďalej budeme inicializovať zobrazenie v sekcii nastavenia volaním „u8g.begin ();“pre každý displej pripojený k MUX „tcaselect (i);“
Po inicializácii potom môžeme robiť, čo chceme, iba volaním funkcie „tcaselect (i);“kde „i“je hodnota multiplexovanej zbernice a potom sa podľa toho odošlú údaje a hodiny.
Krok 13: Výhody a nevýhody
Obraz OLED je nádherný. OLED však majú tiež
nevýhody. Pretože obrazovky OLED obsahujú organický materiál, ich životnosť je kratšia ako pri displejoch LCD. Mnoho OLED displejov sa navyše po dlhšom zobrazení rovnakého obrázku zapáli. Po napálení zostane obrázok na obrazovke aj po zobrazení iného obrázku. Dbajte preto na to, aby ste obrazovku obnovovali každých niekoľko sekúnd. Voda môže okamžite poškodiť organické materiály týchto displejov.
Výhody
Nie je potrebné podsvietenie
Displeje sú veľmi tenké a ľahké
Nízka spotreba energie
Pozorovacie uhly sú širšie ako LCD
Jas a kontrast sú skvelé
Vysoká rýchlosť a nízka doba odozvy
Sýto čierna farba
Nevýhody
Nákladná technológia
Krátky životný cyklus
OLEDS častejšie spália
Poškodenie vodou
Krok 14: Bežné chyby
Na záver tutoriálu si povieme o niekoľkých bežných chybách
ľudia robia pri používaní týchto displejov:
- Pred použitím vo svojom projekte vždy trikrát skontrolujte kolíky
- V hlavičkovom súbore a vo svojom kóde vyberte správnu adresu knižnice
#define SSD1306_I2C_ADDRESS 0x3C // in Adafruit_SSD1306.h
a
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // vo vašom kóde
Ak je adresa nesprávna, OLED nič nezobrazí
- Pred použitím musíte v ovládači zmeniť veľkosť displeja. Ak sa nezmení, pri pokuse o overenie kódu sa zobrazí chybové hlásenie
#error ("Výška je nesprávna, opravte prosím Adafruit_SSD1306.h!");
- Ak používate NodeMCU, uistite sa, že ste vymenili OLED_RESET zo 4 za LED_BUILTIN
#define OLED_RESET LED_BUILTIN
Mám ľudí z scény, ktorí pomocou tohto OLED displeja vyrábajú najrôznejšie veci. Niektorí dokonca vytvorili videohry a všetko. Naozaj ma nezaujíma tvorba videohier pomocou tohto malého displeja. Teraz vás však nechám preskúmať vašu predstavivosť a prísť s úžasnými nápadmi.
Krok 15: Odkazy
- Blog:
- Pridať obrázok:
- Vlastný text:
- Zobrazovacia knižnica Adafruit:
-Knižnica Adafruit GFX:
- knižnica u8glib: https://code.google.com/archive/p/u8glib/ alebo
Ak chcete použiť menší displej, použite predvolený 128_32, inak pre väčší displej komentujte 128_32 a odkomentujte 128X64 NO_ACK vo svojom kóde (stačí odkomentovať typ obrazovky, ktorú používate) (písma sú v knižnici písem)
Odporúča:
Waveshare E-ink Display Presný voltmeter (0-90v DC) With Arduino Nano: 3 Steps
Presný voltmetr Waveshare E-ink (0-90v DC) s Arduino Nano: V tomto návode používam 2,9 palcový displej Waveshare E-Paper s Arduino Nano, deličom napätia a ADS1115 na zobrazenie presného napätia až 90 volty DC na displeji E-Paper. Tento návod kombinuje tieto dva predchádzajúce projekty:- Ardui
LCD displej I2C / IIC - Použite SPI LCD na I2C LCD displej pomocou modulu SPI až IIC s Arduino: 5 krokov
LCD displej I2C / IIC | Použite SPI LCD na I2C LCD displej pomocou modulu SPI až IIC s Arduino: Ahoj, pretože normálny SPI LCD 1602 má príliš veľa káblov na pripojenie, takže je veľmi ťažké prepojiť ho s arduino, ale na trhu je k dispozícii jeden modul, ktorý môže preveďte displej SPI na displej IIC, takže potom potrebujete pripojiť iba 4 vodiče
Klon Arduboy s displejom Arduino Nano a I2C Oled: 3 kroky
Klon Arduboy s displejom Arduino Nano a I2C Oled: Lacná verzia klonu Arduboy, s ktorou si môžete zahrať množstvo originálnych hier Arduboy
Tutorial to Interface OLED 0,91inch 128x32 With Arduino UNO: 7 Steps (with Pictures)
Tutorial to Interface OLED 0,91inch 128x32 with Arduino UNO: This tutorial is will learn to some basics on using OLED 0,91inch LCD128x32 with Arduino UNO
Tutorial for ESP8266 ESPDuino NodeMcu SPI Module using Arduino Uno: 6 Steps
Tutorial pre modul ESP8266 ESPDuino NodeMcu SPI využívajúci Arduino Uno: Popis Tento TFT LCD displej s modulom ESP8266 ESPDuino NodeMcu SPI s rozlíšením 128 x 128 a 262 farbami používa rozhranie SPI na komunikáciu s ovládačmi, ako sú Arduino Uno a ESP8266. Vlastnosti: Veľkosť: 1,44 palca Rozhranie: Rozlíšenie SPI: 128