Tartalomjegyzék:

OLED I2C kijelző Arduino/NodeMCU bemutató: 15 lépés
OLED I2C kijelző Arduino/NodeMCU bemutató: 15 lépés

Videó: OLED I2C kijelző Arduino/NodeMCU bemutató: 15 lépés

Videó: OLED I2C kijelző Arduino/NodeMCU bemutató: 15 lépés
Videó: #5 Жидкокристаллический дисплей I2C || ESP8266 FLPROG ЛЕСТНИЧНАЯ ЛОГИКА 2024, Július
Anonim
Image
Image

A legelső program, amelyet akkor ír, amikor elkezdi tanulni a

új programozási nyelv: "Hello World!".

Maga a program nem tesz mást, mint egy „Hello World” szöveget nyomtat a képernyőn.

Tehát hogyan érhetjük el, hogy Arduino -nk a "Hello World!"

Ebben a videóban megmutatom, hogyan kell kezdeni a kis 0.91 (128x32) és 0.96 (128x64) I2C OLED kijelzőkkel.

Több száz oktatóanyag található a weben, amelyek ugyanazt magyarázzák különböző módokon, de nem találtam olyat, amely mindent elárulna az OLED kijelzőről és annak használatáról különböző forgatókönyvekben. Beletelt egy kis időbe, mire mindent megoldottam. Szóval, úgy gondoltam, készítsek egy oktatóanyagot a tanultakról, és egyesítsem az OLED -kijelző összes funkcióját és felhasználási módját a projektjeinkben.

1. lépés: Dolgok, amelyeket ma tanulunk

Hardverkövetelmény
Hardverkövetelmény

Ebben a videóban a következőkről fogunk beszélni:

- Mi az OLED kijelző?

- Akkor közelebbről megvizsgáljuk a 0.91 (128x32) és 0.96 (128x64) I2C OLED kijelzőket

- Ezután az Adafruit Library telepítéséről fogunk beszélni az Arduino IDE -hez

- Ezután összekötjük a NodeMCU -t és az Arduino -t egy OLED kijelzővel

- Ezután megnézzük a kódot, és megjelenítünk rajta néhány grafikát és szöveget

- Beszélünk az egyéni betűtípusok alkalmazásáról és a képek megjelenítéséről is

- Ezután több OLED-et csatlakoztatunk egy mikrovezérlőhöz az I2C Multiplexer segítségével

- Végezetül néhány gyakori hibáról fogunk beszélni, amelyeket az emberek az OLED kijelzők használata során elkövetnek

2. lépés: Hardverkövetelmények

Ehhez az oktatóanyaghoz szükségünk van:

- Breadboard

- A 0,91 "(128x32) és 0,96" (128x64) I2C OLED kijelző

- Arduino UNO/NANO (ami praktikus)

- NodeMCU

- TCA9548A I2C multiplexer

- Kevés csatlakozó kábel

- és egy USB kábel a kód feltöltéséhez

3. lépés: Mi az OLED kijelző?

Mi az OLED kijelző?
Mi az OLED kijelző?
Mi az OLED kijelző?
Mi az OLED kijelző?

Az OLED vagy szerves fénykibocsátó dióda fénykibocsátó

dióda (LED), amelyben a sugárzó elektrolumineszcens réteg szerves vegyületréteg (millió kis LED -es lámpa), amely fényt bocsát ki elektromos áram hatására.

Az OLED-eket digitális kijelzők létrehozására használják olyan eszközökön, mint a televízió képernyő, számítógép-monitor, hordozható rendszer, például mobiltelefon, kézi játékkonzol és PDA. Az OLED kijelző háttérvilágítás nélkül működik, mert látható fényt bocsát ki.

4. lépés:

Kép
Kép

Sokféle OLED kijelző érhető el a

piac alapján

- Méretek

- Szín

- Márkák

- Jegyzőkönyv

- SPI (soros perifériás interfész) vagy I2C

-Passzív mátrix (PMOLED) vagy aktív mátrix (AMOLED) vezérlési séma

Ebben az oktatóanyagban a csatlakozásról fogok beszélni

kék színű 0,91 (128x32 OLED) és 0,96 (128x64 OLED) I2C OLDE kijelző Arduino NANO és NodeMCU számára. Az I2C busz technológia csak 2 tűt használ az MCU -ból, így rengeteg más érzékelőhöz is rendelkezésre áll.

5. lépés: Közelebbről

Közelebbről
Közelebbről
Közelebbről
Közelebbről
Közelebbről
Közelebbről

Nézzük meg közelebbről ezt a két kijelzőt.

E kijelzők hátoldalán halom SMD kondenzátor és ellenállás található a fedélzeten; de mivel ez egy I2C eszköz, csak ez a 2 érintkező (SCL és SDA) érdekel minket

A kijelző mindössze négy vezetékkel csatlakozik az Arduino -hoz - kettő a tápellátáshoz (VCC és GND), kettő pedig az adatokhoz (soros óra SCL és

soros adat SDA), ami nagyon egyszerűvé teszi a kábelezést. Az adatkapcsolat I2C (I²C, IIC vagy Inter-Integrated Circuit), és ezt az interfészt TWI-nek (Two Wire Interface) is nevezik.

- A fedélzeti csapok különböző sorrendben lehetnek, ezért mindig háromszor ellenőrizze, mielőtt csatlakoztatja a projekthez.

- Az üzemi feszültség 3–5 V között van, de a legjobb, ha a gyártó adatlapján található útmutatást használja.

- Néha 2 kijelzőt kell használnunk projektjeinkben. Tehát hogyan érhetjük el ezt?

A trükk az, hogy konfigurálható cím legyen a kijelzőn. Ennek az egységnek a konfigurálható címe 0x78 és 0x7A között van. Csak a 0Ohm ellenállás egyik oldalról való forrasztása és a másik oldalra történő bekötése vagy egy globális forrasztás elhelyezésével megváltoztathatjuk a címet. Részletesen fogunk beszélni róla, amikor több bemutatót csatlakoztatunk egy Arduino -hoz az oktatóanyag későbbi szakaszában.

A képen ezek a kijelzők nagyon nagynak tűnnek. De gyakorlatilag kicsik. 128 x 32/64 méretű OLED képpontokból készülnek, és nem igényelnek háttérvilágítást. Csak nézd meg ezt, és nézd meg, milyen kicsi. Annak ellenére, hogy kicsik, nagyon hasznosak lehetnek bármilyen elektronikus projektben.

6. lépés: Könyvtár

Könyvtár
Könyvtár
Könyvtár
Könyvtár
Könyvtár
Könyvtár

Számos könyvtár áll rendelkezésre ezek szabályozására

kijelzők. Korábban az "u8glib könyvtárat" használtam, de az AdaFruit könyvtárat nagyon könnyen megértem és használom a projektjeinkben. Tehát ebben az oktatóanyagban az AdaFruit könyvtárat fogom használni.

Az OLED kijelző vezérléséhez szüksége lesz az "adafruit_GFX.h" és az "adafruit_SSD1306.h" könyvtárra.

A könyvtárat kétféleképpen töltheti le és telepítheti Arduino IDE -jére.

1. módszer

Lépjen a "Könyvtárkezelő" oldalra, és keressen rá az "adafruit_SSD1306" és az "adafruit_gfx" kifejezésre.

Válassza ki a legújabb verziót, és nyomja meg a Telepítés gombot.

Telepítés után használhatja ezeket a könyvtárakat a programjában.

2. módszer

Ez a két könyvtár a github -ról is letölthető (mindkettő szükséges):

Az alábbi leírásban megadom a linkeket.

A kijelző könyvtár:

A GFX könyvtár:

A letöltés után másolja az Adafruit_SSD1306-master mappát a letöltött tömörített fájlból az Arduino libraries mappába. Ez a mappa rendszerint a Dokumentumok> Arduino> könyvtárakban található Windows rendszereken. Linux rendszeren általában az otthoni mappában> Arduino> könyvtárakban található. Végül az Arduino könyvtár mappájában nevezze át az Adafruit_SSD1306-master mappát Adafruit_SSD1306-ra. Még ha nem is nevezi át, akkor jó.

7. lépés:

Kép
Kép

Most nézzük meg az "Adafruit_SSD1306.h"

fájlt

Két dolgot kell tudnunk ebben a könyvtárban:

1. Ha a kisebb kijelzőt szeretné használni, akkor az alapértelmezett 128_32 -et használja, különben a nagyobb kijelzőhöz írja be a 128_32 -et, és szüntesse meg a 128_64 -es megjegyzést.

2. Ha forrasztotta a táblán a 0x7A címet (amiről később beszélünk), akkor használja a 7 bites 0x3D címet a nagyobb kijelzőkhöz, ellenkező esetben használja az alapértelmezett 0x3C címet. A kisebb kijelzőknél a cím 0x3C.

8. lépés: 128 X 64/32 OLED -ek bekötése

128 X 64/32 OLED -ek bekötése
128 X 64/32 OLED -ek bekötése

Kezdjük a NodeMCU csatlakoztatásával a kijelzőhöz.

Az első és legfontosabb dolog, amit meg kell jegyezni, hogy néhány kijelzőn előfordulhat, hogy a GND és a VCC tápcsapjait felcserélték. Ellenőrizze a kijelzőjét, és győződjön meg arról, hogy megegyezik a képpel. Ha a csapokat felcserélték, győződjön meg arról, hogy megváltoztatja az Arduino vagy a NodeMCU csatlakozásait.

- NodeMCU OLED vezetékek

OLED VCC - NodeMCU 3.3V

OLED GND - NodeMCU GND

OLED SCL - NodeMCU D1

OLED SDA - NodeMCU D2

- Arduino Uno OLED vezeték

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino Uno A5

OLED SDA - Arduino Uno A4

- Arduino MEGA 2560 OLED vezeték

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino MEGA 2560 pin 21

OLED SDA - Arduino MEGA 2560 pin 20

9. lépés: Kód

Kód
Kód
Kód
Kód
Kód
Kód
Kód
Kód

Az Adafruit könyvtár nagyon jó példákat tartalmaz mindkettőre

128x32 és 128x64 kijelző.

A könyvtár a Fájl> Példák> Adafruit SSD1306>, majd az Arduino IDE megjelenítési típusa alatt található.

A 128x32 I2C példát fogjuk használni, és úgy módosítjuk, hogy mind a 128x64, mind a 128x32 kijelzők öklével működjön, ha csatlakoztatjuk egy Arduino -hoz, majd egy NodeMCU kártyához.

A kód azzal kezdődik, hogy mindkét Adafruit könyvtárat tartalmazza. Ebben az oktatóanyagban csak a kód azon részeire fogok hangsúlyt fektetni, amelyek szükségesek ahhoz, hogy betöltsük mind a táblákat, mind a kijelzőket. Ha többet szeretne megtudni a kódról, írjon megjegyzést a blogomban vagy az alábbi megjegyzések részben, és megpróbálok visszahívni Önt.

- Először a kódot egy 128x32 -es kijelzőhöz csatlakoztatott Arduino Nano -ba töltjük.

A kódot módosítások nélkül használhatjuk úgy, ahogy van.

A 128x32 0x3C címet használ, így ez a bit itt jól néz ki, ellenőrizze a fejléckönyvtárat, igen, a 0x3C címet is használja, és a kijelző típusa 128x32.

- Most csatlakoztassuk a 128x64 -es kijelzőt. Mint tudjuk, alapértelmezés szerint a 0x3C címet használja, így nem kell frissítenünk a címet sem a kódban, sem a könyvtárban.

Csak meg kell kommentálnunk a 128_32 -et, és fel kell oldanunk a 128_64 -et a fejléckönyvtárban, és módosítanunk kell az LCDHEIGHT értékét 64 -re a kódunkban.

- Most, hogy ugyanazt a kódot futtassuk egy NodeMCU -n, meg kell változtatnunk még egy sort a kódunkban.

A "#define OLED_RESET 4"> "#define OLED_RESET LED_BUILTIN" kód többi része megegyezik az Arduino -val

Nagyjából ahhoz, hogy bármit megjelenítsünk, először ki kell törölnünk az előző képernyőt

display.clearDisplay (); // Törölje a puffert

Ezután rajzolja meg az objektumot

testdrawline (); // Rajzolj egy vonalat

Mutasd meg a hardveren

display.display (); // Tegye őket láthatóvá a kijelző hardverén!

Várjon egy kicsit, mielőtt megjelenítené a következő elemet.

késleltetés (2000); // Várjon 2 másodpercet

Ebben a példában néhány elemet jelenítünk meg, például szöveget, vonalakat, köröket, görgető szöveget, háromszögeket és egyebeket. Használd a fantáziádat, és jeleníts meg bármit ezeken az apró kijelzőkön.

10. lépés: Szöveg testreszabása és képek hozzáadása

Szöveg testreszabása és képek hozzáadása
Szöveg testreszabása és képek hozzáadása
Szöveg testreszabása és képek hozzáadása
Szöveg testreszabása és képek hozzáadása
Szöveg testreszabása és képek hozzáadása
Szöveg testreszabása és képek hozzáadása

Néha a kódnak egyedi betűtípusokat és

képek. Ha nagyon jó a bitképzésben, akkor csak bájt tömböket kell létrehoznia a kijelző apró LED -jeinek be- vagy kikapcsolásával, hogy egyedi betűtípusokat és képeket hozzon létre.

Azonban nem vagyok túl jó ezekben a leképezésekben, és nem akarok órákat tölteni a bittérképes táblák létrehozásával.

Szóval, mik a lehetőségeim? Általában két webhelyet használok egyedi betűtípusok és képek létrehozásához. A linkeket az alábbi leírás tartalmazza.

Egyedi betűtípusok

Lépjen a betűtípus -konvertáló webhelyére, válassza ki a betűcsaládot, stílust, méretet, könyvtári verziót "Adafruit GFX Font" -ként, majd nyomja meg a "Create" gombot. Ennek az oldalnak a jobb oldalán láthatja, hogyan fog kinézni a betűtípus a tényleges kijelzőn.

Az Ön választása alapján a weboldal létrehozza a betűtípus fejlécfájlt. Hozzon létre egy "módosított_font.h" nevű fájlt ugyanabban a mappában, ahol a kódja található, és másolja és mentse el a létrehozott kódot. Ezután csak be kell illesztenie a fejlécfájlt a kódjába az egyéni betűtípus használatához.

#include "módosított_font.h"

Ezután csak be kell állítania a betűtípust, mielőtt megjelenítené a szöveget, hogy alkalmazni tudja az egyéni betűtípust.

display.setFont (& Saját_betűtípusok_neve);

A betűtípus nevét a projekthez hozzáadott fejlécfájlból kaphatja meg. Ennyi, könnyű.

A memória mindig aggodalomra ad okot az egyéni betűtípusok használata során, ezért mindig vegye figyelembe a memória által elhasznált bájtokat. Ne feledje, hogy az Arduino UNO memóriája mindössze 32 ezer.

Egyedi képek

A bitkép megjelenítéséhez a képernyőn először létre kell hoznia egy 128 x 64/32 méretű képet.

A jó öreg "MS Paint" segítségével 128 x 64 bitképes képet hozok létre, amelyet aztán feltöltök erre a képkonvertáló webhelyre. A weboldal bájt-karakterláncokká alakítja a képeket, amelyek használhatók Arduino és OLED kijelzőkkel.

Kezdje azzal, hogy feltölti a képet a webhelyre. Ezután jelölje be a "Kép színeinek megfordítása" jelölőnégyzetet, és módosítsa a "Kimeneti kód formátumát" "Arduino Code" értékre, majd válassza ki a tájolást, és nyomja meg a "Kód létrehozása" gombot a bájt tömb létrehozásához. Az "Előnézet" szakasz megmutatja, hogyan fog kinézni a képe a tényleges kijelzőn.

Ebben a bemutatóban mellékeltem a kódot, amellyel megjelenítheti képeit. Csak le kell cserélnie a kódomat a tömböt az imént létrehozott tömbre, majd be kell töltenie az Arduino -ba.

11. lépés: 2 kijelző csatlakoztatása

2 kijelző csatlakoztatása
2 kijelző csatlakoztatása
2 kijelző csatlakoztatása
2 kijelző csatlakoztatása

Két 128 x 64 méretű kijelző csatlakoztatása a projekthez egyszerű.

Csak ki kell oldania a 0Ohm ellenállást a 0x78 címről, és 0x7A -ra kell helyeznie, majd a 0x3D címet kell használnia a kódjában az alapértelmezett 0x3C helyett.

Biztosan kíváncsi, hogy miért a 0x3C és 0x3D címet használjuk, és nem a tényleges 0x78 és 0x7A címet. Az Arduino 7 bites címet fogad el, és nem 8 bites hardvercímet. Tehát először át kell alakítanunk a 8 bites címet binárisra, majd le kell vágnunk a legkevésbé jelentős bitet, hogy megkapjuk a 7 bitet. Ezután konvertálja a 7 bitet HEX -re, hogy megkapja a kódban megadott 0x3C vagy 0x3D címet.

Először inicializálja a kijelzőt egyedi névvel:

Adafruit_SSD1306 kijelző1 (OLED_REST);

Adafruit_SSD1306 kijelző2 (OLED_REST);

Ezután a kódban használja az 1 -es és a 2 -es kijelzőt, hogy meghívja a kezdő utasításokat az eszközcímekkel:

display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // 1 opcím megjelenítése 0x3C

display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // 2 op cím megjelenítése 0x3D

Ennyi, most továbbléphet, és azt tehet, amit akar, az 1. vagy a 2. kijelző használatával a kód többi részében. Ezzel az oktatóanyaggal példát hoztam.

A kábelezés pontosan ugyanaz, mint amit korábban csináltunk, nagyjából csak egy másik kijelzőt kell hozzáadnia az Arduino vagy a NodeMCU ugyanazon I2C csapjaihoz. A címek alapján az MCU elküldi az adatokat az I2C adatsorra.

12. lépés: Több mint 2 kijelző csatlakoztatása

Több mint 2 kijelző csatlakoztatása
Több mint 2 kijelző csatlakoztatása
Több mint 2 kijelző csatlakoztatása
Több mint 2 kijelző csatlakoztatása
Több mint 2 kijelző csatlakoztatása
Több mint 2 kijelző csatlakoztatása

Mi van akkor, ha több mint 2 kijelzőt szeretne csatlakoztatni?

Az Arduino -nak korlátozott számú csapja van, és ezért nem lehet egynél több pajzsot rögzíteni. Ezenkívül csak egy pár I2C busszal rendelkezik.

Szóval, hogyan tudunk több mint 2 I2C kijelzőt csatlakoztatni egy Arduino -hoz? A trükk az, hogy használjon TCA9548 multiplexert.

A TCA9548 lehetővé teszi, hogy egyetlen mikrovezérlő kommunikáljon akár '64 érzékelővel ', amelyek mindegyike azonos vagy eltérő I2C címmel rendelkezik, és egyedi csatornát rendel hozzá minden érzékelő szolga al-buszhoz.

Amikor arról beszélünk, hogy két vezetéken keresztül több eszközre kell adatokat küldeni, akkor meg kell találnunk a módját, hogy hogyan kezeljük őket. Ugyanaz, mint a postás, aki egyetlen úton érkezik, és különböző házakba dobja a postacsomagokat, mert különböző címek vannak ráírva.

A Multiplexer csatlakozik a mikrovezérlő 3V3, GND, SDA és SCL vonalaihoz. A szolga érzékelők az alaplap nyolc SCL/SDA slave portjának egyikéhez vannak csatlakoztatva. A csatornákat úgy választhatja ki, hogy elküldi a TCA9548A I2C címét (0x70 {alapértelmezett} - 0x77), majd a csatorna számát (0b00000001 - 0b10000000). Legfeljebb 8 ilyen multiplexer csatlakoztatható 0x70-0x77 címekre annak érdekében, hogy 64 azonos I2C címzett részt vezéreljen. A három A0, A1 és A2 címbit VIN -hez történő csatlakoztatásával különböző címkombinációkat kaphat. Ezt részletesen elmagyarázom a következő oktatóanyagomban a TCA9548A kitörési táblán. Most csak csatlakoztassunk 8 OLED -et ehhez a táblához, és nézzük meg gyorsan a kódot.

Kapcsolat:

VIN - 5V (vagy 3.3V)

GND a földre

SCL - I2C óra

SDA - I2C adatok

Ezután csatlakoztassa az érzékelőket a VIN, GND -hez, és használja az SCn / SDn multiplexelt buszok egyikét

Most, Int a kódot a "Wire" könyvtár bevonásával és a multiplexerek címének meghatározásával kezdhetjük.

#include "Wire.h"

#befoglalni

#define MUX_Address 0x70 // TCA9548A Kódolók címe

Ezután ki kell választanunk a portot, amelyhez kommunikálni szeretnénk, és el kell küldenünk az adatokat ezen a funkción keresztül:

void tcaselect (uint8_t i) {

ha (i> 7) visszatér;

Wire.beginTransmission (MUX_Address);

Drót.írás (1 << i);

Wire.endTransmission ();

}

Ezután inicializáljuk a kijelzőt a beállítási részben az "u8g.begin ();" a MUX "tcaselect (i);"

Az inicializálás után azt tehetünk, amit akarunk, csak a "tcaselect (i);" függvény meghívásával. ahol "i" a multiplexelt busz értéke, majd ennek megfelelően elküldi az adatokat és az órát.

13. lépés: Előnyök és hátrányok

Előnyök és hátrányok
Előnyök és hátrányok

Gyönyörű az OLED képe. Az OLED -eknek azonban van

hátrányai. Mivel az OLED képernyők szerves anyagokat tartalmaznak, élettartamuk rövidebb, mint az LCD kijelzőknél. Ezenkívül sok OLED kijelző beég, ha ugyanazt a képet hosszú ideig mutatja. Beégés után a kép a képernyőn marad, még egy másik kép megjelenítése után is. Ezért ügyeljen arra, hogy néhány másodpercenként frissítse a képernyőt. A víz azonnal károsíthatja a kijelzők szerves anyagait.

Előnyök

Nincs szükség háttérvilágításra

A kijelző nagyon vékony és könnyű

Alacsony energia fogyasztás

A látószögek szélesebbek, mint az LCD -k

A fényerő és a kontraszt nagyszerű

Nagy sebesség és alacsony válaszidő

Mély fekete színű

Hátrányok

Drága technológia

Rövid életciklus

Az OLED-ek nagyobb valószínűséggel égnek be

Vízkár

14. lépés: Gyakori hibák

Gyakori hibák
Gyakori hibák

Az oktatóanyag befejezéseként néhány gyakori hibáról beszélhetünk

az emberek a következő képernyők használata során:

- Mindig háromszor ellenőrizze a csapokat, mielőtt a projektben használja

- Vegye fel a megfelelő könyvtári címet a fejlécfájlban és a kódban

#define SSD1306_I2C_ADDRESS 0x3C // az Adafruit_SSD1306.h fájlban

és

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // a kódjában

Ha a cím rossz, az OLED nem jelenít meg semmit

- Használat előtt meg kell változtatni a kijelző méretét az illesztőprogramban. Ha nem változik, akkor hibaüzenetet kap, amikor megpróbálja ellenőrizni a kódot

#error ("Helytelen magasság, javítsa ki az Adafruit_SSD1306.h!");

- Ha NodeMCU -t használ, győződjön meg arról, hogy az OLED_RESET értéket 4 -ről LED_BUILTIN értékre cseréli.

#define OLED_RESET LED_BUILTIN

Vannak jelenetembereim, akik mindenféle dolgot készítenek ezzel az OLED kijelzővel. Vannak, akik videojátékokat is készítettek, meg minden. Tényleg nem érdekel videojáték készítése ezzel az apró kijelzővel. Most azonban hagyom, hogy fedezze fel a fantáziáját, és csodálatos ötletekkel álljon elő.

15. lépés: Linkek

- Blog:

- Kép hozzáadása:

- Egyéni szöveg:

- Adafruit kijelző könyvtár:

-Adafruit GFX könyvtár:

- u8glib könyvtár: https://code.google.com/archive/p/u8glib/ vagy

Ha a kisebb kijelzőt szeretné használni, akkor az alapértelmezett 128_32 -et használja, különben a nagyobb kijelzőhöz írja be a 128_32 -et, és vegye ki a megjegyzést a 128X64 -es NO_ACK -ből a kódjában (csak vegye ki a megjegyzést a használt képernyő típusáról) (a betűtípusok a betűtípus könyvtárban vannak)

Ajánlott: