Arduino Uno R4 - SSD1309 OLED Display 128x64 | 2.42 inch I2C OLED Gids
Organic Light-Emitting Diode (OLED) displays beschikken over zelfverlichtende pixels die echte zwarte kleuren, superieure contrastverhoudingen en uitstekende kijkhoeken vanuit alle richtingen produceren — wat aanzienlijke voordelen biedt ten opzichte van conventionele LCD-technologie. De SSD1309 driver chip voedt de 2.42-inch (ook op de markt gebracht als 2.4-inch) 128×64 monochroom OLED modules via I2C communicatie.

Deze praktische gids leidt u door het interfacen van de SSD1309 OLED 128×64 met uw Arduino Uno R4 board via de DIYables_OLED_SSD1309 bibliotheek. U zult ontdekken hoe u:
- Het 2.42-inch SSD1309 OLED kunt aansluiten op Arduino Uno R4 met behulp van de I2C bus
- Tekststrings en numerieke waarden op het scherm kunt weergeven
- Tekst horizontaal en verticaal kunt centreren
- Geometrische primitieven kunt renderen (lijnen, rechthoeken, cirkels, driehoeken, afgeronde vormen)
- Monochroom bitmap graphics kunt tonen
- Hardware scrolling in meerdere richtingen kunt activeren
- Display helderheid en contrast niveaus kunt controleren
- Aangepaste lettertypen uit de Adafruit GFX font bibliotheek kunt integreren
Hardware Vereisten
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 dient als een speciale CMOS driver IC ontworpen voor 128×64 pixel OLED matrices. De register set behoudt compatibiliteit met de populaire SSD1306, waardoor hergebruik van code mogelijk is met kleine aanpassingen. Opmerkelijke hardware verschillen zijn:
- Externe voedingsvereiste — anders dan de geïntegreerde charge pump van de SSD1306, vertrouwt de SSD1309 op een externe VCC voeding. Echter, commercieel verkrijgbare breakout boards (inclusief 2.42-inch en 2.4-inch varianten) bevatten onboard boost converters, waardoor dit verschil transparant is tijdens gebruik.
- Uitgebreid voltage bereik — de SSD1309 kan tot 16 V VCC input aan, terwijl de SSD1306 maximaal ongeveer 4.2 V aankan.
De 2.42 inch (2.4 inch) OLED module gebruikt doorgaans de SSD1309 controller en biedt een 128×64 resolutie display die communiceert via I2C protocol. Display kleur (wit, blauw, geel, groen, of dual-color zones) hangt af van het fysieke OLED substraat en kan niet worden gewijzigd via software commando's.
Deze handleiding interfacet met het display via de I2C bus, waardoor slechts twee signaallijnen (SDA en SCL) nodig zijn en bus deling met extra I2C randapparatuur mogelijk is.
SSD1309 OLED Pinout (I2C Module)
Standaard 2.42-inch SSD1309 I2C OLED modules hebben vier aansluitpinnen:
- GND — Verbind met Arduino Uno R4 aarde referentie.
- VCC — Voedingsspanning ingang. Sluit aan op Arduino Uno R4 5 V uitgang (of 3.3 V als module dit ondersteunt).
- SCL — I2C klok signaallijn.
- SDA — I2C data signaallijn.

※ Notiz:
- Pin indeling verschilt tussen fabrikanten. Controleer altijd de silkscreen labels op uw specifieke module voordat u verbindingen maakt.
- Deze gids is gevalideerd met het 2.42 inch SSD1309 OLED display van DIYables. Andere SSD1309-gebaseerde 2.4/2.42-inch modules zouden identiek moeten functioneren.
Bedradingsschema — Arduino Uno R4 & SSD1309 OLED 128×64
- Schematische verbindingen tussen Arduino Uno R4 en het 2.42 inch SSD1309 OLED 128×64

This image is created using Fritzing. Click to enlarge image
- Fysieke bedradings foto tussen Arduino Uno R4 en SSD1309 OLED 128×64

This image is created using Fritzing. Click to enlarge image
Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.
De Arduino Uno R4 gebruikt dezelfde I2C pin locaties als de klassieke Uno. Verbindingsdetails:
| OLED Module | Arduino Uno R4 |
|---|---|
| Vin | 5V |
| GND | GND |
| SDA | A4 (of SDA pin) |
| SCL | A5 (of SCL pin) |
Aan de Slag — SSD1309 OLED met Arduino Uno R4
Stap 1: Installeer de DIYables_OLED_SSD1309 Bibliotheek
- Start de Arduino IDE en klik op het Libraries icoon in de linker zijbalk.
- Voer "DIYables_OLED_SSD1309" in het zoekveld in en vind de bibliotheek door DIYables.
- Klik op de Install knop.

- De IDE zal u vragen om de vereiste afhankelijkheid (Adafruit GFX Library) te installeren. Klik Install All.

Stap 2: Basis Programmeerstructuur
Alle SSD1309 sketches volgen deze consistente structuur: include headers, instantieer een display object, initialiseer het in setup(), teken inhoud in de frame buffer, en transfer vervolgens de buffer naar het scherm met display().
- Include benodigde headers:
- Definieer de schermafmetingen (128×64 voor de 2.42-inch module):
- Instantieer het display object (gebruik -1 wanneer geen reset pin is verbonden):
- Initialiseer het display in setup():
- Na initialisatie, roep tekenoperaties aan (clearDisplay(), drawPixel(), print(), etc.) gevolgd door oled.display() om het scherm te verversen.
※ Notiz:
Alle code voorbeelden in deze gids zijn gericht op de SSD1309 OLED 128×64 (2.42 inch) en gebruiken de DIYables_OLED_SSD1309 bibliotheek met Arduino Uno R4.
Arduino Uno R4 Code — Hello World op SSD1309 OLED
De eenvoudigste demonstratie: tekst weergeven in meerdere groottes.
Arduino Uno R4 Code — Tekst Weergeven op SSD1309 OLED
Dit voorbeeld toont geavanceerde tekstfuncties — variabele groottes, numerieke opmaak, en de F() macro voor RAM behoud.
Handige Display Functies Referentie
Snelle referentie voor veelgebruikte SSD1309 OLED functies via de DIYables bibliotheek:
- oled.clearDisplay() — wis de frame buffer (alle pixels uit).
- oled.display() — transfer de buffer naar de OLED om wijzigingen zichtbaar te maken.
- oled.drawPixel(x, y, color) — zet of wis een enkele pixel.
- oled.setTextSize(n) — schaal het lettertype met factor *n* (1 = 6×8, 2 = 12×16, …, tot 8).
- oled.setCursor(x, y) — positioneer de tekstcursor op pixel coördinaten *(x, y)*.
- oled.setTextColor(SSD1309_PIXEL_ON) — alleen tekst voorgrond (transparante achtergrond).
- oled.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — tekst met expliciete achtergrondkleur.
- oled.println("message") — print een string en ga naar de volgende regel.
- oled.println(number) — print een geheel getal in decimaal formaat.
- oled.println(number, HEX) — print een geheel getal in hexadecimaal formaat.
- oled.startscrollright(start, stop) — hardware-scroll rechts tussen pagina *start* en pagina *stop*.
- oled.startscrollleft(start, stop) — hardware-scroll links.
- oled.startscrolldiagright(start, stop) — hardware-scroll diagonaal rechts.
- oled.startscrolldiagleft(start, stop) — hardware-scroll diagonaal links.
- oled.stopscroll() — stop elke actieve hardware scroll.
- oled.setContrast(value) — pas display helderheid aan (0–255).
- oled.dim(true/false) — dim het display snel naar minimum of herstel vorige contrast.
- oled.invertDisplay(true/false) — hardware-niveau kleurinversie (aan pixels ↔ uit pixels).
Hoe Tekst Verticaal en Horizontaal te Centreren op de SSD1309 OLED
Arduino Uno R4 Code — Vormen Tekenen op SSD1309 OLED
De DIYables_OLED_SSD1309 bibliotheek erft van Adafruit_GFX, wat complete vorm-tekenvaardigheden biedt: pixels, lijnen, rechthoeken, gevulde rechthoeken, cirkels, gevulde cirkels, driehoeken, gevulde driehoeken, en afgeronde rechthoeken. De volgende sketch demonstreert ze allemaal met geanimeerde sequenties.
Arduino Uno R4 Code — Hardware Scrolling op SSD1309 OLED
De SSD1309 bevat een hardware scrolling engine die display inhoud verplaatst zonder CPU interventie. De DIYables bibliotheek biedt vier scroll modi: rechts, links, diagonaal-rechts, en diagonaal-links. Elk accepteert een start pagina en stop pagina parameter (pagina's zijn 8-pixel-hoge horizontale banden genummerd 0–7 op een 64-pixel-hoog display).
※ Notiz:
Roep altijd display() aan om uw inhoud naar de OLED over te dragen voordat u een scroll initieert. Vermijd het renderen van nieuwe inhoud terwijl scrolling actief is — roep eerst stopscroll() aan.
Arduino Uno R4 Code — Bitmap Afbeelding Weergeven op SSD1309 OLED
Om een bitmap op de SSD1309 OLED weer te geven moet u eerst uw afbeelding converteren naar een C byte array. Gebruik de gratis image2cpp online tool voor deze conversie:
- Upload uw afbeeldingsbestand (PNG, JPG, BMP, etc.).
- Configureer de canvas grootte naar 128×64 (of kleiner).
- Selecteer Arduino code als uitvoerformaat.
- Kopieer de gegenereerde array naar uw sketch.

Het onderstaande voorbeeld wisselt tussen een 16×16 hart icoon en een volledig-breed DIYables logo:
※ Notiz:
- Bitmap afmetingen mogen de schermresolutie niet overschrijden (128×64 voor de 2.42 inch module).
Arduino Uno R4 Code — Contrast en Dim op SSD1309 OLED
De SSD1309 biedt 256 contrast niveaus (0–255). De DIYables bibliotheek biedt setContrast() voor precieze controle en dim() voor snelle omschakeling tussen minimale helderheid en het eerder ingestelde niveau.
Arduino Uno R4 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 meerdere groottes). U kunt elk van hen gebruiken op het SSD1309 display door de relevante header te includen en setFont() aan te roepen.
※ Notiz:
- Wanneer een extern lettertype actief is, verwijst de cursor Y coördinaat naar de tekst baseline, niet de linkerbovenhoek. Dit verschilt van het ingebouwde 5×7 font gedrag.
- Externe lettertypen worden opgeslagen in flash (PROGMEM). Op geheugen-beperkte boards zoals de klassieke Uno (32 KB flash), gebruik ze spaarzaam. De Arduino Uno R4 heeft meer geheugen, wat meer flexibiliteit toestaat.
SSD1309 OLED Probleemoplossing met Arduino Uno R4
Als het 2.42 inch SSD1309 OLED leeg blijft na het uploaden van uw sketch, werk deze diagnostische stappen door:
- Controleer verbindingen — bevestig dat SDA, SCL, VCC en GND zijn aangesloten op de juiste Arduino Uno R4 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 reageren.
- Controleer het I2C adres — de meeste SSD1309 modules gebruiken standaard 0x3C, maar sommige gebruiken 0x3D. Voer de I2C scanner sketch hieronder uit om het werkelijke adres te detecteren:
Verwachte Serial Monitor uitvoer wanneer de SSD1309 wordt gedetecteerd:
- Zorg ervoor dat display() wordt aangeroepen — de SSD1309 gebruikt een frame buffer. Tekenfuncties wijzigen alleen de buffer in RAM; niets verschijnt op het scherm totdat u oled.display() aanroept.
- Controleer voeding — de 2.42 inch module gebruikt meer stroom dan kleinere OLEDs. Zorg ervoor dat uw voedingsbron voldoende stroom kan leveren (doorgaans 20–40 mA bij volle helderheid).