Denne leksjonen inkluderer følgende emner:
1: Introduksjon til OLED -skjerm
Før vi flytter videre må vi vite hva en OLED (Organisk lysutslippsdiode) Display er. OLED -skjermer brukes som et alternativ for LCD. OLED -lysdioder brukes til å produsere lysskjermer på OLED -skjermer. LCD -skjermen bruker bakgrunnsbelysning for å belyse piksler mens OLED -skjermer har sine egne emissive lysdioder. Det er hundrevis av selvlydige lysdioder. For å vise bilder og tekstlysstyrke på disse lysdiodene kan kontrolleres piksel av piksel.
Nå som vi kjenner noen grunnleggende relatert til OLED -skjerm. Neste trinn er å koble ESP32 med en OLED -skjermmodul.
2: Wiring OLED -skjermmodul til ESP32
OLED -skjermen kommer hovedsakelig med to forskjellige kommunikasjonsprotokoller. De to protokollene er I2C og SPI. Det serielle perifere grensesnittet (SPI) er generelt raskere enn I2C, men vi foretrakk I2C fremfor SPI -protokoll, da det krevde mindre antall pinner.
Følgende bilde illustrerer ESP32 tilkoblingsdiagram med 128 × 64 piksler (0.96 ") OLED -skjerm.
Nedenfor er tilkoblingstabellen:
Når ESP32 er koblet sammen med en OLED -skjerm, er neste trinn på listen installerer alle nødvendige biblioteker for ESP32 -programmering ved hjelp av Arduino IDE.
3: Installere nødvendige biblioteker
Flere biblioteker er tilgjengelige i Arduino IDE for å programmere ESP32 med en OLED -skjerm. Her bruker vi to biblioteker fra Adafruit: SSD1306 og GFX Library.
Nå i Arduino IDE Open Library Manager og søk etter SSD1306 -biblioteket. Installer SSD1306 -biblioteket av Adafruit fra søkefeltet.
Alternativt kan man også gå til: Skisse> Inkluder bibliotek> Administrer biblioteker
Neste bibliotek vi må installere er GFX Bibliotek av Adafruit.
Etter at begge bibliotekene er installert, er neste trinn å sjekke I2C -adressen der ESP32 er tilkoblet.
4: Kontroller OLED Display I2C -adresse
I2C står for inter-integrert kretskommunikasjon. Ved hjelp av I2C kan vi grensesnitt flere enheter over 2 ledninger. Imidlertid, mens du kobler dem til hver I2C -enhet, må du bruke en egen I2C -adresse. Denne adressen varierer fra 0 til 127. For eksempel, hvis vi har to forskjellige I2C -enheter ved å bruke den samme I2C -adressen, kan de ikke kobles til på samme I2C -linje.
Husk først å sjekke I2C -adressen først. For å sjekke I2C -adressen til den tilkoblede OLED -skjermen tilkoblet ESP32 med PC, last opp koden gitt i artikkelsjekk I2C -adressen ved hjelp av Arduino IDE.
Etter å ha lastet opp kode I2C -adresse kan sees i seriemonitoren. Her i vårt tilfelle er OLED -skjermen koblet til i2c -adresse (0x3c).
Vi vil bruke den nevnte I2C -adressen for OLED -skjermen i Arduino -koden.
5: Vis bilde på OLED -skjerm med ESP32 ved hjelp av Arduino IDE
Første trinn som er nødvendig for å vise et bilde på en OLED -skjerm er å konvertere bildet til en sekskantkode. Ved å bruke et hvilket som helst online bilde til Hex -omformeren kan vi få sekskantkode mot et bilde.
1: Konvertere bilde til hex -kode
For å konvertere et bilde til Hex -kode kan vi bruke et hvilket som helst online verktøy, eller man kan også konvertere bilde til Hex -kode ved hjelp av Windows Paint Tool. Følg nå trinnene for å få hex -kode for bildet ditt.
Trinn 1: Klikk her for å besøke gratis Image2CPP -omformer.
Steg 2: Velg bildet som vi vil vise på OLED.
Trinn 3: Etter å ha valgt bildet, klikker du på åpne.
Trinn 4: I bildesettingen sett dimensjonene til 128 x 64. Lysstyrken kan settes i henhold til bildet anbefalt nummer er et sted rundt 150.
Skala bildet i henhold til størrelse og for referanse, se forhåndsvisningen av utdataene.
Trinn 5: Angi nå kodeutgangsformatet i Arduino -kode og prefiks som bitmap. Etter det klikk generere kode. Output Hex -kode kan kopieres fra utgangsvinduet.
Bytt ut den kopierte sekskantkoden i Arduino IDE -prøvekode gitt nedenfor.
2: Kode
Åpne nå Arduino IDE og lim inn den gitte koden. Husk å bytte ut hex -koden med den for bildet du trenger å vise på en OLED -skjerm.
/****** Linuxhint.Com ********/
#inkludere
#inkludere
#inkludere
#Define Screen_Width 128
#Define Screen_Height 64
Adafruit_ssd1306 display (screen_width, screen_height, & wire, -1);
statisk const uint8_t image_hex_array [1024] =
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, 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, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfd, 0xb0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfc, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x4f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0x8f, 0x3e, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x0f, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x8f, 0xbe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xff, 0xe6, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x3f, 0x8e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x0e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x80, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xe0, 0x7e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfc, 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,
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, 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,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x7f, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcf, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x3f, 0xf9, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcf, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x3f, 0xf8, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf8, 0xff, 0x8e, 0xff, 0xff, 0xff, 0xff,
0xff, 0x0c, 0xcf, 0x8f, 0x3e, 0x47, 0x90, 0x1e, 0x3c, 0x38, 0x1f, 0x8e, 0x1f, 0xff, 0xff, 0xff,
0xf8, 0x0c, 0xce, 0x03, 0x3e, 0x47, 0x90, 0x06, 0x30, 0x18, 0x1f, 0x1e, 0x07, 0xff, 0xff, 0xff,
0xf0, 0x3c, 0xcc, 0x03, 0x3e, 0x47, 0x90, 0x06, 0x20, 0x08, 0x3f, 0x1f, 0x81, 0xff, 0xff, 0xff,
0xf0, 0xfc, 0xcc, 0xf1, 0x3e, 0x60, 0x10, 0xe2, 0x23, 0x88, 0xfe, 0x3f, 0xe1, 0xff, 0xff, 0xff,
0xf0, 0x3c, 0xcc, 0xf9, 0x3e, 0x60, 0x31, 0xe2, 0x23, 0xc8, 0xfe, 0x3f, 0x81, 0xff, 0xff, 0xff,
0xf8, 0x1c, 0xcc, 0xf9, 0x3e, 0x60, 0x11, 0xe2, 0x23, 0xc8, 0xfc, 0x7e, 0x07, 0xff, 0xff, 0xff,
0xff, 0x0c, 0xcc, 0xf9, 0x1c, 0x47, 0x91, 0xe2, 0x23, 0xc8, 0x7c, 0x7e, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcc, 0xf9, 0x80, 0xc7, 0x91, 0xe2, 0x23, 0xcc, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcc, 0xf9, 0xc1, 0xc7, 0x91, 0xe2, 0x23, 0xc6, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf3, 0x37, 0xcf, 0xbf, 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, 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, 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
;
void setup ()
Serie.Begin (115200); // baudfrekvens for seriell kommunikasjon
hvis(!vise.Begynn (SSD1306_switchcapvcc, 0x3c))
Serie.Println (F ("SSD1306 tildeling mislyktes"));
til(;;);
forsinkelse (2000); // forsinkelse 2 sek
vise.clearDisplay (); // Fjern skjermbuffer
vise.DrawBitMap (0, 0, Image_Hex_Array, 128, 64, 1);
vise.vise();
void loop ()
Kode startet med å importere nødvendige biblioteker som vi installerte tidligere. To biblioteker inkluderer Wire og Adafruit Library. Wire Libraries lar oss bruke I2C mens Adafruit hjelper til med å vise den skrevne teksten på skjermen.
Neste følgende kommando er skrevet:
Adafruit_ssd1306 display (screen_width, screen_height, & wire, -1);
Den inneholder Screen_width og Screen_height variabler. Ved hjelp av disse variablene definerte vi størrelsen på OLED -skjermen. Her brukte vi en 128 × 64 OLED -skjerm. Etter det &Metalltråd Objekt er definert for visning.
Den siste parameteren inneholder (-1), Denne skjermen som OLED -skjermen vi bruker ikke har en ekstern tilbakestillingsknapp. I tilfelle vi har en tilbakestillingsknapp på OLED -skjermen. Vi vil overføre denne parameteren til en GPIO -pin. Etter å ha trykket på tilbakestillingsknappen, vil OLED -skjermen vise teksten.
Midt i koden inkluderte vi HEX -koden for bildet, og etter det initialiserte I2C -kommunikasjonen på I2C -adressen (0x3c) er definert som vi har funnet tidligere ved hjelp av I2C Scanner Code.
I de siste kodelinjene er hex -arrayen skrevet ut på OLED ved hjelp av bitmap -funksjonen.
3: Eksempel på Arduino -kode for bildedisplay
Her er en kode gitt for OLED -grensesnitt med ESP32. I den følgende kodemalen erstattet sekskantkoden til bildet du vil vise på OLED -skjermen.
/****** Linuxhint.Com ********/
#inkludere
#inkludere
#inkludere
#Define Screen_Width 128
#Define Screen_Height 64
Adafruit_ssd1306 display (screen_width, screen_height, & wire, -1);
statisk const uint8_t image_hex_array [1024] =
/*******
*******
*******
[Lim inn hex -kode for bilde her]
*******
*******
*******/
;
void setup ()
Serie.Begin (115200); // baudfrekvens for seriell kommunikasjon
hvis(!vise.Begynn (SSD1306_switchcapvcc, 0x3c))
Serie.Println (F ("SSD1306 tildeling mislyktes"));
til(;;);
forsinkelse (2000); // forsinkelse 2 sek
vise.clearDisplay (); // Fjern skjermbuffer
vise.DrawBitMap (0, 0, Image_Hex_Array, 128, 64, 1);
vise.vise();
void loop ()
4: Output
Her i output, kan vi se Linuxhint Official Logo Design Image som vi konverterte til HEX -kode tidligere.
Vi har vist bilder på en OLED I2C -skjerm. Ved å bruke de samme trinnene kan ethvert bilde med riktig andel vises på en OLED -skjerm.
Konklusjon
En OLED -skjerm er en flott måte å vise utganger på uten behov for en seriemonitor eller PC. OLED -skjermer har to forskjellige protokoller I2C og SPI. I2C OLED -skjermer er å foretrekke på grunn av et mindre antall ledninger. Denne leksjonen gir alle trinn som kreves for å vise et bilde på en OLED I2C -skjerm med ESP32 ved hjelp av Arduino IDE.