Hice un código que lee un pulsador con antirrebote, en donde si el botón es pulsado 2 veces en menos de 2,5 segundos, se enciende un led y suena un buzzer 3 veces, pero si en esos 2,5 segundos solo es pulsado una vez y luego de esto pasan 2,5 segundos más sin ningún nuevo pulsado, todo vuelve a cero.
Es ahí donde aparece mi problema se queda en un bucle infinito ejecutando la función: "void borrado ()".
No se como hacer para que vuelva a ejecutarse el void loop.
Gracias
const int pulsador = 2;
const int led = 13;
const int buzz=5;
int lectura = 0, lecturaAnterior = 0;
const int tiemposis = 2500;
const int tiempoborrado = 5000;
unsigned long disparo =0;
unsigned long flancoSubida = 0;
int tiempoAntirebote = 50, contador = 0;
void setup() {
pinMode(pulsador, INPUT);
pinMode(led, OUTPUT);
Serial.begin (9600);
}
/*void(* resetFunc) (void) = 0;*/
void loop() {
lectura = digitalRead(pulsador);
if (lectura == HIGH && lecturaAnterior == LOW && (millis() - flancoSubida) > tiempoAntirebote ){
disparo = millis ();
contador++;
Serial.println (contador);
if (contador == 2 && (millis() - disparo) < tiemposis){
digitalWrite (led,1);
delay (30);
tone (buzz,2000);
delay (30);
digitalWrite (led,0);
delay (30);
noTone (buzz);
delay (30);
digitalWrite (led,1);
delay (30);
tone (buzz,1000);
delay (30);
digitalWrite (led,0);
delay (30);
noTone (buzz);
delay (30);
digitalWrite (led,1);
delay (30);
tone (buzz,2000);
delay (30);
digitalWrite (led,0);
delay (30);
noTone (buzz);
delay (30);
contador = 0;
}
flancoSubida = millis();
}
if (contador < 2 && (millis() - disparo) > tiempoborrado){
borrado ();
}
lecturaAnterior = lectura;
}
void borrado (){
contador = 0;
disparo = 0;
lectura = 0;
lecturaAnterior = 0;
Serial.println ("Contador borrado");
Serial.println ("Else activado");
}