Impostare valore di una variabile in setup tramite seriale

Buon giorno ragazzi mi é venuta un'idea malsana ,
ho un circuito di temporizzazzione un po complesso, il circuito funziona tutto a dovere, molto spesso devo settare i vari tempi in quanto il circuito deve funzionare in piena autonomia e visto che minimo una volta al giorno viene spento la notte e riacceso la mattina le impostazioni delle variabili dei tempi le cambio direttamente i valori di default del listato quando inizializzo le variabili.

Il problema nasce quando mando qualche altra persona a cambiare i settaggi. Avendo loro una conoscenza pari a zero nella programmazione avevo pensato e quindi vi chiedo é possibile tramite la seriale del software programmatore di Arduino o altro software simile, tramite apposita interfaccia, cambiare i valori della variabili inizializza in modo che ad ogni avvio mi rimangono gli stessi valori?

Se non sia possibile esiste altra tecnica per memorizzare esternamente, tramite Sd o altro, questi valori e al riavvio richiamare quest'ultimi?
Grazie in anticipo

Perché non usare la EEPROM che è presente all'interno del ATmega328P ? QUI un breve tutorial e QUI la libreria.

Tramite seriale accetti il nuovo valore e lo salvi in EEPROM. All'avvio leggi il valore dalla EEPROM e inizializzi la variabile con esso.

Guglielmo

Certamente è possibile modificare i valori durante il setup(), è come il loop() solo che viene eseguito una sola volta all'avvio, anzi è proprio il modo migliore per modificarli.

Dovrai realizzare, visto che lo dovranno adoperare persone poco esperte, un programma su PC che permette di inserire i valori in appositi campi, riproponendo gli ultimi valori che erano stati precedentemente adoperati (per questo ti serve la EEPROM o puoi anche appoggiarti ad un file sul PC).

Nel setup(), come ultima cosa, metti una chiamata ad una funzione inseriscivalori() che si occupa di comunicare con il PC ed impostare i valori delle variabili. Così hai anche il vantaggio di potere - se serve - richiamare la medesima funzione anche all'interno del loop() per modificarli senza spegnere e riaccendere (puoi fare in modo che venga richiamata se alla seriale giunge un comando da te appositamente scelto oppure metti un pulsante con un interrupt, o altro).

L'unica piccola difficoltà: dovresti costruirti un piccolo protocollo di comunicazione. Molto dipende dai valori che possono assumere le variabili, se si tratta di int, di float, di long ...