Arduino – Display OLED via SPI (SSD1306)

Hardware

OLED 128x32 SPI display (SSD1306)

Deze pagina beschrijft het aansluiten van een OLED 128×32 SPI display op een arduino.
Het OLED display komt van Adafruit, het aansluiten daarvan staat hier beschreven.

Wat heb je nodig?

1) Adafruit SSD1306 library
2) Adafruit GFX library

Pinout

OLED 128x32 SPI display (SSD1306) bovenkant 
Pin:Functie:
1CS (Chip Select)
2RST
3D/C
4CLK (Clock)
5Data
6Vin (+3.3 - 5v)
7GND

Ps. bij gebruik van meerdere displays op SPI: D/C, CLK en DAT wordt gedeeld, maar CS moet uniek aangesloten zijn voor elk display!

Pinout en aansluiting op de Arduino

Pin OLED SPI Display:Pin Arduino:
CS (Chip Select)Digital 12
RSTDigital 13
D/CDigital 11
CLK (Clock)Digital 10
DataDigital 9
Vin (+3.3 - 5v)+5v
GNDGND

OLED TEKST

In de library’s zijn enkele voorbeeld scripts te vinden, o.a. een Demo wat allemaal mogelijk is, Ik heb uit de Demo wat regels aan script uitgehaald, zodat je eenvoudig kan zien wat nodig is om wat tekst op het display te plaatsen.

Voorbeeld: Hallo Wereld!

Het resultaat:
OLED 128x32 SPI display (SSD1306) - hallo wereld

Voorbeeld: Hallo Wereld! en Maan! (met geinverteerde kleuren z/w)

Het resultaat:
OLED 128x32 SPI display (SSD1306) - hallo wereld en maan

OLED GRAFISCH

Wat heb je nodig?

1) Irfanview
2) LCD Assistant

Met LCD Assistant is het mogelijk om bitmap bestanden om te zetten naar HEX code’s, zodat het weergegeven kan worden op het display.

Ps. de instellingen van LCD Assistant die op de site van Adafruit staan werken voor mij niet!, ik heb hieronder de juiste instellingen geplaatst die voor mij werken.

De code om een grafisch plaatje weer te geven op het OLED scherm:

Hoe zet ik een foto/plaatje om om op het display weer te geven?

Gebruik Irfanview om de juiste bitmap bestanden te creëren, zie de instructies onder.

2) Ik heb hier een voorbeeld bestand van een auto:

Auto

3) Gebruik Irfanview om dit plaatje te verkleinen naar 128×32. (CTRL+R)

oled_image_convert_01

4) Ga naar het topmenu -> Image -> Decrease color depth (engels), en zet de instelling op 2 kleuren (zwart/wit) 1-bit

oled_image_convert_02

5) Sla het betand op als BMP formaat!, dit is het resultaat:

Auto

6) Open LCD Assistant en open het BMP bestand (topmenu -> file -> open bitmap) en gebruik deze instellingen:

oled_image_convert_03

7) Sla de conversiegegevens op met: topmenu -> file -> Save output (maakt niet uit welke extensie je gebruikt, maar voor het gemak kun je CPP nemen)
8) Als je nu het “output” bestand opent, dan zie je met het voorbeeld hierboven (auto) deze code:

9) Als je de HEX codes in het bovenstaande Aurduino script zet en deze naar de arduino stuurt, dan is dit het resultaat:

OLED 128x32 SPI display (SSD1306) - auto

Hetzelfde kan gedaan worden met bijvoorbeeld een pac-man logo, zie hieronder.

Het orginele JPG bestand:

pacman

Door irfanview gehaald (1 bit monochrome BMP):

pacman

Het resultaat:

OLED 128x32 SPI display (SSD1306) - pac-man

OLED 128x32 SPI display (SSD1306) - pac-man totaal foto

Top