Getting an 0.96in 128x64 OLED to work

I had bought these a while ago and just got around to experimenting with them. I’ve hooked it up as shown in the attached schematic and when I turn on power, I don’t see anything on the screen. Using a 5V, 16Mhz Arduino Pro Mini as the MCU board that is being programmed using a FTDI basic 5V. Using Adafruit’s GFX and SD1306 libraries. Following the wiring guide shown here. What am I missing?

Edit: attached photos of the actual module that I have. It seems the original site has a different one now without the CS pin.

I have exactly the same OLED. It came as an SPI device. It worked 100% as SPI. However, I wanted to test I2C operation. So I configured it for I2C and I2C works 100% too.

I am gobsmacked by your wiring and even more gobsmacked by the tutorial.
I would expect to use the hardware SPI pins.

Your "unusual" choice of pins will work fine with bit-bashed SPI.
It just means that you have to use the full-fat constructor. i.e. which specifies every pin including the RES pin.


Edit. Just looked. The example defaults to bit-bashed SPI with the "unusual" wiring. So it should work straight out of the box.

Thanks David. Except it doesn't work at all :frowning: Can you share your wiring diagram for both SPI and I2C? Also what changes did you make for I2C? Did you power it through 3.3V or 5V?

The SSD1306 is a 3.3V device. I always use 3.3V logic with a 3.3V device.

Having said that, many people are determined to use 5V logic and I presume that it will work for them.

Your tutorials and examples give you a wiring scheme. I suggest that you follow their advice.
Test all your Chinese jumper wires. How many are broken?
Double check your wiring with the tutorials.
Post a clear photo for other eyes to check the wiring.


Not sure if you're checked this, but I had the same problem of no display and it plagued me for days. In the .h code, there are a series of commented out lines related to the size of the screen. It turned out that the 128 x 64 screen size line was commented out // and the default was uncommented. Simple uncommenting the 128 x 64 and commenting out the other and presto, it worked. Maybe this is what's wrong. Wish you the best.