Arduino - SSD1309 OLED Display 128x64 | 2.42 inch I2C OLED Tutorial
Een OLED (Organic Light-Emitting Diode) display heeft zelfoplichtende pixels die diepe zwarttinten, hoog contrast en brede kijkhoeken leveren — daardoor is het een uitstekende upgrade ten opzichte van traditionele LCD-schermen. De SSD1309 is de driver IC die vaak wordt gebruikt op 2.42-inch (soms aangeduid als 2.4-inch) 128×64 I2C OLED-modules.

In deze stapsgewijze handleiding leert u hoe u het SSD1309 OLED 128×64 aansluit en programmeert met een Arduino-bord met behulp van de DIYables_OLED_SSD1309 bibliotheek. We behandelen specifiek:
- Het aansluiten van het 2.42-inch SSD1309 OLED op Arduino via I2C
- Tekst en cijfers afdrukken op het scherm
- Tekst zowel verticaal als horizontaal centreren
- Tekenen van geometrische vormen (lijnen, rechthoeken, cirkels, driehoeken, afgeronde rechthoeken)
- Weergeven van monochrome bitmap-afbeeldingen
- Hardware scrollen in vier richtingen
- Het aanpassen van contrast en dimmen van het display
- Gebruik van aangepaste externe lettertypen uit de Adafruit GFX lettertypeverzameling
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over het SSD1309 2.42-Inch OLED Display
De SSD1309 is een single-chip CMOS OLED driver IC ontworpen voor 128×64 dot-matrix panelen. Het is register-compatibel met de veelgebruikte SSD1306, waardoor veel bestaande codevoorbeelden met minimale aanpassingen bruikbaar zijn. De belangrijkste hardwareverschillen zijn:
- Geen ingebouwde charge-pomp — de SSD1309 heeft een externe VCC-voedingsrail nodig, hoewel vrijwel alle breakout boards (inclusief 2.42- en 2.4-inch modules) zijn uitgerust met een onboard boost converter, waardoor dit voor u transparant is.
- Hogere spanningsbestendigheid — de SSD1309 accepteert tot 16 V VCC, terwijl de SSD1306 beperkt is tot ongeveer 4,2 V.
De 2.42 inch (2.4 inch) OLED-module gebruikt meestal de SSD1309-driver en heeft een resolutie van 128×64 pixels met I2C-interface. De panellkleur (wit, blauw, geel, groen of dual-zone) wordt bepaald door het fysieke OLED-materiaal en is niet softwarematig aan te passen.
Deze handleiding communiceert met het display via de I2C bus, wat slechts twee signaaldraadjes (SDA en SCL) vereist en het mogelijk maakt om de bus te delen met andere I2C-apparaten.
SSD1309 OLED Pinout (I2C Module)
De typische 2.42-inch SSD1309 I2C OLED-module heeft vier pinnen:
- GND — Verbind met de aardingsrail van de Arduino.
- VCC — Voedingsingang. Sluit aan op de Arduino 5 V (of 3,3 V afhankelijk van de onboard spanningsregelaar van de module).
- SCL — I2C kloklijn.
- SDA — I2C datalijn.

※ Notiz:
- De volgorde van pinnen kan verschillen per fabrikant. Controleer altijd de labels die op uw module zijn gedrukt voordat u aansluit.
- Deze handleiding is getest met de 2.42 inch SSD1309 OLED display van DIYables. Andere SSD1309-gebaseerde 2.4/2.42-inch modules werken doorgaans identiek.
Aansluitschema — Arduino & SSD1309 OLED 128×64
- Schematische bedrading tussen Arduino en het 2.42 inch SSD1309 OLED 128×64

This image is created using Fritzing. Click to enlarge image
- Foto van de daadwerkelijke bedrading tussen Arduino en SSD1309 OLED 128×64

This image is created using Fritzing. Click to enlarge image
Bij gebruik van een ander Arduino-type veranderen de I2C-pinnen. De onderstaande tabel toont de correcte aansluitingen:
| OLED Module | Arduino Uno, Nano | Arduino Mega |
|---|---|---|
| Vin | 5V | 5V |
| GND | GND | GND |
| SDA | A4 | 20 |
| SCL | A5 | 21 |
Aan de slag — SSD1309 OLED met Arduino
Stap 1: Installeer de DIYables_OLED_SSD1309 Bibliotheek
- Open de Arduino IDE en klik op het Bibliotheken-icoon in de linkerzijbalk.
- Typ "DIYables_OLED_SSD1309" in het zoekvak en zoek de bibliotheek gepubliceerd door DIYables.
- Klik op de Installeren-knop.

- De IDE vraagt vervolgens om de benodigde afhankelijkheid (Adafruit GFX Library) te installeren. Klik op Alles installeren om door te gaan.

Stap 2: Basispatroon in Programmeren
Elke sketch die het SSD1309 aanstuurt volgt hetzelfde patroon: headers includen, een display-object aanmaken, initialiseren in setup(), tekenen in de off-screen buffer, en dan met display() de buffer naar het scherm sturen.
- Voeg de benodigde headers toe:
- Stel de schermafmetingen in (128×64 voor de 2.42-inch module):
- Maak het display-object aan (geef -1 door als er geen reset-pin is aangesloten):
- Initialiseert het display binnen setup():
- Daarna kunt u elke tekenfunctie aanroepen (clearDisplay(), drawPixel(), print(), enz.) gevolgd door oled.display() om het scherm te vernieuwen.
※ Notiz:
Alle voorbeeldcode in deze handleiding is bedoeld voor het SSD1309 OLED 128×64 (2.42 inch) en gebruikt de DIYables_OLED_SSD1309 bibliotheek.
Arduino Code — Hello World op SSD1309 OLED
Het eenvoudigste beginpunt: druk een paar regels tekst af in verschillende groottes.
Arduino Code — Tekst Weergeven op SSD1309 OLED
Het volgende voorbeeld toont meer tekstfuncties — meerdere tekstgroottes, nummernotatie, en de F() macro om RAM te besparen.
Handige Display Functies Referentie
Hieronder een snel overzicht van de meest gebruikte functies bij het werken met de SSD1309 OLED via de DIYables bibliotheek:
- oled.clearDisplay() — wis de framebuffer (alle pixels uit).
- oled.display() — verzend de buffer naar het OLED scherm zodat wijzigingen zichtbaar worden.
- oled.drawPixel(x, y, color) — zet of wis een individuele pixel.
- oled.setTextSize(n) — schaalt het lettertype met factor *n* (1 = 6×8, 2 = 12×16, … tot 8).
- oled.setCursor(x, y) — verplaatst de tekstcursor naar pixelcoördinaten *(x, y)*.
- oled.setTextColor(SSD1309_PIXEL_ON) — alleen voorgrondkleur van tekst (achtergrond is transparant).
- oled.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — tekst met expliciete achtergrondkleur.
- oled.println("bericht") — print een tekstregel en gaat naar de volgende regel.
- oled.println(getal) — print een geheel getal in decimale weergave.
- oled.println(getal, HEX) — print een geheel getal in hexadecimale weergave.
- oled.startscrollright(start, stop) — hardware-scroll naar rechts tussen pagina *start* en pagina *stop*.
- oled.startscrollleft(start, stop) — hardware-scroll naar links.
- oled.startscrolldiagright(start, stop) — hardware-scroll diagonaal rechts.
- oled.startscrolldiagleft(start, stop) — hardware-scroll diagonaal links.
- oled.stopscroll() — stopt elke actieve hardware-scroll.
- oled.setContrast(value) — stel helderheid in (0–255).
- oled.dim(true/false) — snel dimmen naar minimum of terugzetten naar de vorige helderheid.
- oled.invertDisplay(true/false) — hardware-inversion van kleuren (aan-uit pixels) uitvoeren.
Hoe tekst verticaal en horizontaal centreren op de SSD1309 OLED
Arduino Code — Vormen Tekenen op SSD1309 OLED
Omdat de DIYables_OLED_SSD1309 bibliotheek Adafruit_GFX uitbreidt, krijgt u een complete set tekenfuncties: pixels, lijnen, rechthoeken, gevulde rechthoeken, cirkels, gevulde cirkels, driehoeken, gevulde driehoeken, en afgeronde rechthoeken. De onderstaande sketch doorloopt ze allemaal met geanimeerde demo’s.
Arduino Code — Hardware Scrollen op SSD1309 OLED
De SSD1309 heeft een ingebouwde scroll-engine die de beeldinhoud verschuift zonder CPU-belasting. De DIYables bibliotheek biedt vier scrollrichtingen: rechts, links, diagonaal rechts en diagonaal links. Elke functie neemt een startpagina en een stoppagina (pagina’s zijn horizontale stroken van 8 pixels hoog, genummerd 0–7 op een 64 pixels hoog scherm).
※ Notiz:
Roep altijd display() aan om uw inhoud op het OLED te plaatsen voor het starten van scrollen. Vermijd tekenen tijdens het scrollen — stop eerst met stopscroll().
Arduino Code — Bitmap Afbeelding weergeven op SSD1309 OLED
Om een bitmap op het SSD1309 OLED te tonen moet u eerst uw afbeelding converteren naar een C-byte-array. Gebruik daarvoor de gratis image2cpp online tool:
- Upload uw afbeelding (PNG, JPG, BMP, etc.).
- Stel de canvasgrootte in op 128×64 (of kleiner).
- Kies Arduino code als uitvoerformaat.
- Kopieer de gegenereerde array naar uw sketch.

Het onderstaande voorbeeld wisselt tussen een 16×16 hart-icoon en een full-width DIYables logo:
※ Notiz:
- De bitmap-afmetingen mogen de schermresolutie niet overschrijden (128×64 voor de 2.42 inch module).
Arduino Code — Contrast en Dimbare Helderheid op SSD1309 OLED
De SSD1309 ondersteunt 256 contrastniveaus (0–255). De DIYables bibliotheek biedt setContrast() voor fijne aanpassing en dim() voor snelle schakeling tussen minimale helderheid en de eerder ingestelde waarde.
Arduino Code — Aangepaste Externe Lettertypen op SSD1309 OLED
De Adafruit GFX bibliotheek bevat tientallen schaalbare FreeFont lettertypen (Serif, Sans, Mono — elk in Regular, Bold, Italic en vier formaten). U activeert ze op het SSD1309 display door de bijbehorende header te includen en setFont() aan te roepen.
※ Notiz:
- Bij gebruik van een extern lettertype verwijst de Y-coördinaat van de cursor naar de basislijn van de tekst, niet naar de linker bovenhoek. Dit wijkt af van het ingebouwde 5×7 lettertype.
- Externe lettertypen worden opgeslagen in flash (PROGMEM). Gebruik ze spaarzaam op geheugenbeperkte AVR-borden (Arduino Uno = 32 KB flash).
SSD1309 OLED Problemen Oplossen
Als er niets verschijnt op de 2.42 inch SSD1309 OLED na het uploaden van uw sketch, controleer dan het volgende:
- Controleer de bedrading — bevestig dat SDA, SCL, VCC en GND correct zijn aangesloten op de juiste Arduino-pinnen.
- Bevestig de driver chip — deze bibliotheek is ontworpen voor de SSD1309. Als uw module een andere controller gebruikt (bijv. SH1106), zal het niet correct werken.
- Controleer het I2C-adres — de meeste SSD1309 modules staan standaard op 0x3C, maar sommige gebruiken 0x3D. Gebruik onderstaande I2C scanner om het adres te detecteren:
Verwachte Seriële Monitor output bij detectie van het SSD1309:
- Zorg dat display() wordt aangeroepen — de SSD1309 gebruikt een framebuffer. Tekenfuncties wijzigen alleen het RAM-buffer; er verschijnt niets op het scherm totdat u oled.display() aanroept.
- Controleer de voeding — het 2.42 inch module verbruikt meer stroom dan kleinere OLED’s. Zorg dat uw voeding voldoende stroom kan leveren (meestal 20–40 mA bij maximale helderheid).