- Vereiste hardware:
- Kennismaken met OLED-schermen:
- Hardware en aansluitingen:
- Programmering van het SSD1306 OLED-scherm voor Arduino:
De meesten van ons zullen bekend zijn met het 16 × 2 Dot matrix LCD-scherm dat in de meeste projecten wordt gebruikt om wat informatie aan de gebruiker weer te geven. Maar deze LCD-schermen hebben veel beperkingen in wat ze kunnen doen. In deze tutorial gaan we leren over OLED-schermen en hoe je ze Arduino kunt gebruiken. Er zijn veel soorten OLED-schermen op de markt en er zijn veel manieren om ze aan het werk te krijgen. In deze tutorial zullen we bespreken over de classificaties en ook welke het meest geschikt zijn voor uw project.
Vereiste hardware:
- 7-pins 128 × 64 OLED-weergavemodule (SSD1306)
- Arduino UNO / Nano
- Breadboard
- Verbindingsdraden
- Computer / laptop
Kennismaken met OLED-schermen:
De term OLED staat voor " Organic Light Emitting diode". Het gebruikt dezelfde technologie die in de meeste van onze televisies wordt gebruikt, maar heeft minder pixels dan deze. Het is echt leuk om deze cool uitziende displaymodules te laten aansluiten op de Arduino, omdat het onze projecten er cool uit zal laten zien. We hebben hier een volledig artikel over OLED-schermen en de typen ervan behandeld.
We gebruiken een monochroom 7-pins SSD1306 0,96 ”OLED-scherm. De reden om voor dit beeldscherm te kiezen, is dat het kan werken op drie verschillende communicatieprotocollen, zoals de SPI 3-draadsmodus, SPI-vierdraadsmodus en IIC-modus. Deze tutorial behandelt het gebruik van de module in SPI 4-draads modus, aangezien dit de snelste communicatiemodus is en de standaard modus.
De pinnen en de functies ervan worden in de onderstaande tabel uitgelegd.
Pincode |
Pin Naam |
Andere namen |
Gebruik |
1 |
GND |
Grond |
Aardingspin van de module |
2 |
Vdd |
Vcc, 5V |
Power pin (3-5V aanvaardbaar) |
3 |
SCK |
D0, SCL, CLK |
Fungeert als de klokpen. Wordt gebruikt voor zowel I2C als SPI |
4 |
SDA |
D1, MOSI |
Datapin van de module. Wordt gebruikt voor zowel IIC als SPI |
5 |
RES |
RST, RESET |
Reset de module (handig tijdens SPI) |
6 |
DC |
A0 |
Data Command-pin. Gebruikt voor SPI-protocol |
7 |
CS |
Chip selecteren |
Handig als er meer dan één module wordt gebruikt onder het SPI-protocol |
In deze tutorial zullen we de module gewoon in 4-Wire SPI-modus bedienen, de rest laten we over voor een andere tutorial.
De Arduino-community heeft ons al veel bibliotheken gegeven die direct kunnen worden gebruikt om dit een stuk eenvoudiger te maken. Ik heb een paar bibliotheken uitgeprobeerd en ontdekte dat de Adafruit_SSD1306-bibliotheek erg gemakkelijk te gebruiken was en een handvol grafische opties had, vandaar dat we dezelfde in deze tutorial zullen gebruiken. Maar als uw project een geheugen- / snelheidsbeperking heeft, probeer dan de U8g-bibliotheek te gebruiken, omdat deze sneller werkt en minder programmageheugen in beslag neemt.
Hardware en aansluitingen:
Het schakelschema voor de SSD1306 OLED-interface met Arduino is heel eenvoudig en wordt hieronder weergegeven
We hebben gewoon een SPI-communicatie tot stand gebracht tussen de OLED-module en Arduino. Omdat de OLED op 3V-5V werkt en zeer weinig stroom verbruikt, heeft deze geen externe voeding nodig. Je kunt eenvoudig draden gebruiken om de verbinding te maken of een breadboard gebruiken zoals ik heb gebruikt, zodat het gemakkelijk is om te experimenteren. De verbinding wordt ook vermeld in het onderstaande verhaal
S.No |
Pin Naam op OLED-module |
Pin naam op Arduino |
1 |
Gnd, grond |
Grond |
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 |
Opmerking: u kunt geen achtergrondverlichting / gloed op de OLED-module visualiseren door deze alleen aan te zetten. U moet het correct programmeren om eventuele wijzigingen op het OLED-scherm op te merken.
Programmering van het SSD1306 OLED-scherm voor Arduino:
Zodra de verbindingen klaar zijn, kun je beginnen met het programmeren van de Arduino. Zoals eerder gezegd zullen we de Adafruit-bibliotheek en GFX-bibliotheek gebruiken om met deze OLED-module te werken. Volg de stappen om uw OLED-scherm te testen.
Stap 1: Download de Adafruit-bibliotheek en de GFX-bibliotheek van Github via de onderstaande link
- Adafruit Bibliotheek
- GFX grafische bibliotheek
Stap 2: U zou twee zip-bestanden moeten hebben gedownload. Voeg ze nu toe aan je Arduino door te volgen
Schets-> Bibliotheek opnemen -> Zip-bibliotheek toevoegen zoals hieronder weergegeven. Selecteer vervolgens de bibliotheek die we zojuist hebben gedownload. U kunt slechts één bibliotheek tegelijk selecteren, daarom moet u deze stap opnieuw herhalen.
Stap 3: Start het voorbeeldprogramma door Bestand-> Voorbeelden-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino te selecteren, zoals weergegeven in de onderstaande afbeelding.
Stap 4: Voeg in het voorbeeldprogramma bovenaan regel 64 de regel "#define SSD1306_LCDHEIGHT 64" toe zoals weergegeven in de onderstaande afbeelding.
Stap 5: Upload nu het programma en je zou het OLED-scherm moeten zien opstarten met de standaard Adafruit-voorbeeldcode, zoals weergegeven in de onderstaande afbeelding. De volledige werkende video wordt aan het einde gegeven.
Dit voorbeeldprogramma toont u alle mogelijke afbeeldingen die op het OLED-scherm kunnen worden weergegeven. Deze code zou voldoende moeten zijn om bitmaps te maken, lijnen / cirkels / rechthoeken te tekenen, met pixels te spelen, tekens en tekenreeksen weer te geven met verschillende lettertypen en grootte enz…
Als u de bibliotheek en zijn functies beter wilt begrijpen, kunt u verder lezen. Elke junks van de code wordt opgesplitst en uitgelegd met behulp van commentaarregels. De volledige code wordt aan het einde van dit artikel gegeven
Het scherm weergeven en wissen:
Schrijven op een OLED-scherm is net als schrijven op een zwart bord, we moeten de waarden schrijven en deze vervolgens opschonen voordat ze kunnen worden overschreven. De volgende opdrachten worden gebruikt om het scherm te schrijven en leeg te maken
display.display (); // Schrijf om display.clearDisplay () weer te geven; // maak het scherm leeg
Een tekenvariabele weergeven:
Om de inhoud in een variabele weer te geven, kan de volgende code worden gebruikt.
char i = 5; // de weer te geven variabele display.setTextSize (1); // Selecteer de grootte van de tekstweergave. SetTextColor (WIT); // voor monochrome weergave is alleen wit mogelijk display.setCursor (0,0); // 0,0 is de linkerbovenhoek van het OLED-scherm. Schrijf (i); // Schrijf de variabele die moet worden weergegeven
Een lijn, cirkel, rechthoek, driehoek tekenen:
Als u enkele symbolen aan uw display wilt toevoegen, kunt u de volgende code gebruiken om een van de volgende te tekenen
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WIT); // void drawLine (x0, y0, x1, y1, kleur); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WIT); // void drawRect (x0, y0, w, h, color); 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, WIT); // leegte drawTriangle (x0, y0, x1, y1, x2, y2, kleur); display.drawCircle (display.width () / 2, display.height () / 2, i, WIT); // leegte drawCircle (x0, y0, r, kleur);
Een koord naar het scherm trekken:
Het volgende stuk code kan worden gebruikt om elk bericht op het scherm op een bepaalde plaats en grootte weer te geven
display.setTextSize (2); // stel de grootte van de tekstweergave in. setTextColor (WIT); // kleurinstelling display.setCursor (10,0); // De tekenreeks begint bij 10,0 (x, y) display.clearDisplay (); // Wis een eerdere weergave op het scherm display.println ("Circuit Digest"); // Druk hier de string af “Circuit Digest” display.display (); // stuur de tekst naar het scherm
Een bitmapafbeelding weergeven:
Een onbetrouwbaar ding dat kan worden gedaan met de OLED-module, is dat deze kan worden gebruikt om bitmaps weer te geven. De volgende code wordt gebruikt om een bitmapafbeelding weer te geven
statische const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B011110011, B000110011, B100110011, B100110011, B100110011, B10011110 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WIT); // void drawBitmap (x, y, * bitmap, w, h, kleur);
Zoals u kunt zien, moeten de bitmapgegevens in het programmageheugen worden opgeslagen in de vorm van een PROMGMEM-richtlijn om een afbeelding weer te geven. Simpel gezegd, we moeten het OLED-scherm instrueren wat het met elke pixel moet doen door het een reeks of waarden uit een array door te geven, zoals hierboven weergegeven. Deze array bevat de bitmapgegevens van de afbeelding.
Het klinkt misschien ingewikkeld, maar met behulp van een webtool is het heel gemakkelijk om een afbeelding om te zetten in bitmap-waarden en deze in de bovenstaande array te laden.
Laad gewoon de afbeelding en pas de instellingen aan om uw voorkeursvoorbeeld van de afbeelding te krijgen. Klik vervolgens op "Generate Code", kopieer de code en plak deze in uw Array. Upload het programma en je bent klaar. Ik heb geprobeerd een batman-logo weer te geven en dit is hoe het bleek.
Er zijn nog steeds veel dingen die u met deze bibliotheken kunt doen. Bezoek de Adafruit GFX graphics Primitives-pagina om de volledige mogelijkheden te kennen.
Ik hoop dat je dit aan de gang hebt en klaar bent om een OLED-scherm in sommige van je projecten te implementeren. Als je een probleem had, deel ze dan in het commentaargedeelte en ik zal mijn best doen om ze recht te zetten.