- Požadovaný hardware:
- Seznámení s OLED displeji:
- Hardware a připojení:
- Programování OLED displeje SSD1306 pro Arduino:
Většina z nás by byla obeznámena s 16 × 2 Dot matrix LCD displejem, který se používá ve většině projektů k zobrazování některých informací uživateli. Ale tyto LCD displeje mají mnoho omezení v tom, co mohou dělat. V tomto tutoriálu se budeme učit o OLED displejích a jak je používat Arduino. Na trhu je k dispozici spousta typů OLED displejů a existuje mnoho způsobů, jak je uvést do provozu. V tomto tutoriálu probereme jeho klasifikace a také to, které bude pro váš projekt nejvhodnější.
Požadovaný hardware:
- 7pinový 128 × 64 OLED displejový modul (SSD1306)
- Arduino UNO / Nano
- Nepájivá deska
- Připojení vodičů
- Počítač / notebook
Seznámení s OLED displeji:
Termín OLED znamená „ Organic Light emitting diode“ , používá stejnou technologii, která se používá ve většině našich televizorů, ale ve srovnání s nimi má méně pixelů. Je opravdu zábavné mít tyto skvěle vypadající zobrazovací moduly propojené s Arduino, protože díky nim budou naše projekty vypadat skvěle. Zde jsme se zabývali celým článkem o OLED displejích a jejich typech.
Používáme monochromatický 7pinový displej SSD1306 0,96 ”OLED. Důvodem pro výběr tohoto displeje je, že může pracovat na třech různých komunikačních protokolech, jako je režim SPI 3 Wire, režim SPI se čtyřmi vodiči a režim IIC. Tento výukový program se bude zabývat tím, jak používat modul ve 4vodičovém režimu SPI, protože se jedná o nejrychlejší a výchozí režim komunikace.
Piny a jejich funkce jsou vysvětleny v tabulce níže.
Číslo PIN |
Název PIN |
Ostatní jména |
Používání |
1 |
Gnd |
Přízemní |
Uzemňovací kolík modulu |
2 |
Vdd |
Vcc, 5V |
Napájecí kolík (tolerovatelný 3-5 V) |
3 |
SCK |
D0, SCL, CLK |
Funguje jako hodinový kolík. Používá se pro I2C i SPI |
4 |
SDA |
D1, MOSI |
Datový kolík modulu. Používá se pro IIC i SPI |
5 |
RES |
RST, RESET |
Resetuje modul (užitečné během SPI) |
6 |
DC |
A0 |
Datový příkazový kolík. Používá se pro protokol SPI |
7 |
CS |
Výběr čipu |
Užitečné, když se v protokolu SPI používá více než jeden modul |
V tomto tutoriálu budeme modul jednoduše ovládat v režimu 4-Wire SPI, zbytek necháme na nějaký další tutoriál.
Komunita Arduino nám již poskytla mnoho knihoven, které lze přímo použít, aby to bylo mnohem jednodušší. Vyzkoušel jsem několik knihoven a zjistil jsem, že knihovna Adafruit_SSD1306 se velmi snadno používá a má několik grafických možností, proto v tomto tutoriálu použijeme totéž. Pokud však váš projekt má omezení paměti / rychlosti, zkuste použít knihovnu U8g, protože pracuje rychleji a zabírá méně programové paměti.
Hardware a připojení:
Schéma zapojení pro SSD1306 OLED propojení s Arduino je opravdu jednoduchá a je uveden níže
Jednoduše jsme navázali komunikaci SPI mezi modulem OLED a Arduino. Protože OLED běží na 3V-5V a spotřebovává velmi málo energie, nepotřebuje externí napájecí zdroj. Pro připojení můžete jednoduše použít dráty nebo použít prkénko, které jsem použil, aby bylo snadné experimentovat. Připojení je také uvedeno v příběhu níže
S.No |
Připnout název na OLED modulu |
Připnout jméno na Arduino |
1 |
GND, země |
Přízemní |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, výběr čipu |
12 |
Poznámka: Nebudete moci vizualizovat žádné podsvícení / záře na modulu OLED pouhým napájením. Musíte si jej správně naprogramovat, abyste si všimli jakýchkoli změn na OLED displeji.
Programování OLED displeje SSD1306 pro Arduino:
Jakmile jsou připojení připravena, můžete začít programovat Arduino. Jak již bylo řečeno, pro práci s tímto modulem OLED budeme používat knihovnu Adafruit a knihovnu GFX. Podle pokynů vyzkoušejte spuštění OLED displeje.
Krok 1: Stáhněte si knihovnu Adafruit a knihovnu GFX ze služby Github pomocí níže uvedeného odkazu
- Knihovna Adafruit
- Grafická knihovna GFX
Krok 2: Měli byste si stáhnout dva soubory ZIP. Nyní je přidejte do svého Arduina podle následujícího postupu
Skica-> Zahrnout knihovnu -> Přidat knihovnu Zip, jak je znázorněno níže. Poté vyberte knihovnu, kterou jsme právě stáhli. Můžete vybrat pouze jednu knihovnu najednou, proto musíte tento krok opakovat znovu.
Krok 3: Spusťte ukázkový program výběrem Soubor-> Příklady-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino, jak je znázorněno na obrázku níže.
Krok 4: Uvnitř ukázkového programu nad řádek 64 přidejte řádek „#define SSD1306_LCDHEIGHT 64“, jak je znázorněno na obrázku níže.
Krok 5: Nyní nahrajte program a měli byste vidět, jak se OLED displej spouští s výchozím ukázkovým kódem Adafruit, jak je znázorněno na následujícím obrázku. Plný pracovní Video je uveden na konci.
Tento ukázkový program zobrazuje všechny možné grafiky, které lze zobrazit na obrazovce OLED. Tento kód by měl stačit na vytváření bitmap, kreslení čar / kruhů / obdélníků, hraní s pixely, zobrazování znaků a řetězců s různými typy písma a velikostí atd…
Pokud chcete lépe porozumět knihovně a jejím funkcím, můžete si přečíst dále. Každá část kódu je rozdělena a vysvětlena pomocí řádků komentářů. Celý kód je uveden na konci tohoto článku
Zobrazení a vymazání obrazovky:
Psaní na OLED obrazovce je jako psaní na černou tabuli, musíme zapsat hodnoty a poté je vyčistit, než bude možné je přepsat. Následující příkazy se používají k zápisu a vymazání displeje
display.display (); // Zápis na zobrazení display.clearDisplay (); // vymaže displej
Zobrazení proměnné znaků:
K zobrazení obsahu uvnitř proměnné lze použít následující kód.
char i = 5; // proměnná, která se má zobrazit display.setTextSize (1); // Vyberte velikost textu display.setTextColor (WHITE); // pouze pro černobílé zobrazení je možné zobrazení.setCursor (0,0); // 0,0 je levý horní roh displeje OLED. Write (i); // Napište proměnnou, která se má zobrazit
Kreslení čáry, kruhu, obdélníku, trojúhelníku:
Pokud chcete na displej přidat nějaké symboly, můžete použít následující kód k nakreslení některého z následujících
display.drawLine (display.width () - 1, 0, i, display.height () - 1, BÍLÁ); // void drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, BÍLÁ); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Kreslení řetězce na obrazovku:
Lze použít následující část kódu o zobrazení jakékoli zprávy na obrazovce na konkrétním místě a velikosti
display.setTextSize (2); // nastavení velikosti textu display.setTextColor (WHITE); // nastavení barev display.setCursor (10,0); // Řetězec začíná na 10,0 (x, y) display.clearDisplay (); // Guma jakéhokoli předchozího zobrazení na obrazovce display.println ("Circuit Digest"); // Zde vytiskněte řetězec „Circuit Digest“ display.display (); // odeslání textu na obrazovku
Zobrazení bitmapového obrázku:
Jednou nedůvěryhodnou věcí, kterou lze s modulem OLED udělat, je to, že jej lze použít k zobrazení bitmap. Následující kód se používá k zobrazení bitmapového obrázku
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11110010, B111001000, B11111110, B11111000, B01111110, 11, 11, 11, 11 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmapa, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Jak vidíte, pro zobrazení obrázku musí být bitmapová data uložena v paměti programu ve formě směrnice PROMGMEM. Jednoduše řečeno, musíme instruovat OLED displej, co má dělat s každým pixelem, tím, že mu předáme sekvenci nebo hodnoty z pole, jak je uvedeno výše. Toto pole bude obsahovat bitmapová data obrázku.
Může to znít komplikovaně, ale pomocí webového nástroje je velmi snadné převést obrázek na hodnoty bitové mapy a načíst je do výše uvedeného pole.
Jednoduše načtěte obrázek a upravte nastavení, abyste získali preferovaný náhled obrázku. Poté klikněte na „Generovat kód“, zkopírujte kód a vložte jej do svého pole. Nahrajte program a jste hotovi. Snažil jsem se zobrazit logo Batmana a tak to dopadlo.
S těmito knihovnami můžete stále dělat spoustu věcí. Chcete-li znát úplné možnosti, navštivte stránku Primitivní obrázky grafiky Adafruit GFX.
Doufám, že jste to spustili a jste připraveni implementovat OLED displej do některých vašich projektů. Pokud jste měli nějaký problém, sdílejte je v sekci komentářů a já se pokusím je napravit.