Buona sera a tutti!
Dopo un po di impegni ho riapprocciato al mondo di arduino, e per prima cosa ho completato un progettino che avevo in sospeso: un piccolo impianto di comando luci sia tramite relè che tramite web.
Sono in chiusura, e sto "limando" il codice, chiedendo l'aiuto di persone più esperte per alcuni "trucchetti".
In pratica ho utilizzato un arduino uno ed una ethernet shiled con sd integrata, ed ho collegato 4 input e 4 "bottoni digitali" a 4 led affinchè potessi comandarli sia "manualmente" che tramite rete.
Ho utilizzato per l'interfaccia web la libreria Tiny web server, avendo trovato in rete un bel po di materiale.
Detto questo, avendo intenzione di installare l'impianto nello studio di casa, mi preme (anche se può sembrare non necessario) fare in modo che, nel caso ci fosse un "black out" o un reset della scheda, l'arduino tenga conservato l'ultimo stato. Per fare ciò ho quindi inserito la scrittura dello stato del led sulla EEPROM in un ciclo di if in questo modo:
//dichiarazione variabili
[...]
byte val1;
byte valold1;
int addr1 = 0;
[...]
void loop() {
if (val1 == HIGH && (valold1 == LOW)) {
statoLed1 = 1 - statoLed1;
EEPROM.write(addr1, statoLed1);
delay(30);
}
[...]
e così via.
Così facendo, quando spengo e riaccendo l'arduino, quest'ultimo ricorda lo stato della luce.
Tuttavia sono convinto di aver commesso un (parecchi in tutto il codice XD) errore. Così facendo, infatti, sto salvando lo stato della luce in una sola delle 1024 celle disponibili all'interno dell'arduino uno.
Avendo io 4 luci da comandare, esiste un modo affinchè, invece di utilizzare solo 4 celle della eeprom, la memoria dell'arduino venga divisa in 4 partizioni ed io posso utilizzare per la conservazione dell'informazione invece che una sola cella in 256 celle?
Questo perchè non ho la più pallida idea di quante sovrascritture possano avvenire in una sola cella e non vorrei, nel caso in cui venisse "saturata" la capacità di riscrittura delle singole celle, dovere ogni tanto ricaricare lo sketch cambiando manualmente il numero della cella da dover utilizzare!
Inoltre, ho fatto girare il programma per un po, e mi è capitato dopo un certo lasso di tempo, che dal cell non riuscivo più ad entrare nella pagina dedicata al controllo dei led. Mi chiedevo quindi se potesse essere un problema semplicemente di connessione / router, oppure se effettivamente queste schede possono essere "poco stabili" a lungo andare.
Ringrazio tutti per la disponibilità,
e buona programmazione a tutti =) !
Ferdinando