[Resolved]Help about PROGMEM

Hello, I want to show a Playstation and Arduino logo in nokia 1100 LCD ,it works fine without “PROGMEM”,
When I use it ,the logo will be deformed .can any one help me ?

I use this library;

this is my code:

#include <PCF8814.h>
#include <avr/pgmspace.h>
const uint8_t  PS_arduino_logo [] PROGMEM= {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0,
0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0x70, 0x70, 0x78, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0x9E,
0x9E, 0x9E, 0x9E, 0x8F, 0x8F, 0x8F, 0xCF, 0xCF, 0xC7, 0xC7, 0xE7, 0xC7, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x3C, 0x1E,
0x1E, 0x9E, 0x9E, 0x9E, 0x8E, 0x8E, 0xCE, 0xCE, 0xCF, 0xC7, 0xC7, 0xE7, 0xE7, 0xE7, 0xE6, 0xF6,
0xF6, 0xF6, 0xFE, 0xFE, 0xFE, 0x7E, 0x7C, 0x7C, 0x7C, 0x3C, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x81, 0x81, 0x81, 0x81, 0x81, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0x80, 0x87, 0x87, 0x87,
0x87, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x00, 0x00, 0x8E, 0x8F, 0x8F, 0x8F, 0x87,
0xC7, 0xC7, 0xC7, 0xC7, 0xC3, 0xC3, 0xC3, 0x83, 0x83, 0x81, 0x81, 0x01, 0x01, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x7C, 0x7E, 0xFF, 0xFF, 0xC3,
0xC3, 0x81, 0x81, 0x01, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x81, 0x81, 0x83, 0xC3, 0xC3,
0xE7, 0xFF, 0x7E, 0x3C, 0x3C, 0x7E, 0x7E, 0xEF, 0xE7, 0xC3, 0xC3, 0x81, 0x81, 0x19, 0x19, 0x18,
0x3C, 0x3C, 0x18, 0x18, 0x01, 0x81, 0x81, 0x81, 0xC3, 0xE7, 0xFF, 0xFE, 0x7E, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x38, 0x08, 0x39, 0x71, 0x41,
0x03, 0x7B, 0x7B, 0x0B, 0x2B, 0x7B, 0x53, 0x03, 0x7B, 0x7B, 0x49, 0x49, 0x49, 0x79, 0x30, 0x00,
0x78, 0x40, 0x40, 0x40, 0x78, 0x38, 0x00, 0x01, 0x49, 0x79, 0x7B, 0x4B, 0x4B, 0x03, 0x7B, 0x7B,
0x1B, 0x33, 0x63, 0x7B, 0x79, 0x31, 0x79, 0x49, 0x48, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};




static PCF8814 lcd;
void setup()
{
 
lcd.begin(95, 65);

lcd.drawBitmap(PS_arduino_logo,94,64);

delay(3000);
lcd.clear();
 }
  void loop() {
    
  }

Does the drawBitmap method have an overload to use PROGMEM?

Edit:no, it doesn’t appear to.

You could dump the existing drawBitmap, but use it as a template to read from PROGMEM.

Will you ever need to display bitmaps from RAM?

no ,I don't need that ,the RAM will be overload.

In that case, the changes to draw bitmap should be simple.
Don’t forget to save a copy to refer back to.
Simplest way is to block copy the function, paste it, and put

#if 0...
...
#endif

around it.
Where the function reads a byte if bitmap, replace it with an appropriate “pgm_read_byte”

I am sorry ,I did not understand well .

I added

#if 0...
...
#endif

I have got "Erreur de compilation pour la carte Arduino Nano"

I can’t see your code.
I can’t see your error message (s)

this is the code with modification

#include <PCF8814.h>
#include <avr/pgmspace.h>
const uint8_t  PS_arduino_logo [] PROGMEM= {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0,
0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0x70, 0x70, 0x78, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0x9E,
0x9E, 0x9E, 0x9E, 0x8F, 0x8F, 0x8F, 0xCF, 0xCF, 0xC7, 0xC7, 0xE7, 0xC7, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x3C, 0x1E,
0x1E, 0x9E, 0x9E, 0x9E, 0x8E, 0x8E, 0xCE, 0xCE, 0xCF, 0xC7, 0xC7, 0xE7, 0xE7, 0xE7, 0xE6, 0xF6,
0xF6, 0xF6, 0xFE, 0xFE, 0xFE, 0x7E, 0x7C, 0x7C, 0x7C, 0x3C, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x81, 0x81, 0x81, 0x81, 0x81, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0x80, 0x87, 0x87, 0x87,
0x87, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x00, 0x00, 0x8E, 0x8F, 0x8F, 0x8F, 0x87,
0xC7, 0xC7, 0xC7, 0xC7, 0xC3, 0xC3, 0xC3, 0x83, 0x83, 0x81, 0x81, 0x01, 0x01, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x7C, 0x7E, 0xFF, 0xFF, 0xC3,
0xC3, 0x81, 0x81, 0x01, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x81, 0x81, 0x83, 0xC3, 0xC3,
0xE7, 0xFF, 0x7E, 0x3C, 0x3C, 0x7E, 0x7E, 0xEF, 0xE7, 0xC3, 0xC3, 0x81, 0x81, 0x19, 0x19, 0x18,
0x3C, 0x3C, 0x18, 0x18, 0x01, 0x81, 0x81, 0x81, 0xC3, 0xE7, 0xFF, 0xFE, 0x7E, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x38, 0x08, 0x39, 0x71, 0x41,
0x03, 0x7B, 0x7B, 0x0B, 0x2B, 0x7B, 0x53, 0x03, 0x7B, 0x7B, 0x49, 0x49, 0x49, 0x79, 0x30, 0x00,
0x78, 0x40, 0x40, 0x40, 0x78, 0x38, 0x00, 0x01, 0x49, 0x79, 0x7B, 0x4B, 0x4B, 0x03, 0x7B, 0x7B,
0x1B, 0x33, 0x63, 0x7B, 0x79, 0x31, 0x79, 0x49, 0x48, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};




static PCF8814 lcd;
void setup()
{
 
lcd.begin(95, 65);

#if 0
lcd.drawBitmap( pgm_read_byte(PS_arduino_logo),94,64);
#endif

delay(3000);
lcd.clear();
 }
  void loop() {
   
  }

Not in your sketch, in the library .cpp

Have you tried the logo to see if it displays properly from ram? Looking at the library, the 94 wide by 64 high seems way too large for your logo array.

lcd.drawBitmap( pgm_read_byte(PS_arduino_logo),94,64);

If you are struggling with how to modify the library, try the attached files, I’ve added an additional function drawBitmap_P() to read the bitmap from progmem.

PCF8814.h (4.3 KB)

PCF8814.cpp (12.1 KB)

Thank you all for your help.
Thank you David2018 your library work very well .

lcd.drawBitmap_P(arduino_logo, 94, 64);