SSD1306 OLED Screen

SSD1306 I2C

The Screen


I recently  purchased a small screen for a project I want to build.
The screen is 0.96” OLED SSD1306 from eBay.

I want to build a small clock based on the DCF77 module (I hope it’ll work here) and DHT22 sensor for temperature and humidity.

SPI or I²C?

I struggled for hours to set this screen up, I found that I can use either SPI or I²C (I2C, IIC).
It came on SPI mode and I wanted to use the I2C so I had to rework the PCB and move the R3 resistor to R1 and solder the two pads of R8 together.

Before (as SPI mode):Before ssd1306And after (as I2C mode):After ssd1306


I used both the Adafruit SSD1306 and U8GLIB successfully.

Adafruit SPI

For Adafruit as SPI I used “ssd1306_128x64_spi” example.


For U8GLIB as SPI I used the “Hello World” example and used this constructor:
U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11, 13);   // SW SPI Com: SCK = 10, MOSI = 9, CS = 12, A0 = 11, RST = 13

The wiring:
OLED — Arduino Uno

VCC — 3.3V (Or 5V, depends on the OLED)
SCL — Pin10
SDA — Pin9
RES — Pin13
DC — Pin11

SPI Diagaram ssd1306

Adafruit I2C

For Adafruit as I2C I used the “ssd1306_128x64_i2c” example and  changed the address to 0x3c instead of 0x3D.


For U8GLIB as I2C I also used the “Hello World” example and changed the constructor to:
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI

And the wiring:
OLED — Arduino Uno

VCC — 5V (Check you screen specs)
RES — Pin 13

To change the address, connect DC to Pin 12 (should work)

I2C Diagram ssd1306

That’s it.
I hope I helped a bit with this information.
Good luck!

Did you like it?

Leave a Comment

Your email address will not be published. Required fields are marked *

Skip to content