- Nødvendig maskinvare:
- Bli kjent med OLED-skjermer:
- Maskinvare og tilkoblinger:
- Programmering av SSD1306 OLED-skjerm for Arduino:
De fleste av oss vil være kjent med 16 × 2 Dot matrix LCD-skjerm som brukes i de fleste prosjekter for å vise litt informasjon til brukeren. Men disse LCD-skjermene har mye begrensning i hva de kan gjøre. I denne opplæringen skal vi lære om OLED-skjermer og hvordan du bruker dem Arduino. Det er mange typer OLED-skjermer tilgjengelig i markedet, og det er mange måter å få dem til å fungere. I denne veiledningen vil vi diskutere klassifiseringene og hvilke som vil være best egnet for prosjektet ditt.
Nødvendig maskinvare:
- 7-pin 128 × 64 OLED-skjermmodul (SSD1306)
- Arduino UNO / Nano
- Brettbrett
- Koble ledninger
- Datamaskin / bærbar PC
Bli kjent med OLED-skjermer:
Uttrykket OLED står for " Organic Light emitting diode". Den bruker den samme teknologien som brukes i de fleste av våre TV-er, men har færre piksler i forhold til dem. Det er veldig gøy å ha disse kule skjermmodulene som skal grensesnittet med Arduino, siden det vil gjøre prosjektene våre kule. Vi har dekket en full artikkel om OLED-skjermer og dens typer her.
Vi bruker en monokrom 7-pin SSD1306 0,96 ”OLED-skjerm. Årsaken til at du valgte denne skjermen er at den kan fungere på tre forskjellige kommunikasjonsprotokoller, som SPI 3 Wire-modus, SPI firetrådsmodus og IIC-modus. Denne opplæringen vil dekke hvordan du bruker modulen i SPI 4-ledermodus, siden den er den raskeste kommunikasjonsmodusen og standardmodusen.
Pinnene og dens funksjoner er forklart i tabellen nedenfor.
PIN-kode |
Pin-navn |
Andre navn |
Bruk |
1 |
Gnd |
Bakke |
Jordingsstift på modulen |
2 |
Vdd |
Vcc, 5V |
Strømstift (3-5 V tolerabel) |
3 |
SCK |
D0, SCL, CLK |
Fungerer som klokken. Brukes til både I2C og SPI |
4 |
SDA |
D1, MOSI |
Datapinnen til modulen. Brukes til både IIC og SPI |
5 |
RES |
RST, RESET |
Tilbakestiller modulen (nyttig under SPI) |
6 |
DC |
A0 |
Data Command pin. Brukes til SPI-protokoll |
7 |
CS |
Chip Select |
Nyttig når mer enn én modul brukes under SPI-protokoll |
I denne opplæringen vil vi ganske enkelt bruke modulen i 4-Wire SPI-modus, vi vil la resten være til en annen opplæring.
Arduino-samfunnet har allerede gitt oss mange biblioteker som kan brukes direkte til å gjøre dette mye enklere. Jeg prøvde noen få biblioteker og fant ut at Adafruit_SSD1306-biblioteket var veldig enkelt å bruke og hadde en håndfull grafiske alternativer, derfor vil vi bruke det samme i denne opplæringen. Men hvis prosjektet har en minne / hastighetsbegrensning, prøv å bruke U8g-biblioteket, da det fungerer raskere og opptar mindre programminne.
Maskinvare og tilkoblinger:
The Circuit Diagram for SSD1306 oled grensesnitt med Arduino er veldig enkelt og er vist nedenfor
Vi har rett og slett etablert en SPI-kommunikasjon mellom OLED-modulen og Arduino. Siden OLED kjører på 3V-5V og bruker lite strøm, trenger den ikke en ekstern strømforsyning. Du kan ganske enkelt bruke ledninger for å opprette forbindelse eller bruke et brødbrett som jeg har brukt, slik at det er enkelt å eksperimentere. Forbindelsen er også oppført i historien nedenfor
S. nr |
Pin-navn på OLED-modul |
Pin-navn på Arduino |
1 |
Gnd, bakken |
Bakke |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
1. 3 |
6 |
DC, A0 |
11 |
7 |
CS, Chip Select |
12 |
Merk: Du vil ikke kunne visualisere bakgrunnsbelysning / glød på OLED-modulen bare ved å slå den på. Du må programmere den riktig for å legge merke til eventuelle endringer på OLED-skjermen.
Programmering av SSD1306 OLED-skjerm for Arduino:
Når tilkoblingene er klare, kan du begynne å programmere Arduino. Som tidligere sagt vil vi bruke Adafruit-biblioteket og GFX-biblioteket for å jobbe med denne OLED-modulen. Følg trinnene for å prøvekjør OLED-skjermen.
Trinn 1: Last ned Adafruit-biblioteket og GFX-biblioteket fra Github ved å bruke lenken nedenfor
- Adafruit bibliotek
- GFX grafikkbibliotek
Trinn 2: Du bør ha lastet ned to zip-filer. Legg dem nå til Arduino ved å følge
Skisse-> Inkluder bibliotek -> Legg til zip-bibliotek som vist nedenfor. Velg deretter biblioteket vi nettopp har lastet ned. Du kan bare velge ett bibliotek om gangen, og derfor må du gjenta dette trinnet igjen.
Trinn 3: Start eksempelprogrammet ved å velge Fil-> Eksempler-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino som vist på bildet nedenfor.
Trinn 4: Inne i eksempelprogrammet øverst på linje 64, legg til linjen “#define SSD1306_LCDHEIGHT 64” som vist på bildet nedenfor.
Trinn 5: Last nå opp programmet, og du bør se OLED-skjermen skyte opp med standard Adafruit eksempelkode som vist på bildet nedenfor. Den fulle jobber videoen er gitt på slutten.
Dette eksempelprogrammet viser deg all mulig grafikk som kan vises på OLED-skjermen. Denne koden skal være nok til at du kan lage bitmaps, tegne linjer / sirkler / rektangler, spille med piksler, vise tegn og streng med forskjellige skrifttyper og størrelse osv…
Hvis du vil forstå biblioteket og dets funksjoner bedre, kan du lese videre. Hvert punkt i koden deles og forklares ved hjelp av kommentarlinjer. Komplett kode er gitt på slutten av denne artikkelen
Vise og tømme skjermen:
Å skrive på OLED-skjermen er akkurat som å skrive på et svart tavle, vi må skrive verdiene og deretter rense dem før det kan overskrives. Følgende kommandoer brukes til å skrive og tømme skjermen
display.display (); // Skriv for å vise display.clearDisplay (); // tøm skjermen
Viser en karaktervariabel:
For å vise innholdet i en variabel kan følgende kode brukes.
char i = 5; // variabelen som skal vises display.setTextSize (1); // Velg størrelsen på tekstdisplayet. SetTextColor (WHITE); // for monokrom visning er bare mulig display.setCursor (0,0); // 0,0 er det øverste venstre hjørnet av OLED-skjermen. Skriv (i); // Skriv variabelen som skal vises
Tegning av en linje, sirkel, rektangel, trekant:
Hvis du vil legge til noen symboler på skjermen, kan du bruke følgende kode for å tegne noe av det følgende
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // tomrom drawLine (x0, y0, x1, y1, farge); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // void drawRect (x0, y0, w, h, farge); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, farge); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, farge);
Tegn en streng til skjermen:
Følgende del av koden kan brukes til å vise en hvilken som helst melding på skjermen på et bestemt sted og en bestemt størrelse
display.setTextSize (2); // angi størrelsen på tekstdisplayet.setTextColor (WHITE); // fargeinnstilling display.setCursor (10,0); // Strengen starter ved 10,0 (x, y) display.clearDisplay (); // Visk ut enhver tidligere skjerm på skjermen display.println ("Circuit Digest"); // Skriv strengen her “Circuit Digest” display.display (); // send teksten til skjermen
Viser et punktgrafikkbilde:
En upålitelig ting som kan gjøres med OLED-modulen er at den kan brukes til å vise bitmaps. Følgende kode brukes til å vise et bitmapbilde
statisk const usignert char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B1111111111, B11111111, B11111111, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Som du kan se, for å vise et bilde, må bitmapdataene lagres i programminnet i form av PROMGMEM-direktivet. Enkelt sagt må vi instruere OLED-skjermen hva de skal gjøre med hver piksel ved å sende den en sekvens eller verdier fra en matrise som vist ovenfor. Denne matrisen vil inneholde bitmapdataene til bildet.
Det høres kanskje komplisert ut, men ved hjelp av et webverktøy er det veldig enkelt å konvertere et bilde til litt kartverdier og laste dem inn i matrisen ovenfor.
Bare last inn bildet og juster innstillingene for å få din foretrukne forhåndsvisning av bildet. Klikk deretter på "Generer kode" kopier koden og lim den inn i Array. Last opp programmet, så er du ferdig. Jeg prøvde å vise en batman-logo, og slik ble det.
Det er fortsatt mange ting du kan gjøre med disse bibliotekene. For å få vite de fullstendige mulighetene, besøk Adafruit GFX-grafikksiden Primitives.
Håper du har dette i gang og klar til å implementere en OLED-skjerm i noen av prosjektene dine. Hvis du hadde problemer, kan du dele dem i kommentarseksjonen, og jeg vil prøve mitt beste for å rette opp dem.