Arduino - Se me queda "colgado" dentro de una función

 
Vista:

Se me queda "colgado" dentro de una función

Publicado por Marcelo (2 intervenciones) el 12/10/2020 01:50:45
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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");
 
        }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Se me queda "colgado" dentro de una función

Publicado por Nacho (36 intervenciones) el 12/10/2020 13:16:43
Quita los println.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se me queda "colgado" dentro de una función

Publicado por Marcelo (2 intervenciones) el 12/10/2020 19:29:12
No se porque, pero tu respuesta ha funcionado perfectamente. Muchas Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se me queda "colgado" dentro de una función

Publicado por Nacho (36 intervenciones) el 12/10/2020 20:19:29
Pues porque se queda colgado el println,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar