Arduino - OLED
De OLED (Organic Light-Emitting Diode) display is een alternatief voor het LCD-display. De OLED is superlicht, bijna zo dun als papier, flexibel, en produceert een helderder en scherper beeld.
In deze handleiding gaan we leren:
- Hoe u een OLED-display met Arduino gebruikt.
- Hoe u tekst en cijfers op een OLED weergeeft met Arduino
- Hoe u tekst en cijfers verticaal en horizontaal centreert op een OLED
- Hoe u tekent op een OLED met Arduino
- Hoe u een afbeelding toont op een OLED met Arduino
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over OLED Display
Er zijn vele soorten OLED-displays die verschillen in communicatie-interface, grootte en kleuren:
- Communicatie-interface: I2C, SPI
- Grootte: 128x64, 128×32...
- Kleur: wit, blauw, dual color...

SPI is over het algemeen sneller dan I2C, maar vereist meer Arduino-pinnen. I2C gebruikt slechts twee pinnen en kan gedeeld worden met andere I2C-periferieapparaten. Het is een afweging tussen aantal pinnen en communicatiesnelheid. De keuze is aan u. Voor OLED met I2C interface zijn er verschillende soorten drivers zoals SSD1306, SH1106 driver. Deze tutorial gebruikt SSD1306 I2C OLED Display 128x64 en 128x32.
I2C OLED Display Pinout
- GND pin: moet verbonden zijn met de aarde (ground) van Arduino
- VCC pin: is de voeding voor het display die we aansluiten op de 5 volt pin van de Arduino
- SCL pin: is de seriële klokpin voor de I2C-interface
- SDA pin: is de seriële databpin voor de I2C-interface

※ Notiz:
- De volgorde van pins op het OLED-module kan verschillen per fabrikant en type module. Gebruik ALTJD de labels op het display zelf. Kijk goed!
- Deze tutorial gebruikt het OLED-display met de SSD1306 I2C driver. Wij hebben getest met OLED-display van DIYables. Dit werkt zonder problemen.
Bedradingsschema
- Bedradingsschema tussen Arduino en OLED 128x64

This image is created using Fritzing. Click to enlarge image
- Bedradingsschema tussen Arduino en OLED 128x32

This image is created using Fritzing. Click to enlarge image
- Het daadwerkelijke bedradingsschema tussen Arduino en OLED 128x64

This image is created using Fritzing. Click to enlarge image
- Het daadwerkelijke bedradingsschema tussen Arduino en OLED 128x32

This image is created using Fritzing. Click to enlarge image
Als u een ander Arduino bord gebruikt dan Uno, kunnen de pinnen verschillend zijn. Raadpleeg onderstaande tabel voor andere Arduino-borden:
| OLED Module | Arduino Uno, Nano | Arduino Mega |
|---|---|---|
| Vin | 5V | 5V |
| GND | GND | GND |
| SDA | A4 | 20 |
| SCL | A5 | 21 |
Hoe OLED te gebruiken met Arduino
Installeer SSD1306 OLED bibliotheek
- Navigeer naar het Libraries-icoon in de linkerbalk van de Arduino IDE.
- Zoek op “SSD1306”, en zoek de SSD1306 bibliotheek van Adafruit
- Klik op de Installeren-knop om de bibliotheek te installeren.

- U wordt gevraagd om een aantal andere bibliotheek-afhankelijkheden te installeren
- Klik op de Alles installeren-knop om alle afhankelijkheden te installeren.

Hoe te programmeren voor OLED
- Bibliotheken includen
- Schermgrootte definiëren indien OLED 128x64
- Schermgrootte definiëren indien OLED 128x32
- Een SSD1306 OLED-object declareren
- In de setup() functie initialiseert u het OLED-display
- Hierna kunt u tekst en afbeeldingen weergeven, lijnen tekenen ...
※ Notiz:
Vanaf dit punt worden alle codes gegeven voor OLED 128x64, maar u kunt ze eenvoudig aanpassen voor OLED 128x32 door de schermgrootte aan te passen en coördinaten te wijzigen indien nodig.
Arduino Code - Tekst weergeven op OLED
Hieronder enkele functies die u kunt gebruiken om tekst op de OLED weer te geven:
- oled.clearDisplay(): zet alle pixels uit
- oled.drawPixel(x,y, color): plot een pixel op de x,y coördinaten
- oled.setTextSize(n): stelt de lettergrootte in, ondersteunt groottes van 1 tot 8
- oled.setCursor(x,y): stelt de coördinaten in om tekst te beginnen schrijven
- oled.setTextColor(WHITE): stelt de tekstkleur in
- oled.setTextColor(BLACK, WHITE): stelt de tekstkleur en achtergrondkleur in
- oled.println(“message”): print de tekst
- oled.println(number): print een getal
- oled.println(number, HEX): print een getal in hexadecimale notatie
- oled.display(): roep deze methode aan om de wijzigingen zichtbaar te maken
- oled.startscrollright(start, stop): scroll tekst van links naar rechts
- oled.startscrollleft(start, stop): scroll tekst van rechts naar links
- oled.startscrolldiagright(start, stop): scroll tekst diagonaal van linker onderhoek naar rechter bovenhoek
- oled.startscrolldiagleft(start, stop): scroll tekst diagonaal van rechter onderhoek naar linker bovenhoek
- oled.stopscroll(): stopt het scrollen
Hoe tekst/cijfer verticaal en horizontaal te centreren op OLED
Arduino Code - Tekenen op OLED
Arduino Code – Afbeelding weergeven
Om een afbeelding op de OLED te tekenen, moeten we eerst de afbeelding (in elk formaat) converteren naar een bitmap-array. De conversie kan worden gedaan met deze online tool. Zie hieronder een voorbeeld hoe u een afbeelding omzet naar een bitmap-array. Ik heb het Arduino-logo geconverteerd naar een bitmap-array.

Na het converteren kopieert u de array code en vervangt u de ArduinoIcon-array in onderstaande code.
※ Notiz:
- De afbeeldingsgrootte moet kleiner of gelijk zijn aan het schermformaat.
- Wilt u de code aanpassen voor OLED 128x32, dan moet u de afbeelding herschalen en de breedte/hoogte in de oled.drawBitmap(); functie aanpassen.
OLED Probleemoplossing
Als het OLED-display niets weergeeft, controleer dan onderstaande checklist:
- Controleer of de bedrading correct is.
- Controleer of uw I2C OLED de SSD1306 driver gebruikt.
- Controleer het I2C-adres van de OLED door onderstaande I2C Address Scanner code op Arduino te draaien.
Resultaat op de Serial Monitor: