Premesso che non ho capito tutta la logica del programma...
-
secondo me il problema sta nel lcd.setCursor(0, 1); prima di ogni lcd.print(key);
se metti coordinate fisse lui stampa il carattere sempre nella stessa posizione. visto che usi un indice per la posizione dell'array prova ad usarlo anche per la posizione su lcd -
perché converti da char* a nomero e poi da numero a string?
PS: so che i puristi del codice mi insulteranno, però a parte una questione puramente "educativa" o estreme necessità di prestazioni, che necessità c'è di fare tutto quel casino per salvare e leggere su eeprom quando si possono usare le funzioni get() e put()?