No esta perfecto pero va en la dirección correcta
const byte boton = 5;
byte estadoboton;
byte estadoAntBoton;
byte Tguardado = false;
int contador = 0;
unsigned long tiempoPar,
tiempoImpar,
tiempoDiff,
tiempo;
bool presento = false;
void setup() {
pinMode(boton, INPUT);
Serial.begin(9600);
Serial.println ("Inicio");
}
void loop() {
estadoboton = digitalRead(boton);
if (estadoboton != estadoAntBoton) {
if (estadoboton== LOW) {
contador++;
Serial.print("Contador : " + String(contador));
presento = true;
}
}
estadoAntBoton = estadoboton;
if (presento) {
if (contador % 2 == 0) {
tiempoPar = millis();
Serial.println("=> par =>");
Tguardado =true;
}
else {
Serial.print("=>impar =>");
tiempoImpar = millis();
Tguardado = false;
}
if (!Tguardado) {
tiempoDiff = tiempoImpar - tiempoPar;
Serial.println(" Tiempo : " + String(tiempoDiff));
tiempo = millis();
}
}
presento = false;
}
Yo quitaría el
if (estadoboton== LOW) {
que permite que ocurran cosas raras como tiempos 0 o muy pequeños.
Lo he quitado y lo hace igual, asi que es un punto a analizar.