Module – Display – OLED

Hardware

Display OLED 128x64 I2C bovenkant    

   BESTELLEN

Een organische lichtemitterende diode (Engels: Organic Light Emitting Diode), doorgaans gebruikt in de vorm van het acroniem oled, is een halfgeleiderlichtbron, net als anorganische (leds) en lasers. Terwijl een led een felle puntbron is, is een oled juist een grotevlakkenstraler. De emitterende laag van een oled bestaat uit een speciaal type polymeer of kleine moleculen, op basis van koolwaterstofverbindingen. Deze emitterende laag wordt tussen een anode en kathode geplaatst en afgesloten voor lucht en water. De laag licht op wanneer er een spanning over de kathode en anode wordt gelegd. Met oleds kunnen breedbandige witte lampen gemaakt worden, in tegenstelling tot zijn anorganische tegenhanger.

Bron: WIKI

Technical Specifications (ENG)

  • OLED Technology, Self-luminous, need no back-light (consumes less energy)
  • High resolution: 128 * 64
  • Viewing angle:> 160 degree
  • Supports various microcontrollers: Fully compatible with Raspberry Pi, Arduino, 51 Series, MSP430 Series, STM32 / 2, CSR IC, etc.
  • Ultra-low power consumption: full screen lit 0.08W
  • Operating Voltage: 3.3V Nominal (3.3-6V)
  • Compatible I/O level: 3.3V / 5V
  • Working Temperature: :-30 ~70 celcius
  • Driver IC: SSD1306

Framerate

De SSD1306 chip ondersteunt niet meer dan 100KHz. met de overhead van de ACK (I2C), is er ongeveer 90KHz over voor pure bitrate. Het display heeft 128×64 pixels, dat maakt in totaal 8192 pixels, dat geeft een maximum van ongeveer 11 frames per seconde!

Pinout

I2C Pinout

Pin:Functie:
1GND
2VCC (+3.3 - 5v)
3SCL
4SCA

I2C Pinout WEMOS


SPI Pinout

Arduino SSD1306 SPI

Ps. Afhankelijk van welke bibliotheek je gebruikt zul je CS (Chip Select) moeten aan passen in de code of hardwarematig.

Voorbeeld schema’s:

Pin OLED SPI Display:Pin Arduino:
D0 (SCL,CLK,SCK) (Clock)Digital 13
D1 (SDA,MOSI) (Data)Digital 11
RST (Reset)Digital 8
DC (Data/Command)Digital 9
CS (Chip Select)Digital 10
Vin (+3.3 - 5v)+5v
GNDGND

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


Wat heb je nodig?

1) Adafruit SSD1306 library
2) Adafruit GFX library

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

Arduino Library SSD1306

adafruit logo

Installatie van Arduino IDE libraries: Arduino info

Informatie (ENG):

This is a library for our Monochrome OLEDs based on SSD1306 drivers, these displays use SPI to communicate, 4 or 5 pins are required to interface.

1) Rename the uncompressed folder Adafruit_SSD1306.
2) Check that the Adafruit_SSD1306 folder contains Adafruit_SSD1306.cpp and Adafruit_SSD1306.h
3) Place the Adafruit_SSD1306 library folder your <arduinosketchfolder>/libraries/ folder. You may need to create the libraries subfolder if its your first library.
4) Restart the IDE.

Download @ Adafruit.com

Directe download site: Adafruit @ Github

LET OP: Als je een OLED scherm gebruikt die 32 pixels hoog is (ipv 64), dus bijvoorbeeld een 128×32 OLED, dan moet je in dit bestand:

[ArduinoFolder]\libraries\AdafruitSSD1306\Adafruit_SSD1306.h

de // bij deze regel “#define SSD1306_128_32” weghalen om de buffergrootte aan te passen! (en een // zetten bij de 64 pixel instelling)

dus:

aanpassen in:

Arduino SSH1106 I2C

Aansluiten op de Arduino

Sluit de OLED display aan volgens onderstaand schema:

Display OLED 128x64 I2C arduino schema

Pin OLED I2C Display:Pin Arduino:
GNDGND
VCC+5v
SCLA5
SCAA4

Script

Wat heb je nodig?

1) Arduino u8glib bibliotheek

Je kan met de u8glib bibliotheek heel veel displays aansturen, dat is afhankelijk van de controller die gebruikt wordt. Je moet daarvoor (in de voorbeeld scripts de commentaar // weghalen) een regel specificeren, het script hieronder is voor een display met een SH1106 controller, daarvoor moet deze regel ingeladen worden:

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI

In de u8glib 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 (zelfde als onder op de SPI versie):
OLED 128x32 SPI display (SSD1306) - hallo wereld

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

Het resultaat (zelfde als onder op de SPI versie):
OLED 128x32 SPI display (SSD1306) - hallo wereld en maan

Bronnen:
arduino-er.blogspot.nl
henrysbench.capnfatz.com

Arduino SSH1106 SPI

Ps. Afhankelijk van welke bibliotheek je gebruikt zul je CS (Chip Select) moeten aan passen in de code of hardwarematig.

Voorbeeld schema’s:

Pin OLED SPI Display:Pin Arduino:
D0 (SCL,CLK,SCK) (Clock)Digital 13
D1 (SDA,MOSI) (Data)Digital 11
RST (Reset)Digital 8
DC (Data/Command)Digital 9
CS (Chip Select)Digital 10
Vin (+3.3 - 5v)+5v
GNDGND

Bron: brainy-bits.com

Arduino Library SH1106 (u8glib)

Installatie van Arduino IDE libraries: Arduino info

Informatie (ENG):

A graphics library with support for many different monochrome displays.

u8glib screen

  • Bintray download links:
    • U8glib for Arduino
    • U8glib for AVR
    • U8glib for ARM
    • Converter for BDF fonts: bdf2u8g_101.exe on google drive.
  • Supported environments:
    • Arduino (ATMEGA and ARM)
    • AVR (ATMEGA)
    • ARM (with example for LPC1114)
  • Library for graphic LCDs and OLEDs
  • U8glib documentation and tutorials
  • Graphical user interface library (GUI) available: M2tklib
  • COM interfaces: Software SPI, Hardware SPI, 8Bit parallel
  • Large number of fonts
  • Monospaced and proportional fonts
  • Mouse-Cursor support
  • Landscape and portrait mode
  • Many supported devices (SSD1325, ST7565, ST7920, UC1608, UC1610, UC1701, PCD8544, PCF8812, KS0108, LC7981, SBN1661, SSD1306, SH1106, T6963, LD7032)
  • Well-defined interface to the device subsystem

Download u8glib @ Github.com
Download u8glib voor Arduino @ Github.com

OLED Grafisch (Arduino)

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

Wat heb je nodig?

1) Irfanview
2) LCD Assistant

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

Raspberry Pi SH1106 I2C

Wat heb je nodig?

1) DEV tools met het volgende commando:

sudo apt-get install -y i2c-tools python-smbus python-pip python-dev python-imaging

2) Python OLED library (schrotratte)

Installeren van de bibliotheek kan met de volgende commando’s:

Aansluiten op de Raspberry Pi

Sluit de OLED display aan volgens onderstaand schema:

Pin OLED I2C Display:Pin Raspberry:
GNDGND
VCC+5v
SDAGPIO 2 (SDA)
SCLGPIO 3 (SCL)

Controleer aansluiting (I2C)

Om te controleren of het display juist is aangesloten kan je het volgende commandi uitvoeren:

i2cdetect -y 1

Je kan bevestigen dat het display adres 0x3C heeft.

Script

Hieronder een python script dat “Hallo Wereld” zal weergeven, pas het adres aan indien nodig.

Raspberry Library

Python OLED library (schrottratte)

Informatie (ENG):

SH1106 / SSD1306 OLED Driver (only tested with SH1106).

I forked the original and made some minor changes, to make it work with a BPi-M1 on Armbian Jessie Vanilla.

Interfacing OLED matrix displays with the SH1106 (or SSD1306) driver in Python using I2C on the Banana Pi. The particular kit I bought from Amazon: SainSmart 1.3″ I2C IIC Serial 128X64 OLED.

The SH1106 display is 128×64 pixels, and the board is tiny, and will fit neatly inside my BPi Case.

Pre-requisites

This was tested with Armbian-Jessie on a BP1-M1, with Mainline Kernel .

Install some packages(most should be already installed):

Next check that the device is communicating properly:

Installing the Python Package

From the bash prompt, enter:

This will install the python files in /usr/local/lib/python2.7 making them ready for use in other programs.

Software Display Driver

The screen can be driven with python using the oled/device.py script. There are two device classes and usage is very simple if you have ever used Pillow or PIL.

First, import and initialise the device:

The display device should now be configured for use. The specific ssd1306 or sh1106 classes both expose a display()method which takes a 1-bit depth image. However, for most cases, for drawing text and graphics primitives, the canvas class should be used as follows:

The canvas class automatically creates an ImageDraw object of the correct dimensions and bit depth suitable for the device, so you may then call the usual Pillow methods to draw onto the canvas.

As soon as the with scope is ended, the resultant image is automatically flushed to the device’s display memory and the ImageDraw object is garbage collected.

Run the demos in the example directory:

Note that python-dev (apt-get) and psutil (pip) are required to run the sys_info.py example. See install instructions for the exact commands to use.


Download @ Github.com

WEMOS OLED Shield SSD1306 I2C

Deze shield gebruikt D1 en D2 voor I2C communicatie.

Script

Wat heb je nodig?

1) Wemos OLED Shield SSD1306 library

Arduino Library Wemos OLED Shield SSD1306

Installatie van Arduino IDE libraries: Arduino info

Informatie:

De code van deze libray is compact en bevat alleen een aantal basis functies:

Download @ www.heinpragt.com

Schema

Schema I2C

 


Schema SPI

Afmetingen

Teardown

I2C Achterkant

SPI Achterkant

Datasheet

Fritzing

Downloads

GEEN GEGEVENS