Buenas gente:
Lee los datos de estas variables con caracteres raro si usas el PROGMEM, que es para orientar los datos de la SRAM a la flash o memoria programa.

#include <LiquidCrystal.h>
// Inicializa la librería con sus pines indicados.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);
// Pin 10 para saber que es luz de fondo del LCD.
//int LuzFondo = 10;
// Variables.
String guardarNombre = ""; // Guardar nombre escrito.
int coordenadaX = 0; // Coordenada X del setCursorPisition.
int index = 0; // Índice.
// Caracteres de este array.
const char PROGMEM ALFANUMERICO[] =
{
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',
'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', '-', '_', ':', ';',
'¿', '?', '(', ')', '[', ']', '{', '}', '=', '

Si quito el PROGMEN, si los lee bien.
int const PROGMEM INDICE_ARRAY[] =
{
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
};
Cambiar a:
int const INDICE_ARRAY[] =
{
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
};
Lo de PROGMEN es para guardar en la memoria Flash en vez de la SRAM. Pero veo que al leer hay fallos.
Saludos.

, '&', '"', ' '
};
// Dirección del carácter del array. El 80 presenta al espacio ' ' del array roALFANUMERICO.
const int PROGMEM INDICE_ARRAY[] =
{
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
};
// Palabras del array para imprimir en pantalla.
const String TEXTO[] = { "ATRÁS", "GUARDAR" };
void setup()
{
// La pantalla es de 16 caracteres y 2 filas.
lcd.begin(16, 2);
lcd.print(F(" Probando..."));
// Baudios del puerto serie.
Serial.begin(115200);
// Indicar luz de fondo como salida.
// pinMode(LuzFondo, OUTPUT);
Serial.println(guardarNombre);
Serial.println(coordenadaX);
Serial.println(index);
for (byte i = 0; i < 80; i++)
{
Serial.println(ALFANUMERICO[i]);
}
for (byte j = 0; j < 16; j++)
{
Serial.println(INDICE_ARRAY[j]);
}
for (byte k = 0; k < 2; k++)
{
Serial.println(TEXTO[k]);
}
}
void loop()
{
//return 0;
}

Si quito el PROGMEN, si los lee bien.
§DISCOURSE_HOISTED_CODE_1§
Cambiar a:
§DISCOURSE_HOISTED_CODE_2§
Lo de PROGMEN es para guardar en la memoria Flash en vez de la SRAM. Pero veo que al leer hay fallos.
Saludos.

