invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}

Пробую скомпилировать код для Ардуино Нано. Выдаёт ошибку conversion from const uint8_t* to uint8_t*. Понимаю в чем проблема, но не знаю как пофиксить.

  myOLED.drawBitmap(0, 0, VUMeter, 128, 64);       // draws background

VUMeter описывается тут.

const uint8_t VUMeter[] PROGMEM = {...}

Описание функции drawBitmap из библиотеки OLED:

drawBitmap(int x, int y, uint8_t* bitmap, int sx, int sy);

Буду благодарна, если поможете разобраться как пофиксить ошибку.


Ответы (1 шт):

Автор решения: Vanyamba Electronics

В микроконтроллере AVR8 есть два типа памяти: оперативная (RAM) и память программ (PROGMEM). Следовательно указатель при вызове функции должен указывать на адрес в RAM.

(uint8_t) vucpy[128*64];
for (int n = 0; n < 128*64; ++n)
   vucpy[n] = (uint8_t) pgm_read_byte(&(VUMeter[n]));
myOLED.drawBitmap(0, 0, vucpy, 128, 64); 
→ Ссылка