SSD1306 - load pictures from an sdcard

Hi; I'm quite new at display driving so I need help because I haven't found the solution in internet. Recently I've buy a small 128x24 I2C Heltec oled library. I already get it working with some mods an a pullup resistor but as I need to store 25 bmp pictures for a project and they don't stay on the small memory of arduino, is there a mode to load them up an sdcard?


You could use an SD card as media to store your data to display, yes.
But a bitmap is already a bit too complicated to display.
As it’s a 13 in a dozen SSD1306, may i assume it is a monochrome display ?

You need to convert the picture to a format that can be handled by both your Arduino and the display.
I have used a tool called “LCD Assistant” for that.
First, convert the display picture to have the same resolution as the display.
So that would be 128 * 24 (right ? the 24 seems a bit of an odd number).
Then run it through the tool.
It will convert the picture to an array of hexadecimal values.
Characters are built the same way, and are actually drawn to your screen.
The output goes to a file which then is saved to your SD card.

After that you can read the array and send the data to the screen.

If you already have some demo sketch which shows a picture like a logo, use that as reference, it does exactly the same.
That sketch will have at least one extra file, in my case it was called data.c.
It holds the character set, and a logo.

Thank you for the reply! Yes you was right, it's a monochrome display. And also sorry, I wrote wrong, it wasn't 128x24, It was 128x64. Thank you; I will try


I realize this is a very old thread, but I haven't been able to find a good answer to this question. I'm trying to do the same with an SSD1306 (i2c) display and external sd card reader (SPI). I have a number of images in XBM format (as well as other formats) that work fine, but space being an issue, I'd like to put them on an sd card.

MAS3 seemed to answer the question here:

After that you can read the array and send the data to the screen.

If this is correct, can someone point me to an example of how to construct this?

Thanks! --db