- Nødvendig hardware:
- Lær om OLED-skærme at kende:
- Hardware og forbindelser:
- Programmering af SSD1306 OLED-skærm til Arduino:
De fleste af os ville være fortrolige med 16 × 2 Dot matrix LCD-displayet, der bruges i de fleste projekter til at vise nogle oplysninger til brugeren. Men disse LCD-skærme har meget begrænsning i, hvad de kan gøre. I denne vejledning vil vi lære om OLED-skærme og hvordan man bruger dem Arduino. Der er mange forskellige typer OLED-skærme tilgængelige på markedet, og der er mange måder at få dem til at fungere. I denne vejledning diskuterer vi klassificeringerne, og hvilke der passer bedst til dit projekt.
Nødvendig hardware:
- 7-pin 128 × 64 OLED-skærmmodul (SSD1306)
- Arduino UNO / Nano
- Brødbræt
- Tilslutning af ledninger
- Computer / bærbar computer
Lær om OLED-skærme at kende:
Udtrykket OLED står for " Organisk lysemitterende diode", det bruger den samme teknologi, der bruges i de fleste af vores fjernsyn, men har færre pixels i forhold til dem. Det er rigtig sjovt at have disse seje displaymoduler, der skal forbindes med Arduino, da det får vores projekter til at se seje ud. Vi har dækket en komplet artikel om OLED-skærme og dens typer her.
Vi bruger en monokrom 7-benet SSD1306 0,96 ”OLED-skærm. Årsagen til at vælge denne skærm er, at den kan arbejde på tre forskellige kommunikationsprotokoller, såsom SPI 3 Wire-tilstand, SPI-firetrådstilstand og IIC-tilstand. Denne vejledning vil dække, hvordan du bruger modulet i SPI 4-leder tilstand, da det er den hurtigste kommunikationsmetode og standard.
Stifterne og dens funktioner er forklaret i nedenstående tabel.
Pinkode |
Pin-navn |
Andre navne |
Anvendelse |
1 |
Gnd |
Jord |
Jordstiften på modulet |
2 |
Vdd |
Vcc, 5V |
Power pin (3-5V tolerabel) |
3 |
SCK |
D0, SCL, CLK |
Fungerer som urstiften. Bruges til både I2C og SPI |
4 |
SDA |
D1, MOSI |
Modulets datapind. Bruges til både IIC og SPI |
5 |
RES |
RST, RESET |
Nulstiller modulet (nyttigt under SPI) |
6 |
DC |
A0 |
Data Command pin. Bruges til SPI-protokol |
7 |
CS |
Chip Select |
Nyttigt, når der bruges mere end et modul under SPI-protokol |
I denne vejledning betjener vi simpelthen modulet i 4-Wire SPI-tilstand, vi overlader resten til en anden tutorial.
Arduino-samfundet har allerede givet os en masse biblioteker, som kan bruges direkte til at gøre dette meget enklere. Jeg prøvede et par biblioteker og fandt ud af, at Adafruit_SSD1306-biblioteket var meget let at bruge og havde en håndfuld grafiske muligheder, derfor bruger vi det samme i denne vejledning. Men hvis dit projekt har en hukommelse / hastighedsbegrænsning, prøv at bruge U8g-biblioteket, da det fungerer hurtigere og optager mindre programhukommelse.
Hardware og forbindelser:
Den Circuit Diagram til SSD1306 OLED sammenknytning med Arduino er virkelig simpelt og er vist nedenfor
Vi har simpelthen oprettet en SPI-kommunikation mellem OLED-modulet og Arduino. Da OLED kører på 3V-5V og bruger meget lidt strøm, behøver den ikke en ekstern strømforsyning. Du kan simpelthen bruge ledninger til at oprette forbindelse eller bruge et brødbræt, som jeg har brugt, så det er let at eksperimentere. Forbindelsen er også angivet i fortællingen nedenfor
S. nr |
Pin-navn på OLED-modul |
Pin-navn på Arduino |
1 |
Gnd, Ground |
Jord |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Chip Select |
12 |
Bemærk: Du kan ikke visualisere baggrundsbelysning / glød på OLED-modulet bare ved at tænde for det. Du skal programmere det korrekt for at bemærke eventuelle ændringer på OLED-skærmen.
Programmering af SSD1306 OLED-skærm til Arduino:
Når forbindelserne er klar, kan du begynde at programmere Arduino. Som tidligere nævnt bruger vi Adafruit-biblioteket og GFX-biblioteket til at arbejde med dette OLED-modul. Følg trinene for at prøvekøre din OLED-skærm.
Trin 1: Download Adafruit-biblioteket og GFX-biblioteket fra Github ved hjælp af nedenstående link
- Adafruit Bibliotek
- GFX grafikbibliotek
Trin 2: Du skulle have downloadet to zip-filer. Føj dem nu til din Arduino ved at følge
Skitse-> Inkluder bibliotek -> Tilføj zip-bibliotek som vist nedenfor. Vælg derefter det bibliotek, vi lige har downloadet. Du kan kun vælge et bibliotek ad gangen, og derfor skal du gentage dette trin igen.
Trin 3: Start eksempelprogrammet ved at vælge Filer-> Eksempler-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino som vist på billedet nedenfor.
Trin 4: Inden i eksempelprogrammet øverst på linje 64 skal du tilføje linjen "#definer SSD1306_LCDHEIGHT 64" som vist på billedet nedenfor.
Trin 5: Upload nu programmet, og du skal se OLED-skærmen skyde op med standard Adafruit-eksempelkoden som vist i nedenstående billede. Den komplette arbejdsvideo er vist i slutningen.
Dette eksempelprogram viser dig alle mulige grafik, der kan vises på OLED-skærmen. Denne kode skal være nok for dig at oprette bitmaps, tegne linjer / cirkler / rektangler, spille med pixels, vise tegn og streng med forskellige skrifttyper og størrelse osv…
Hvis du vil forstå biblioteket og dets funktioner bedre, kan du læse videre. Hver junks af koden opdeles og forklares ved hjælp af kommentarlinjer. Komplet kode er angivet i slutningen af denne artikel
Visning og rydning af skærmen:
Skrivning på OLED-skærm er ligesom at skrive på et sort tavle, vi er nødt til at skrive værdierne og derefter rense det, før det kan overskrives. Følgende kommandoer bruges til at skrive og rydde displayet
display.display (); // Skriv for at vise display.clearDisplay (); // ryd displayet
Visning af en karaktervariabel:
For at få vist indholdet i en variabel kan følgende kode bruges.
char i = 5; // den variabel, der skal vises display.setTextSize (1); // Vælg størrelsen på tekstvisningen. SetTextColor (WHITE); // kun til monokrom visning er mulig display.setCursor (0,0); // 0,0 er det øverste venstre hjørne af OLED-skærmvisningen. Skriv (i); // Skriv den variabel, der skal vises
Tegning af en linje, cirkel, rektangel, trekant:
Hvis du vil tilføje nogle symboler til din skærm, kan du bruge følgende kode til at tegne et af følgende
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // ugyldig drawLine (x0, y0, x1, y1, farve); display.drawRect (i, i, display.width () - 2 * i, display.højde () - 2 * i, WHITE); // ugyldigt drawRect (x0, y0, w, h, farve); display.drawTriangle (display.width () / 2, display.højde () / 2-i, display.width () / 2-i, display.højde () / 2 + i, display.width () / 2+ i, display. højde () / 2 + i, HVID); // ugyldigt drawTriangle (x0, y0, x1, y1, x2, y2, farve); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // ugyldigt drawCircle (x0, y0, r, farve);
Tegning af en streng til skærmen:
Følgende stykke kode kan bruges til at vise enhver meddelelse på skærmen på et bestemt sted og en bestemt størrelse
display.setTextSize (2); // indstil størrelsen på tekstdisplayet. setTextColor (WHITE); // farveindstilling display.setCursor (10,0); // Strengen starter ved 10,0 (x, y) display.clearDisplay (); // Slet enhver tidligere skærm på skærmens display.println ("Circuit Digest"); // Udskriv strengen her “Circuit Digest” display.display (); // send teksten til skærmen
Visning af et bitmapbillede:
En upålidelig ting, der kan gøres med OLED-modulet, er, at det kan bruges til at vise bitmaps. Følgende kode bruges til at vise et bitmapbillede
statisk const usigneret 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); // ugyldigt drawBitmap (x, y, * bitmap, w, h, farve);
Som du kan se, skal bitmapdataene gemmes i programhukommelsen i form af PROMGMEM-direktivet for at få vist et billede. Kort sagt, vi er nødt til at instruere OLED-skærmen, hvad de skal gøre med hver pixel ved at sende den en sekvens eller værdier fra et array som vist ovenfor. Denne matrix indeholder billedets bitmapdata.
Det lyder måske kompliceret, men ved hjælp af et webværktøj er det meget nemt at konvertere et billede til en bit kortværdier og indlæse dem i ovenstående array.
Du skal blot indlæse billedet og justere indstillingerne for at få din foretrukne forhåndsvisning af billedet. Klik derefter på "Generer kode" kopier koden og indsæt den i din Array. Upload programmet, så er du færdig. Jeg prøvede at vise et batman-logo, og sådan blev det.
Der er stadig mange ting, du kan gøre med disse biblioteker. For at kende de komplette muligheder, besøg siden Adafruit GFX-grafik Primitives.
Håber du har denne kørende og klar til at implementere en OLED-skærm i nogle af dine projekter. Hvis du havde problemer, del dem i kommentarsektionen, og jeg vil gøre mit bedste for at rette dem.