I have an array of colors for my tft screen:
const uint16_t colorTheme [] PROGMEM = {BLACK, WHITE, NAVY, CYAN, RED, GREEN, VERDEAQ, PINK, ORANGE, PURPLE, GRAY, YELLOW};
When I try to use colorTheme [EEPROM.read (2500)]
I am returned with a value of any garbage, or a value of 0, and I checked it in read_eeprom and the value of EEPROM.read (2500)
is equal to 4, and 4 in mine vector is cyan color, not black or 0 number, why does this go so wrong?
1 Answer 1
Your array is in PROGMEM, but you are accessing it as if it were in RAM.
You must use pgm_read_word()
to access the data in your array.
pgm_read_word(&(colorTheme[EEPROM.read(x)]))
BTW - what Arduino board has more than 2kB of EEPROM?
-
Thanks, i'm using Atmega2560, he store.arduino.cc/usa/mega-2560-r3, your EEPROM is 4kbluke cross– luke cross2020年04月18日 10:43:56 +00:00Commented Apr 18, 2020 at 10:43