Loading a bitmap / byte array from sd card to progmem

1anyone have any clue how i could store a byte array on the arduino sd card and then load into into progmem for display on an oled?

i have the function to display a const unsigned char [] PROGMEM = { to the oled, i just need to get the byte array in from the sd card

Standard Arduinos don't support it. It's easier to modify the the part of the sketch that you wrote to display on the OLED.

Look at the examples that come with the OLED library that you use; I'm sure it will have something where it does not use PROGMEM.

No idea what board you're using, no idea of your code and no idea which library you're using for the OLED. So I don't think that you can expect in depth help.

1 Like

hi there, thanks for the response.
I'm using a mega 2560.

My function at the moment is this..

void showVADISLOGO(void) 
{
  unsigned char vadis [] PROGMEM = {
// 'vadis mono', 128x64px
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xe0, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x80, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x81, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xef, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xdf, 0xff, 0x80, 0xfc, 0xff, 0xfc, 0x07, 0x87, 0xf9, 0xff, 0xfc, 0x03, 0xff, 
0xc3, 0xff, 0xff, 0x1f, 0xfe, 0x00, 0x38, 0xff, 0xf0, 0x01, 0x87, 0xe1, 0xff, 0xc0, 0x00, 0x7f, 0x83, 0xff, 0xfe, 0x3f, 0xf8, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x07, 0xe1, 0xff, 0x00, 0x00, 0x1f, 
0xc1, 0xff, 0xfe, 0x3f, 0xf3, 0xfc, 0x00, 0xff, 0x9f, 0xe0, 0x07, 0xe1, 0xfe, 0x7f, 0xf0, 0x1f, 0xc1, 0xff, 0xfc, 0x7f, 0xe7, 0xff, 0x00, 0xfe, 0x3f, 0xf0, 0x07, 0xe1, 0xf8, 0xff, 0xfc, 0x3f, 
0xe0, 0xff, 0xfc, 0x7f, 0xcf, 0xff, 0x80, 0xfe, 0x7f, 0xfc, 0x07, 0xe1, 0xf1, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0x9f, 0xff, 0xc0, 0xfc, 0xff, 0xfe, 0x07, 0xe1, 0xf1, 0xff, 0xff, 0xff, 
0xf0, 0x7f, 0xf8, 0xff, 0x1f, 0xff, 0xc0, 0xf8, 0xff, 0xfe, 0x07, 0xe1, 0xf0, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xf1, 0xfe, 0x3f, 0xff, 0xe0, 0xf1, 0xff, 0xff, 0x07, 0xe1, 0xe0, 0x7f, 0xff, 0xff, 
0xf8, 0x3f, 0xf1, 0xfe, 0x3f, 0xff, 0xe0, 0xf1, 0xff, 0xff, 0x07, 0xe1, 0xf0, 0x3f, 0xff, 0xff, 0xf8, 0x3f, 0xe3, 0xfe, 0x3f, 0xff, 0xf0, 0xf1, 0xff, 0xff, 0x87, 0xe1, 0xf0, 0x03, 0xff, 0xff, 
0xfc, 0x1f, 0xe3, 0xfe, 0x3f, 0xff, 0xf0, 0xe1, 0xff, 0xff, 0x87, 0xe1, 0xfc, 0x00, 0x01, 0xff, 0xfc, 0x1f, 0xc7, 0xfc, 0x3f, 0xff, 0xf0, 0xe1, 0xff, 0xff, 0x87, 0xe1, 0xfe, 0x00, 0x00, 0x3f, 
0xfe, 0x0f, 0xc7, 0xfc, 0x3f, 0xff, 0xf0, 0xe1, 0xff, 0xff, 0x87, 0xe1, 0xff, 0xf0, 0x00, 0x1f, 0xfe, 0x0f, 0x8f, 0xfc, 0x1f, 0xff, 0xf0, 0xe0, 0xff, 0xff, 0x87, 0xe1, 0xff, 0xff, 0xf0, 0x0f, 
0xff, 0x07, 0x8f, 0xfc, 0x1f, 0xff, 0xf0, 0xe0, 0xff, 0xff, 0x87, 0xe1, 0xff, 0xff, 0xfe, 0x07, 0xff, 0x07, 0x1f, 0xfe, 0x0f, 0xff, 0xf0, 0xf0, 0x7f, 0xff, 0x87, 0xe1, 0xff, 0xff, 0xff, 0x07, 
0xff, 0x83, 0x1f, 0xfe, 0x0f, 0xff, 0xf0, 0xf0, 0x7f, 0xff, 0x87, 0xe1, 0xff, 0xff, 0xff, 0x87, 0xff, 0x82, 0x3f, 0xfe, 0x07, 0xff, 0xe0, 0xf0, 0x3f, 0xff, 0x07, 0xe1, 0xff, 0xff, 0xff, 0x87, 
0xff, 0xc0, 0x3f, 0xff, 0x03, 0xff, 0xe0, 0xf8, 0x1f, 0xff, 0x07, 0xe1, 0xfe, 0x7f, 0xff, 0x8f, 0xff, 0xc0, 0x7f, 0xff, 0x81, 0xff, 0xd0, 0xfc, 0x0f, 0xfe, 0x87, 0xe1, 0xf8, 0x1f, 0xff, 0x9f, 
0xff, 0xe0, 0x7f, 0xff, 0xc0, 0x3f, 0x30, 0xfe, 0x01, 0xf9, 0x87, 0xe1, 0xf8, 0x03, 0xfe, 0x7f, 0xff, 0xe0, 0xff, 0xff, 0xe0, 0x00, 0x70, 0xff, 0x00, 0x03, 0x87, 0xe1, 0xfc, 0x00, 0x00, 0xff, 
0xff, 0xf1, 0xff, 0xff, 0xf8, 0x01, 0xf1, 0xff, 0xc0, 0x0f, 0x8f, 0xe3, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xe3, 0x87, 0x1e, 0x03, 0xfc, 0x38, 0x07, 0xf8, 0x0f, 0x1c, 0x3f, 0xc7, 0x0f, 0xe1, 0xc7, 0x8f, 0xc1, 0x82, 0x0d, 0xff, 0xfc, 0x17, 0xfb, 0xf7, 0xf6, 0x0c, 0x1f, 0x83, 0x0f, 0xe0, 0x83, 0x07, 
0xc1, 0x87, 0x0d, 0xfd, 0xfc, 0x3b, 0xf7, 0xf7, 0xf6, 0x0c, 0x3f, 0x83, 0x0f, 0xe1, 0xc3, 0x07, 0xe7, 0xcf, 0x9f, 0x07, 0xfe, 0x7e, 0x1f, 0xfc, 0x1f, 0x3e, 0x7f, 0xcf, 0x9f, 0xf3, 0xe7, 0x9f, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  display.clearDisplay();
  display.drawBitmap(0, 0, vadis, 128, 64, WHITE);
  display.display();
}

im just calling it once at the start.
most examples seem to be calling functions from inside their libraries which im not too good at navigating

oh and also the main example supplied just does the same thing i do.. so not really helpful unfortunately. I just want to be able to load in the byte array rather than defining it within the code

this here could do the job,

Uno has little RAM not enough to handle the decoding task

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.