Denne leksjonen inkluderer følgende emner:
1: Introduksjon til OLED -skjerm
Før vi flytter videre må vi vite hva en OLED -skjerm er. OLED (Organisk lysemitterende diode) Skjermer brukes som et alternativ til LCD -er. 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 OLED 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.
Det er viktig å 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, vises følgende utdata. 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 QR -kode på OLED -skjerm med ESP32 ved hjelp av Arduino IDE
Første trinn som er nødvendig for å vise hvilken som helst QR -kode på en OLED -skjerm, er å konvertere QR -kodebildet til en HEX -kode. Ved å bruke et hvilket som helst online bilde til Hex -omformeren kan vi få sekskantkode mot et bilde.
Men før det først må vi opprette en prøve QR -kode.
1: Opprette en QR -kode
For å lage QR -kode er flere gratisverktøy tilgjengelige. Her er en gratis tekst til QR -kodegenerator.
Bruke dette verktøyet Enhver tekst eller lenke kan konverteres til QR -kode. Her opprettet vi en QR -kode for Linuxhint nettstedadresse.
2: Konvertere QR -kode til Hex -kode
For å konvertere hvilken som helst QR -kode til HEX -kode, kan vi bruke et hvilket som helst online verktøy, eller man kan også konvertere QR -kodebilde til Hex -kode ved hjelp av Windows Paint Tool. Følg nå trinnene for å få hex -kode for ditt QR -kodebilde.
Trinn 1: Klikk her for å besøke gratis Image2CPP -omformer.
Steg 2: Velg QR -kodebildet som vi vil vise på OLED.
Trinn 3: Etter å ha valgt QR -kodebildet, 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 QR -kodebildet 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.
3: Kode
Nå åpner Arduino IDE og lim inn koden nedenfor. Husk å bytte ut hex -koden med den for QR -kodebildet 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,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x80, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x18, 0x03, 0xe1, 0x0c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x03, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xf8, 0x63, 0x1c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe0, 0xfc, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 bruker 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 QR -kodebildet, 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.
4: Eksempel på Arduino -kode for skjermbilde av QR -kode
Her er en kode gitt for OLED -grensesnitt med ESP32. Du må bytte ut hex -koden til QR -kodebildet du vil vise på 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 ()
5: Output
Her i utdataene kan vi se QR -koden som vises på OLED -skjermen. Dette er den samme QR -koden som vi konverterte til hex -kode tidligere.
Vi har vist et QR -kodebilde på en OLED I2C -skjerm. Ved å bruke de samme trinnene kan en hvilken som helst QR -kode med riktig andel vises på en OLED -skjerm.
6: Skanning QR -kode fra OLED -skjerm
Når QR -koden er vist, er det siste trinnet å bekrefte om den fungerer eller ikke for at smarttelefonen skal brukes. De fleste smarttelefoner har en forhåndsinstallert QR -kodeskanner hvis ikke tilgjengelig, kan den enkelt lastes ned fra App Store.
Plasser nå kameraet på QR -kode.
Hvis vellykket skannet, vises følgende tekst. Dette er nøyaktig den samme teksten vi lagret mens vi opprettet QR -koden.
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. OLED -skjerm kan brukes til å vise informasjon på skjermen, for eksempel QR -kode eller strekkode ved hjelp av. Denne leksjonen gir alle trinn som kreves for å vise et QR -kodebilde på en OLED I2C -skjerm med ESP32 ved bruk av Arduino IDE.