quoto lelef, lascia stare le stringhe in EEProm che sono una enorme rottura di palle.
Questo è quello che faccio io per salvare i dati del ELS.
Ti metto solo un paio di dati come esempio per non incasinarti troppo.
Codice:
void WriteToEEPROM()
{
EEPROM.put(0, one_turn_mandrel_steps);
EEPROM.put(2, screw_pitch);
EEPROM.put(6, one_turn_screw_steps);
}
void LoadFromEEPROM() //Loads the parameters from the EEPROM and put them in the proper variables
{
EEPROM.get(0, one_turn_mandrel_steps);
EEPROM.get(2, screw_pitch);
EEPROM.get(6, one_turn_screw_steps);
}
lui tratta tutte le variabili come blocchi da 1 singolo byte pertanto devi sapere quando occupano in modo da sapere dove scrivere i dati successivi e soprattutto dove andarli a leggere.
la variabile "one_turn_mandrel_steps" è uint16_t quindi 2 byte, scrivendola sulla cella 0 con l'istruzione "EEPROM.put(0, one_turn_mandrel_steps); andrò ad occupare 2 byte pertanto la prima cella disponibile sarà all'indirizzo 2 (0+2 = 2). La successiva variabile "screw_pitch" è invece di tipo float ed occupa quindi 4 byte, se vedi infatti la terza variabile la vado a salvare nella cella 6 (cella di partenza di "screw_pitch" è 2, + 4byte andiamo alla 6). e così via.
La stringa non ho mai provato con arduino ma in genere funziona solo che devi considerare un carattere in più che è il fine stringa.
Attenzione che quando le vai a leggere sono singolo byte quindi con l'istruzione EEPROM.get(cella, variabile); lui va a leggere tanti byte quanti sono quelli occupati dalla variabile in cui li va a mettere. Ricordati bene questo concetto: una volta che hai salvato in EEPROM ti ritrovi con una sequenza di byte fini a se stessi, lui non sa più di che tipo era la variabile da cui li hai presi, sei tu che ne devi tenere memoria altrimenti quando vai a leggere fai un casino.