Sadržaj:
- Korak 1: Stvari koje ćemo naučiti danas
- Korak 2: Zahtjevi hardvera
- Korak 3: Šta je OLED ekran?
- Korak 4:
- Korak 5: Bliži pogled
- Korak 6: Biblioteka
- Korak 7:
- Korak 8: Ožičenje 128 X 64/32 OLED -ova
- Korak 9: Kodirajte
- Korak 10: Prilagođavanje teksta i dodavanje slika
- Korak 11: Povezivanje 2 ekrana
- Korak 12: Povezivanje više od 2 ekrana
- Korak 13: Prednosti i nedostaci
- Korak 14: Uobičajene greške
- Korak 15: Veze
Video: OLED I2C zaslon Arduino/NodeMCU Vodič: 15 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Prvi program koji napišete kada počnete učiti a
novi programski jezik je: "Hello World!".
Sam program ne čini ništa drugo nego ispis teksta "Hello World" na ekranu.
Pa, kako da naš Arduino prikaže "Hello World!"?
U ovom videu pokazat ću vam kako započeti s malim I2C OLED ekranima od 0,91 (128x32) i 0,96 (128x64).
Na webu postoji stotinjak vodiča koji na različite načine objašnjavaju istu stvar, ali nisam uspio pronaći onu koja bi mi rekla sve o OLED ekranu i kako je koristiti u različitim scenarijima. Trebalo mi je neko vrijeme da sve riješim. Stoga sam mislio da bih trebao stvoriti vodič o onome što sam naučio i kombinirati sve funkcije i načine na koje se OLED ekrani mogu koristiti u našim projektima.
Korak 1: Stvari koje ćemo naučiti danas
U ovom videu ćemo govoriti o:
- Šta je OLED ekran?
- Zatim ćemo pobliže pogledati I2C OLED ekrane od 0,91 (128x32) i 0,96 (128x64)
- Sljedeće ćemo govoriti o instaliranju Adafruit biblioteke na vaš Arduino IDE
- Zatim ćemo povezati NodeMCU i Arduino na OLED ekran
- Zatim ćemo pogledati kod i prikazati neke grafike i tekst na njemu
- Također ćemo govoriti o primjeni prilagođenih fontova i prikazivanju slika
- Zatim ćemo povezati više OLED-ova na mikrokontroler pomoću I2C multipleksera
- Na kraju ćemo govoriti o nekoliko uobičajenih grešaka koje ljudi rade dok koriste OLED zaslone
Korak 2: Zahtjevi hardvera
Za ovaj vodič potrebni su nam:
- Breadboard
- I2C OLED ekrani od 0,91 "(128x32) i 0,96" (128x64)
- Arduino UNO/NANO (sve što vam je pri ruci)
- NodeMCU
- TCA9548A I2C multiplekser
- Nekoliko spojnih kabela
- i USB kabel za učitavanje koda
Korak 3: Šta je OLED ekran?
OLED ili organska svjetlosna dioda emitira svjetlost
dioda (LED) u kojoj je emisijski elektroluminiscentni sloj film organskog spoja (milijuni malih LED svjetiljki) koji emitira svjetlost kao odgovor na električnu struju.
OLED-ovi se koriste za stvaranje digitalnih ekrana na uređajima kao što su televizijski ekrani, računarski monitori, prenosivi sistemi poput mobilnih telefona, ručnih konzola za igre i PDA uređaja. OLED ekran radi bez pozadinskog osvjetljenja jer emitira vidljivo svjetlo.
Korak 4:
Postoji mnogo vrsta OLED ekrana dostupnih u
tržište zasnovano na njihovom
- Veličine
- Boja
- Brendovi
- Protokol
- SPI (serijsko periferno sučelje) ili I2C
-Shema upravljanja pasivnom matricom (PMOLED) ili aktivno matricom (AMOLED)
U ovom vodiču ću govoriti o povezivanju
plava boja 0,91 (128x32 OLED) i 0,96 (128x64 OLED) I2C OLDE prikazuje na Arduino NANO i NodeMCU. Tehnologija sabirnice I2C koristi samo 2 pina MCU -a pa imamo hrpe dostupne za druge senzore.
Korak 5: Bliži pogled
Pogledajmo bliže ova dva ekrana.
Na stražnjoj strani ovih zaslona nalaze se hrpe SMD kondenzatora i otpornika lemljenih na ploči; ali, budući da je riječ o I2C uređaju, stalo nam je samo do ova 2 pina (SCL i SDA)
Zaslon se povezuje s Arduinom koristeći samo četiri žice - dvije za napajanje (VCC i GND) i dvije za prijenos podataka (serijski sat SCL i
serijski podaci SDA), što ožičenje čini vrlo jednostavnim. Veza za prenos podataka je I2C (I²C, IIC ili međuintegrisano kolo), a ovo sučelje se naziva i TWI (dvožično sučelje).
- Utikači na ploči mogu biti različitog redoslijeda, pa uvijek provjerite trostruko prije nego što ih priključite na svoj projekt.
- Radni napon je između 3v i 5v, ali najbolje je koristiti upute iz podatkovne tablice proizvođača.
- Ponekad moramo koristiti 2 ekrana u našim projektima. Dakle, kako to možemo postići?
Trik je u tome da imate podesivu adresu na ekranu. Ova jedinica ima konfiguriranu adresu između 0x78 i 0x7A. Samo raspakiranjem otpornika 0Ohm s jedne strane i spajanjem s druge strane ili samo stavljanjem globalnog lema možemo promijeniti adresu. O tome ćemo detaljno govoriti kada povežemo više ekrana na Arduino u kasnijem odjeljku ovog vodiča.
Na slici ovi ekrani izgledaju veoma veliki. Ali, praktično govoreći, male su. Izrađene su od 128 x 32/64 pojedinačnih OLED piksela i ne zahtijevaju pozadinsko osvjetljenje. Samo pogledajte ovo i vidite koliko je mali. Iako su male, mogu biti vrlo korisne u bilo kojim elektroničkim projektima.
Korak 6: Biblioteka
Na raspolaganju je nekoliko biblioteka za kontrolu ovih
prikazuje. Ranije sam koristio "u8glib library", ali smatram da je AdaFruit biblioteka vrlo laka za razumijevanje i upotrebu u našim projektima. Stoga ću u ovom vodiču koristiti biblioteku AdaFruit.
Za kontrolu OLED ekrana trebat će vam biblioteka "adafruit_GFX.h" i "adafruit_SSD1306.h".
Postoje dva načina na koja možete preuzeti i instalirati biblioteku na svoj Arduino IDE.
Metoda 1
Idite na "Upravitelj biblioteke" i pretražite "adafruit_SSD1306" i "adafruit_gfx"
Odaberite najnoviju verziju i pritisnite dugme Instaliraj.
Jednom instalirane možete koristiti ove biblioteke u svom programu.
Metoda 2
Ove dvije biblioteke mogu se preuzeti i sa githuba (potrebne su vam obje):
Navest ću veze u donjem opisu.
Biblioteka za prikaz:
Biblioteka GFX:
Nakon preuzimanja kopirajte fasciklu Adafruit_SSD1306-master iz preuzete zip datoteke u fasciklu Arduino biblioteke. Ova mapa se obično nalazi na Documents> Arduino> libraries na Windows sistemima. Na Linuxu se obično nalazi u kućnoj mapi> Arduino> biblioteke. Na kraju, u mapi Arduino biblioteke preimenujte mapu Adafruit_SSD1306-master u Adafruit_SSD1306. Čak i ako ne promijenite naziv, to je u redu.
Korak 7:
Pogledajmo sada "Adafruit_SSD1306.h"
file
Dvije stvari koje moramo znati u ovoj biblioteci:
1. Ako želite koristiti manji ekran, upotrijebite zadanu 128_32 inače za veći prikaz komentirajte 128_32 i uklonite komentar sa 128_64
2. Ako ste lemili 0x7A adresu na ploči (o čemu ćemo kasnije govoriti), tada koristite 7 -bitnu 0x3D adresu za veće zaslone, inače koristite zadanu 0x3C adresu. Za manje ekrane adresa je 0x3C.
Korak 8: Ožičenje 128 X 64/32 OLED -ova
Počnimo povezivanjem NodeMCU -a s zaslonom.
Prva i najvažnija stvar koju treba napomenuti je da neki od ekrana mogu zamijeniti kontakte za napajanje GND i VCC. Proverite ekran da biste se uverili da je isti kao i slika. Ako se pinovi zamijene, svakako promijenite veze na Arduino ili NodeMCU.
- NodeMCU OLED ožičenje
OLED VCC - NodeMCU 3.3V
OLED GND - NodeMCU GND
OLED SCL - NodeMCU D1
OLED SDA - NodeMCU D2
- Arduino Uno OLED ožičenje
OLED VCC - Arduino 5V
OLED GND - Arduino GND
OLED SCL - Arduino Uno A5
OLED SDA - Arduino Uno A4
- Arduino MEGA 2560 OLED ožičenje
OLED VCC - Arduino 5V
OLED GND - Arduino GND
OLED SCL - Arduino MEGA 2560 pin 21
OLED SDA - Arduino MEGA 2560 pin 20
Korak 9: Kodirajte
Biblioteka Adafruit dolazi sa zaista dobrim primjerima za oboje
128x32 i 128x64 ekrani.
Biblioteka se nalazi pod Datoteka> Primjeri> Adafruit SSD1306>, a zatim tip prikaza u Arduino IDE -u.
Koristit ćemo primjer 128x32 I2C i modificirat ćemo ga tako da radi i sa šakama sa prikazima 128x64 i 128x32 tako da ga spojimo na Arduino, a zatim na ploču NodeMCU.
Kôd počinje uključivanjem obje biblioteke Adafruit. U ovom vodiču ću naglasiti samo one dijelove koda koji su nam potrebni za učitavanje i na ploče i na ekrane. Ako želite saznati više o kodu, ostavite komentar na mom blogu ili u odjeljku komentara ispod, a ja ću vam se pokušati vratiti.
- Prvo ćemo učitati kôd na Arduino Nano povezan sa zaslonom 128x32.
Kôd možemo koristiti takav kakav je bez ikakvih izmjena.
128x32 koristi adresu 0x3C tako da ovaj bit izgleda dobro, omogućava dvostruku provjeru biblioteke zaglavlja, da, također koristi adresu 0x3C i tip prikaza je 128x32.
- Sada spojimo ekran 128x64. Kao što znamo, ona prema zadanim postavkama koristi adresu 0x3C, pa ne moramo ažurirati adresu ni u kodu ni u biblioteci.
Trebamo samo komentirati 128_32 i ukloniti komentar 128_64 u biblioteci zaglavlja i promijeniti LCDHEIGHT na 64 u našem kodu.
- Sada za pokretanje istog koda na NodeMCU -u moramo promijeniti još jedan red u kodu.
Ostatak koda "#define OLED_RESET 4"> "#define OLED_RESET LED_BUILTIN" je isti kao kod Arduina
Prilično za prikaz svega što nam je prvo potrebno da obrišemo prethodni ekran pomoću
display.clearDisplay (); // Brisanje međuspremnika
Zatim nacrtajte objekt
testdrawline (); // Povuci liniju
Pokažite to na hardveru
display.display (); // Učinite ih vidljivim na hardveru zaslona!
Pričekajte neko vrijeme prije nego što prikažete sljedeću stavku.
kašnjenje (2000); // Sačekajte 2 sekunde
U ovom primjeru prikazujemo nekoliko stavki poput teksta, linija, krugova, pomicanja teksta, trokuta i još mnogo toga. Samo naprijed, upotrijebite maštu i prikažite sve što želite na ovim malim ekranima.
Korak 10: Prilagođavanje teksta i dodavanje slika
Ponekad vaš kôd mora prikazati prilagođene fontove i
slike. Ako ste vrlo dobri u mapiranju bitova, samo trebate stvoriti nizove bajtova uključivanjem ili isključivanjem sitnih LED dioda na ekranu za stvaranje prilagođenih fontova i slika.
Međutim, nisam baš dobar u izradi ovih preslikavanja i ne želim trošiti sate na stvaranje tablica bitne karte.
Koje su mi mogućnosti? Općenito koristim dvije web stranice za generiranje prilagođenih fontova i slika. Linkovi su dati u donjem opisu.
Prilagođeni fontovi
Idite na web stranicu za pretvaranje fontova, odaberite porodicu fontova, stil, veličinu, verziju biblioteke kao "Adafruit GFX font", a zatim pritisnite gumb "Kreiraj". Na desnoj strani ove stranice možete vidjeti kako će vaš font izgledati na stvarnom ekranu.
Na temelju vašeg odabira web stranica generira datoteku zaglavlja fontova. Kreirajte datoteku pod nazivom "modified_font.h" u istoj mapi u kojoj se nalazi vaš kôd i kopirajte i spremite generirani kôd u nju. Zatim samo trebate uključiti datoteku zaglavlja u svoj kôd da biste koristili prilagođeni font.
#include "modified_font.h"
Zatim samo trebate postaviti font prije prikaza teksta kako biste na njega primijenili prilagođeni font.
display.setFont (& Your_Fonts_Name);
Naziv fonta možete dobiti iz datoteke zaglavlja koju ste upravo dodali svom projektu. To je to, polako.
Memorija je uvijek briga pri korištenju prilagođenih fontova, pa uvijek uzmite u obzir bajtove koje će memorija potrošiti. Sjetite se samo da Arduino UNO ima samo 32K memorije.
Prilagođene slike
Da biste prikazali bitmap sliku na ekranu, prvo morate stvoriti sliku veličine 128 x 64/32.
Koristim stari dobri "MS Paint" za stvaranje 128 x 64 bitne slike koju ću zatim postaviti na ovu web stranicu za pretvaranje slika. Web stranica pretvara slike u nizove bajtova, koji se mogu koristiti s Arduino i OLED ekranima.
Započnite postavljanjem slike na web lokaciju. Zatim označite potvrdni okvir "Invert image images" (Promijeni boje slike) i promijenite "Output code format" (Format izlaznog koda) u "Arduino Code", zatim odaberite orijentaciju i pritisnite gumb "Generate Code" (Generiraj kod) da biste generirali niz bajtova. Odjeljak "Pregled" prikazuje vam kako će vaša slika izgledati na stvarnom ekranu.
Uključio sam kôd zajedno s ovim vodičem koji možete koristiti za prikaz slika. Samo trebate zamijeniti niz u mom kodu s onim koji ste upravo generirali, a zatim ga učitati na svoj Arduino.
Korak 11: Povezivanje 2 ekrana
Povezivanje dva ekrana 128 x 64 sa vašim projektom je jednostavno.
Potrebno je samo da odlepite otpornik 0Ohm sa adrese 0x78 i postavite ga na 0x7A, a zatim koristite adresu 0x3D u svom kodu umesto podrazumevane vrednosti 0x3C.
Sigurno se pitate zašto koristimo adrese 0x3C i 0x3D, a ne stvarne 0x78 i 0x7A. Arduino prihvaća 7-bitne adrese, a ne 8-bitne hardverske adrese. Dakle, prvo moramo pretvoriti 8-bitnu adresu u binarnu, a zatim odrezati najmanji bit da bismo dobili 7 bitova. Zatim pretvorite 7 bitova u HEX kako biste dobili adrese 0x3C ili 0x3D koje unesete u svoj kôd.
Prvo, inicijalizirajte ekran dajući mu jedinstveno ime:
Adafruit_SSD1306 display1 (OLED_REST);
Adafruit_SSD1306 display2 (OLED_REST);
Zatim u svom kodu upotrijebite zaslon 1 i zaslon 2 za pozivanje početnih naredbi s adresama uređaja u njima:
display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // prikazuje 1 op adresu 0x3C
display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // prikaz 2 op adrese 0x3D
To je to, sada možete nastaviti i raditi sve što želite koristeći Display 1 ili Display 2 u ostatku koda. Dao sam primjer s ovim vodičem.
Ožičenje je potpuno isto kao i ono što smo već radili, prilično vam je potrebno samo dodati još jedan ekran istim I2C pinovima Arduina ili NodeMCU -a. Na osnovu adresa, MCU zatim šalje podatke na liniji podataka I2C.
Korak 12: Povezivanje više od 2 ekrana
Šta ako želite spojiti više od 2 ekrana?
Arduino ima ograničen broj pinova i stoga na njega ne možete imati više od određene količine štitova. Štaviše, ima samo jedan par I2C autobusa.
Dakle, kako možemo priključiti više od 2 I2C ekrana na Arduino? Trik je u korištenju TCA9548 multipleksera.
TCA9548 omogućava jednom mikrokontroleru da komunicira sa do '64 senzora 'sa istom ili različitom I2C adresom dodjeljujući jedinstveni kanal svakoj pod-sabirnici senzora.
Kada govorimo o slanju podataka putem 2 žice na više uređaja, tada nam je potreban način da ih adresiramo. To je isto kao i poštar koji dolazi jednim putem i baca pakete pošte u različite kuće jer na njima ima ispisanih različitih adresa.
Multiplekser se povezuje na 3V3, GND, SDA i SCL linije mikrokontrolera. Slave senzori su povezani na jedan od osam SCL/SDA slave portova na ploči. Kanali se biraju slanjem TCA9548A njegove I2C adrese (0x70 {zadano} - 0x77) nakon čega slijedi broj kanala (0b00000001 - 0b10000000). Mogli ste imati maksimalno 8 ovih multipleksera spojenih zajedno na 0x70-0x77 adresama kako biste kontrolirali 64 istih I2C adresaranih dijelova. Spajanjem tri bita adrese A0, A1 i A2 na VIN možete dobiti različite kombinacije adresa. Objasniću ovo detaljno u svom sljedećem vodiču o ploči za razbijanje TCA9548A. Za sada, spojimo 8 OLED -ova na ovu ploču i brzo pogledajmo kod.
Veza:
VIN do 5V (ili 3.3V)
GND na masu
SCL na I2C sat
SDA do I2C podaci
Zatim povežite senzore na VIN, GND i upotrijebite jednu od SCn / SDn multipleksnih sabirnica
Sada, Int kod omogućava početak uključivanjem "Wire" biblioteke i definiranjem adrese multipleksera.
#include "Wire.h"
#include
#define MUX_Address 0x70 // TCA9548A Adresa kodera
Zatim moramo odabrati port na koji želimo komunicirati i poslati podatke na njemu pomoću ove funkcije:
void tcaselect (uint8_t i) {
if (i> 7) return;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Zatim ćemo pokrenuti prikaz u odjeljku za postavljanje pozivom "u8g.begin ();" za svaki ekran priključen na MUX "tcaselect (i);"
Nakon inicijalizacije, tada možemo učiniti sve što želimo samo pozivanjem funkcije "tcaselect (i);" gdje je "i" vrijednost multipleksirane sabirnice, a zatim se prema tome šalju podaci i sat.
Korak 13: Prednosti i nedostaci
Slika OLED -a je prekrasna. Međutim, OLED -ovi takođe imaju
nedostatke. Budući da OLED ekrani sadrže organske materijale, njihov vijek trajanja je kraći od LCD ekrana. Osim toga, mnogi OLED ekrani postaju urezani nakon što su dugo prikazivali istu sliku. Nakon urezivanja, slika ostaje na ekranu čak i nakon prikazivanja druge slike. Zato pazite da osvježavate ekran svakih nekoliko sekundi. Voda može trenutno oštetiti organske materijale ovih ekrana.
Prednosti
Nema potrebe za pozadinskim osvetljenjem
Zasloni su vrlo tanki i lagani
Mala potrošnja energije
Uglovi vidljivosti su širi od LCD -a
Svjetlina i kontrast su odlični
Velike brzine i kratko vrijeme odziva
Duboko crna boja
Nedostaci
Skupa tehnologija
Kratak životni ciklus
OLED-ovi imaju veću vjerovatnoću izgaranja
Oštećenje vodom
Korak 14: Uobičajene greške
Za kraj vodiča, razgovarajmo o nekoliko uobičajenih grešaka
koje ljudi rade dok koriste ove zaslone:
- Uvijek triput provjerite pinove prije nego ih upotrebite u svom projektu
- Pokupite pravu adresu biblioteke u datoteci zaglavlja i svom kodu
#define SSD1306_I2C_ADDRESS 0x3C // u Adafruit_SSD1306.h
i
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // u vašem kodu
Ako je adresa pogrešna, OLED neće ništa prikazati
- Veličina prikaza mora se promijeniti u upravljačkom programu da bi se mogla koristiti. Ako se ne promijeni, dobit ćete poruku o grešci pri pokušaju provjere koda
#error ("Visina nije tačna, ispravite Adafruit_SSD1306.h!");
- Ako koristite NodeMCU, obavezno zamijenite OLED_RESET sa 4 na LED_BUILTIN
#define OLED_RESET LED_BUILTIN
Imam scene ljudi koji rade razne stvari koristeći ovaj OLED ekran. Neki su čak napravili i video igre i sve to. Zaista nisam zainteresiran za pravljenje video igre s ovim malim ekranom. Međutim, sada ću vas ostaviti da istražite svoju maštu i izađete s nevjerojatnim idejama.
Korak 15: Veze
- Blog:
- Dodaj sliku:
- Prilagođeni tekst:
- Adapruit biblioteka za prikazivanje:
-Adafruit GFX biblioteka:
- biblioteka u8glib: https://code.google.com/archive/p/u8glib/ ili
Ako želite koristiti manji zaslon, upotrijebite zadanu 128_32 u suprotnom za veći prikaz komentirajte 128_32 i uklonite komentar 128_64 NO_ACK u vašem kodu (samo uklonite komentar s vrste ekrana koji koristite) (fontovi se nalaze u biblioteci fontova)
Preporučuje se:
Arduino i VL53L0X vrijeme leta + OLED zaslon Vodič: 6 koraka
Arduino i VL53L0X Time-of-Flight + OLED Display Tutorial: U ovom vodiču ćemo naučiti kako prikazati udaljenost u mm pomoću VL53L0X senzora za vrijeme leta i OLED ekrana. Pogledajte video
Vodič: Kako Arduino kontrolira više uređaja iste adrese pomoću TCA9548A I2C multipleksera: 3 koraka
Vodič: Kako Arduino kontrolira više uređaja iste adrese pomoću TCA9548A I2C multipleksera: Opis: Modul TCA9548A I2C multipleksera omogućava povezivanje uređaja s istom I2C adresom (do 8 istih adresa I2C) spojenih na jedan mikrokontroler. Multiplekser djeluje kao čuvar vrata, preusmjeravajući naredbe na odabrani skup o
Kako kontrolirati I2C Oled zaslon s Arduinom: 9 koraka (sa slikama)
Kako kontrolirati I2C Oled zaslon s Arduinom: Ovo je vrlo jednostavan vodič o tome kako kontrolirati I2C Oled zaslon s ArduinomAko vam se sviđa ovo uputstvo, pretplatite se na moj kanal https://www.youtube.com/ZenoModiff
Kako spojiti I2C LCD zaslon na Arduino Uno: 5 koraka (sa slikama)
Kako spojiti I2C LCD ekran na Arduino Uno: Zdravo momci, U ovom uputstvu ćete vidjeti kako spojiti i2c LCD ekran na arduino i kako štampati na LCD ekranu. Prije nego što započnete ovaj vodič, morate znati kratki opis o i2c komunikacija.Svaka I2C sabirnica sastoji se od dva signala
Vodič za interfejs OLED 0.91 inča 128x32 sa Arduino UNO: 7 koraka (sa slikama)
Vodič za sučelje OLED 0,91 inča 128x32 sa Arduino UNO: Ovaj vodič će vas naučiti neke osnove o korištenju OLED 0,91 inča LCD128x32 sa Arduino UNO