Vis bilde på OLED -skjermen med Epptop 10 ved hjelp av Arduino IDE

Vis bilde på OLED -skjermen med Epptop 10 ved hjelp av Arduino IDE
ESP32 er et lite kompakt mikrokontrollertavle med minimale strømbehov. I løpet av de siste par årene fikk ESP32 en enorm suksess på grunn av dens allsidighet og brukervennlighet. I mange prosjekter der produksjonen må vises på en seriell skjerm. Så i stedet for å gjøre dette kan vi grensesnitt en OLED -skjerm med ESP32. Denne leksjonen vil være en guide til å grensesnittende ESP32 med I2C 0.96 ”OLED -skjerm.

Denne leksjonen inkluderer følgende emner:

  • 1: Introduksjon til OLED -skjerm
  • 2: Wiring OLED -skjermmodul til ESP32
  • 3: Installere nødvendige biblioteker
  • 4: Kontroller OLED Display I2C -adresse
  • 5: Vis bilde på OLED -skjerm med ESP32 ved hjelp av Arduino IDE
  • 5.1: Konvertere bilde til hex -kode
  • 5.2: Kode
  • 5.3: Eksempel på Arduino -kode for bildedisplay
  • 5.4: Output

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.