16x SSD1306 OLED Displays

Hi, I am planning to make an audio project involving 8 or possibly 16 displays, and I am planning to use those affordable SSD1306 0.96" OLED Displays from Ebay.

What is the best interface for that? I2C? SPI? Is it feasible on a Mega 2560?

The displays will have data read from a MIDI port (Mackie Control/HUI) or from the serial port.


What is the best interface for that? I2C? SPI?

SPI, it is faster and easier to have multiple ones on the SPI bus.

Is it feasible on a Mega 2560?

Well with the more SRAM on a Mega it is your only hope with the 8 bit Arduinos.

An Atmega1284p might be a better choice, since it’s got more SRAM…

Uh, how fast do you want to refresh those screens?

I've had bad experiences controlling inexpensive OLED displays with I2C. I like using SPI much more.

I don't think the SSD1306 displays I've used (I've only used a couple different kinds) allowed one to change the I2C address so you might have a hard time controlling a bunch of the displays with I2C. I'm not sure if the I2C address thing is an issue of not. Some devices allow the address to be changed. I don't know if the SSD1306 allows this or not.

I think SPI has the advantage of being able to share many of the control pins among the various displays. I think you can get away with just using a different chip select (CS) line for each display. You could even use a '595 shift register to control the CS lines.

This is the SSD1306 OLED I've used the most. The default mode for the display is I2C but it can be easily switched to SPI mode by changing a few 0 ohm resistors used as jumpers.

I second DrAzzy's concern about memory. Each display will require a 1024 byte display buffer. If you want to do tricks like inverting sections of the display or superimposing two bitmaps on top of each other, it's helpful to have two buffers per display.