所以我试图将图像的字节数组放入外部 eeprom (c24LC16B) 并使用 Adafruit gfx 库中的 drawBitmap() 函数在诺基亚 3310 LCD 上绘制它(使用 Adafruit PCD8544 库)。但问题是,drawBitmap() 只能使用静态字节 PROGMEM 数组。不好,我需要将 img 数组从 eeprom 读取到缓冲区(字节 buf[504]{}; ),然后将其绘制在显示器上。
我尝试了一些我在网上找到的修改,例如将其添加到 Adafruit_GFX.ccp:
void Adafruit_GFX::drawBitmap(int16_t x, int16_t y,
uint8_t *bitmap, int16_t w, int16_t h,
uint16_t color) {
int16_t i, j, byteWidth = (w + 7) / 8;
for(j=0; j<h; j++) {
for(i=0; i<w; i++ ) {
if(bitRead(bitmap[j], 7-i))
drawPixel(x+i, y+j, color);
}
}
}
但它仍然只显示垃圾
那么为什么对 PROGMEM 和普通数组有这么大的影响呢?PROGMEM 和 SRAM 中的字节不一样吗? 也对不起我的语法。