- OLED kijelző
- Szükséges alkatrészek
- SPI tűkapcsolatok a NodeMCU és az OLED kijelző között
- NodeMCU programozása az OLED interfészhez
- Kép konvertálása bitképes értékekké
Ebben az oktatóanyagban az OLED kijelzőt összekapcsoljuk a NodeMCU ESP8266-tal. A NodeMCU egy nyílt forráskódú IoT platform, amely firmware-t tartalmaz, amely az Espressif Systems olcsó, Wi-Fi-t támogató ESP8266 Wi-Fi SoC-jén fut. GPIO csatlakozóval rendelkezik más perifériák csatlakoztatásához, és támogatja a soros kommunikációt az SPI, I2C és UART érintkezők segítségével. Emellett rendelkezik csapokkal az ADC és a PWM számára. Korábban összekapcsoltuk az OLED-et más mikrovezérlővel, beleértve az ESP család vezérlőjét (ESP32):
- Összekötő SSD1306 OLED kijelző és Raspberry Pi
- Összekötő SSD1306 OLED kijelző Arduinóval
- Építsen intelligens órát az OLED kijelző és az Android Phone összekapcsolásával az Arduino segítségével
- Internet óra az ESP32 és az OLED kijelző használatával
Ebben az oktatóanyagban az SPI protokollt fogjuk használni a monokróm 7 tűs SSD1306 0,96 OLED kijelző és a NodeMCU összeköttetéséhez, és megtanuljuk megjeleníteni a képet az OLED képernyőn a NodeMCU ESP8266 segítségével.
OLED kijelző
A szerves fénykibocsátó dióda (OLED) egyfajta fénykibocsátó dióda, ahol egy szerves vegyületből készült fénykibocsátó réteg fényt bocsát ki, amikor elektromos áramot táplálnak. Ezt a réteget két elektróda közé helyezzük. Ezt a technológiát olyan kijelzőkön használják, mint a számítógépek, televíziók, okostelefonok stb. Az OLED kijelzők saját világítással rendelkeznek, és nincs szükségük háttérvilágításra, mint az LCD-n, ezért energiatakarékosak és sok mikrovezérlővel használják őket. Az OLED kijelzők LCD-vel történő használatának további előnye, hogy nagy és jobb minőségű grafikát jelenít meg az OLED-eken. Tudjon meg többet az OLED Display technológiáról itt.
Különböző típusú OLED kijelzők kaphatók a piacon. Ezeket a kijelzőket szín, csapok száma, vezérlő IC és a képernyő mérete alapján jellemzik. A színek alapján az OLED monokróm kék, monokróm fehér és sárga / kék színben kapható. A kommunikáció alapján pedig főleg kétféle OLED érhető el - 3pin és 7pin. A 3 tűs OLED I2C kommunikációs módban, a 7 tűs OLED pedig SPI vagy I2C módban használható.
Ebben az oktatóanyagban „ Monokróm 7 tűs SSD1306 0,96 ” OLED kijelzőt fogunk használni, amely 128 pixel széles és 64 pixel hosszú. Ez a kijelző mind az SPI, mind az I2C kommunikációs protokollon működhet. Az oktatóanyagban az SPI protokollt fogjuk használni. Az OLD-n található az SSD1306 IC, amely segít megjeleníteni a képpontokat a képernyőn.
Szükséges alkatrészek
- Fekete-fehér 7 tűs SSD1306 0,96 ”OLED kijelző
- NodeMCU ESP8266
- Mikro USB kábel
- Kenyérlemez
- Férfi-hím jumper vezetékek
SPI tűkapcsolatok a NodeMCU és az OLED kijelző között
Az alábbiakban a 7 tűs OLED kijelző és a NodeMCU összekapcsolásának áramköri ábrája az SPI soros kommunikációs protokollal történő kommunikációhoz.
Az alábbi táblázat az OLED Display és a NodeMCU ESP8266 közötti kapcsolatokat mutatja. A GND tű a NodeMCU-hoz kerül Az SDA pin, amely MOSI pin az SPED interfész OLED-jén, a NodeMCU D7-jéhez kerül. A RESET tű a D3-ra megy. DC, az adatparancs-tű a NodeMCU D2-jéhez van csatlakoztatva. Az utolsó tű a CS a D8-hoz megy, a NodeMCU chip kiválasztása.
Nem. |
Oled kijelző |
NodeMCU |
1 |
GND |
GND |
2 |
VDD |
3.3V |
3 |
SCK |
D5 |
4 |
MOSI (SPI) vagy SDA (I2C) |
D7 |
5. |
VISSZAÁLLÍTÁS |
D3 |
6. |
DC |
D2 |
7 |
CS |
D8 |
Itt az „ Adafruit _SSD1306.h” és az „ Adafruit_GFX.h ” könyvtárat fogjuk használni az OLED és a NodeMCU összekapcsolására. Nyissa meg az Arduino IDE alkalmazást, és telepítse az Arduino IDE legújabb verzióját ( Vázlat> Könyvtár belefoglalása> Könyvtárak kezelése vagy Ctrl + Shift_I ).
Mivel az OLED megjelenítési azonosítónk pixelmérete 128x64, ezért változtatnunk kell az Adafruit_SSD1306 fejlécfájljában. Nyissa meg az Arduino könyvtárakat, lépjen az Adafruit_SSD1306 oldalra, és nyissa meg annak fejlécfájlját ( Adafruit _SSD1306.h ). Írja le az „ #define SSD1306_128_32 ” sort, és az alábbi képen látható módon törölje a (z) „#define SSD1306_128_64 ” sort, majd mentse a fájlt. Alapértelmezés szerint ennek a könyvtárnak a „# define SSD1306_128_32 ” a neve.
Végül változtassa meg az „ ssd1306_128x64_spi ” Adafruit SSD1306 példában szereplő PIN-kódokat az abve látható táblázat szerint. Most, amikor az OLED kijelző és a NodeMCU megfelelő összekapcsolása után futtatja a vázlatot, az OLED kijelzőn megjelenik az Adafruit logója, amely alapértelmezés szerint a könyvtárba van mentve. Az Adafruit logó után sok más grafikát jelenít meg, például vonalakat, téglalapokat, háromszöget, köröket, húrokat, számokat, animációkat és bitképeket. Itt Ebben az oktatóanyagban megtanuljuk, hogyan jelenítsen meg bármilyen képet az OLED-en a NodeMCU ESP8266 segítségével.
NodeMCU programozása az OLED interfészhez
Mint mindig a teljes kódot adjuk meg a végén, itt részletesen ismertettük a kódot.
Indítsa el a kódot a szükséges könyvtárak importálásával. Mivel SPI protokollt használunk, ezért importálni fogjuk az „SPI.h” könyvtárat, valamint az „Adafruit_GFX.h” és az „Adafruit_SSD1306.h” fájlokat is az OLED kijelzőhöz.
#include
Az OLED méretünk 128x64, ezért a képernyő szélességét és magasságát 128, illetve 64 értékre állítjuk be. Tehát határozza meg a NodeMCU-hoz csatlakoztatott OLED csapok változóit az SPI kommunikációhoz.
#define SCREEN_WIDTH 128 // OLED kijelző szélesség, pixelben #define SCREEN_HEIGHT 64 // OLED kijelző magasság, pixelben // Nyilatkozat az SPD szoftverrel összekapcsolt SSD1306 kijelzőről (alapértelmezett eset): #define OLED_MOSI D7 #define OLED_CLK D5 #define OLED_DC D2 #define OLED_CS D8 #define OLED_RESET D3 Adafruit_SSD1306 kijelző (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Inicializálja az OLED-kijelzőt az SSD1306_SWITCHCAPVCC használatával a 3,3 V belső generálásához a kijelző inicializálásához.
if (! display.begin (SSD1306_SWITCHCAPVCC)) { Serial.println (F ("Az SSD1306 kiosztása nem sikerült")); for (;;); // Ne haladj, hurok örökké }
Az OLED képernyő megjelenítése törlődik, mielőtt bármit is megjelenítene a display.clearDisplay () függvény meghívásával. Mi betűméret beállítása 2 meghívásával funkció setTextSize (font-size), és a szöveg színét és kurzorpozícióba segítségével setTextColor és setCursor funkciót . A Display.display () paranccsal lehet adatokat átvinni az SSD1306 vezérlő belső memóriájába. Az átvitel után a képpont megjelenik a képernyőn. Most elkezdhetjük különféle módon görgetni a szöveget a display.startscrollright (x-pos, y-pos) és a display.startscrollleft (x-pos, y-pos) meghívásával . a késleltetés funkcióban megadott időre. A szöveg görgetése a display.stopscroll () funkcióval állítható le.
void testscrolltext (void) {display.clearDisplay (); // törölje az OLED display képernyőjét.setTextSize (2); // Rajzoljon 2X méretarányú szöveges kijelzőt.setTextColor (WHITE); display.setCursor (0, 0); display.println (F ("ÁRAM")); display.println (F ("DIGEST")); display.display (); // A kezdeti szövegkésleltetés megjelenítése (100); // Görgetés különböző irányokba, közben szüneteltetve: display.startscrollright (0x00, 0x0F); késés (2000); display.stopscroll (); késés (1000); display.startscrollleft (0x00, 0x0F); késés (2000); display.stopscroll (); késés (1000); display.startscrolldiagright (0x00, 0x07); késés (2000); display.startscrolldiagleft (0x00, 0x07); késés (2000); display.stopscroll (); késés (1000); }
Hívjuk display.drawBitmap () függvény, amely úgy 6 paraméter (x-koordináta, y koordináta, bitmap tömb, szélesség, magasság és szín), hogy dolgozzon a képet OLED. Mivel a kijelzőnk mérete 128x64, ezért a szélességet és a magasságot 128-nak, illetve 64-nek állítjuk be. Itt a bitkép tömb tartalmazza a pixel információkat, amelyek a kép létrehozásához létrehozzák a képpontot a képernyőn. Ez a bitmap tömb online előállítható, amelyet az alábbiakban ismertetünk, vagy sok szoftver áll rendelkezésre a kép bitmap tömbvé alakításához.
const aláíratlan karakter myBitmap PROGMEM = { 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff , 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff , 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff és 0xff 0xff, 0xff, 0xff, 0xc7, 0x80, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x01, 0xcx, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0F, 0x03, 0xff, 0xC0, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1e, 0x03, 0x3f, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x03, 0x3f, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x3c, 0x03, 0x7f, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xC0, 0x7c, 0x03, 0xf0, 0x3f, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x78, 0x00, 0xc0, 0x0f, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x00, 0x00, 0x07, 0xe0, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xf0, 0x00, 0x00, 0x03, 0xf8, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x03, 0xe0, 0x00, 0x0f, 0x00, 0x7e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xc0, 0x3f, 0xff, 0xff, 0xff 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x7f, 0xf9, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff 0x80, 0xff, 0xf9, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0x1f, 0x80, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff0, 0xff, 0xff0 0x06, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff0xx, 0xff, 0xc0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x1e, 0x01, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x03, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7c, 0x03, 0x3f, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xx 0xf8, 0x01, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0xb0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0x18, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0xbc, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0xff 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff0, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0x00, 0x3, 0x00, 0x00 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xx 0x80, 0x03, 0xf0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xc0, 0x00, 0x00, 0x0f, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x3f, 0xf0, 0x00, 0x1x, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x0E, 0x30, 0x00, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0x70, 0x00, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xe0, 0x1b, 0xfc, 0x01, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xc0, 0x7f, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff 0x7f, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x67, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0xff8, 0x00, 0x00, 0xff, 0x00, 0x1x, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7e, 0x00, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xC0, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xx 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; display.drawBitmap (35, 0, myBitmap, 128, 64, FEKETE, FEHÉR); display.display ();
Kép konvertálása bitképes értékekké
Online bitképet a http://javl.github.io/image2cpp/ webhelyről lehet létrehozni. Töltse fel a OLED-en megjeleníteni kívánt képfájlt, és állítsa 128x64 méretre. Megjelenik egy előnézeti kép, majd generálódik a bitkép tömb.
A képernyőképek alatt látható a kép bitkép értékének előállításának folyamata.
Végül töltse fel a teljes kódot a NodeMCU ESP8266 fájlba, és a kép megjelenik az OLED képernyőn. Itt a CircuitDigest logót jelenítjük meg az OLED kijelzőn.