Con il monitor seriale, leggo i valori della memoria 0. Dopo qualche secondo che il programma viene eseguito. i valori variano a caso, ma dovrebbe rimanere a 254!?
Se io tolgo EEPROM.write(1, 1); la memoria 0, rimane a 254 come vorrei.
if (memon1 < 254 && error == 0) { //memon1 era 254
if (millis() - previousMillis3 > interval3) {
previousMillis3 = millis();
memon1++;
}
EEPROM.write(0, memon1);
}
if (memon1 == 254) {
memclean = 1; //il ciclo pulizia deve essere fatto
EEPROM.write(1, 1); //scrivo in memoria che deve essere eseguita pulizia
if (memokon == 0) { // perchè faccio lampeggiare nel ciclo pulizia, quando pulizia è in corso
digitalWrite(ledclean, HIGH);
}
}
Dal solo pezzo non facile, ma... quella roba se inserita nella loop fa un ciclo ed ogni tot di tempo (dato da interval3 che non conosciamo) scrive in memoria un byte da 0 a 254 ad indirizzo 0
Poi arrivato a 254 dovrebbe "azzerare" (cosa?), ma li vai a scrivere su 1 su cella 1 (cosa significa ??)
La cella 0 dovrebbe essere a 254, ma non capisco poi come fai a dire che i valori variano a caso, in quel pezzo non stampi nulla a video.
Sicuro error è a 0 ? sicuro memon1 stia contando da 0 a 254 ?
Usi la EEPROM libreria ufficiale ?
dopo 1 po il problema si è ripresentato semplicemente perchè sbaglio a programmare e fondo la memoria di arduino, scrivo troppe volte. Ho provato a cambiare "BIT" si dice ? e funziona nuovamente.
Sta di fatto che quando la memoria arriva a fine vita, fa quello che vuole, numeri a caso.
Grazie per gli aiuti. Come sempre ci si deve arrangiare
Per danneggiare una cella devi fare decine, centinaia di migliaia di scritture! Normalmente si sta ben attenti a non scrivere troppo spesso e inutilmente.
Ventuno giorni fa, al post #2, ti sono state fatte delle domande chiarificatrici... per aiutarti. Te le sei cantate e suonate da solo, ma di risposte a quelle domande non ce n'è ancora traccia. Quindi di che ti lamenti?