user61532: 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?

user4143: 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?

61532: <p>I have an array of colors for my tft screen:</p>

<pre><code>const uint16_t colorTheme [] PROGMEM = {BLACK, WHITE, NAVY, CYAN, RED, GREEN, VERDEAQ, PINK, ORANGE, PURPLE, GRAY, YELLOW};
</code></pre>

<p>When I try to use <code>colorTheme [EEPROM.read (2500)]</code> 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 <code>EEPROM.read (2500)</code> is equal to 4, and 4 in mine vector is cyan color, not black or 0 number, why does this go so wrong?</p>
 4143: <p>Your array is in PROGMEM, but you are accessing it as if it were in RAM.</p>

<p>You must use <code>pgm_read_word()</code> to access the data in your array.</p>

<pre><code>pgm_read_word(&amp;(colorTheme[EEPROM.read(x)]))
</code></pre>

<p>BTW - what Arduino board has more than 2kB of EEPROM?</p>
