buenos días, ando con este código que lo que hace es contar las veces que se pulsa un pulsador, y cuenta el tiempo que permanece pulsado. el programa sin las opciones de EEPROM funciona bien, lo que quiero es cuando por ejemplo se pulsa por serial la "s" (guardar en eeprom) y la "r" (para resetear valores de la misma), estas dos opciones para minimizar el impacto en las escrituras de la eeprom.
el registro del contador funciona bien, me guarda correctamente las veces que se ha pulsado, pero el registro del tiempo NO. alguien me puede echar un cable? que estoy haciendo mal?
gracias
#include <JC_Button.h>
#include <EEPROM.h> //Librería para controlar la EEPROM de la Arduino
//definició pins digitals per comptar pulsacions
Button boton0(34);
unsigned long tiempo1, tiempo2, duracion_actual0, duracion_total0, duracion_acumulada0, numpulsos0;
int eeAddress0 = 0;
int eeAddress4 = 4;
int option;
void setup() {
Serial.begin(9600);
EEPROM.get( eeAddress0, duracion_acumulada0 );
EEPROM.get( eeAddress4, numpulsos0 );
}
void loop() {
//codi per saber numero de pulsacions i temps transcorregut "pulsat"
boton0.read(); // Actualizo el botón.
if ( boton0.wasPressed() ) { // Si ha sido pulsado.
tiempo1 = millis(); //Guardo el tiempo.
}
if ( boton0.wasReleased() ) { // Si ha sido soltado.
numpulsos0++;
tiempo2 = millis(); // cojo el tiempo
duracion_actual0 = tiempo2-tiempo1; // y calculo la duración.
Serial.print("duració actual: ");
Serial.println(duracion_actual0);
duracion_acumulada0 = duracion_actual0 + duracion_acumulada0;
Serial.print("duració acumulada: ");
Serial.println(duracion_acumulada0);
Serial.print("num de pulsos: ");
Serial.println(numpulsos0);
}
//preparació sistema per guardar dades a la eeprom abans que marxi la llum i pulsador per fer reset a la eeprom
if (Serial.available()>0){
//leemos la opcion enviada
option=Serial.read();
if(option=='s') {
Serial.println("Sense energia");
EEPROM.put( eeAddress0, duracion_acumulada0 );
EEPROM.put( eeAddress4, numpulsos0 );
Serial.println("dades guardades a EEPROM");
}
if(option=='r') {
Serial.println("resetejar memoria");
for (int i = 0 ; i < EEPROM.length() ; i++) {
EEPROM.write(i, 0);
}
delay(5000);
Serial.println("memoria borrada");
}
}
}