Go Down

Topic: Reinicio Arduino. (Read 145 times) previous topic - next topic

santilococo


¿Hay alguna forma de almacenar los valores de las variables necesarias en una SD (puede estar en un archivo que el programa actualiza en varios eventos), que puede leerse cuando el programa se inicia después de reiniciar/ o que por ejemplo, se apague de forma inesperada, la placa Arduino?

Tendría que guardar el volumen de agua que, mediante un sensor recolecto. Y necesito que este se luego del apagado (cuando se vuelve a conectar arduino) para que siga con el mismo limite que son 2L. De no hacer esto el usuario podría aprovecharse y tener volumen infinito.

No es viable hacerlo en la EEPROM ya que este sensor se actualiza cada 1 segundo, entonces la vida útil de este EEPROM se terminaria en menos de una semana.

Es fácil el tema de escribir en la SD pero me estaría costando el hecho de guardar texto como variable (del tipo float) y volver a este cada vez que se ocurre un reinicio.

Saludos.
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad." Albert Einstein

krnlpanic

Siento decirte que la SD también tiene limite de escrituras
Yo guardaría en la eeprom solo el bloqueo, para que si se reinicia siga bloqueado, se estima el limite de escrituras en 100000 por lo que tendrías para 273 años

Cual es el motivo del reinicio? por corte de luz?
Puedes probar a poner una fuente con batería si es el caso

PeterKantTropus

#2
Jul 20, 2019, 06:51 pm Last Edit: Jul 20, 2019, 06:53 pm by PeterKantTropus
No es viable hacerlo en la EEPROM ya que este sensor se actualiza cada 1 segundo, entonces la vida útil de este EEPROM se terminaria en menos de una semana.

Hay estrategias para evitar el uso significativo de la memoria Eeprom. La mas simple es solo escribirla cuando se produce un cambio significativo entre las mediciones, es decir en vez de guardar la medida cada segundo, lo harías solo cuando cambia cierto porcentaje establecido.
La otra estrategia es ir escribiendo en distinta direcciones consecutivas de la Eprom, por ejemplo escribo en la posición 1 el dato y en el valor consecutivo (2) escribo un cero. La siguiente vez que tengo que escribir en la Eeprom escribo el dato en 2 y un cero en el 3 y así sucesivamente hasta acabar la memoria y volver a empezar. Al reiniciar solo hay que buscar la primera posición donde hay un cero, de esta manera no estas escribiendo siempre en la misma posición de memoria.
"Si no entra como tornillo, entra como clavo"

Sereno

Yo creo que la mejor opción es que utilices una eeprom externa y el método de @PeterKantTropus.
Busca eeprom I2C, por poco mas de 2€.

Go Up