Arduino - Problemas con IF ELSE en arduino

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 4 puestos en Arduino (en relación al último mes)
Gráfica de Arduino

Problemas con IF ELSE en arduino

Publicado por Jhojan (1 intervención) el 02/12/2018 12:08:47
Hola muy buenas con todos del foro. Mi problema es con el uso de IF ELSE. Tengo tres sentencias. Una es del codigo mismo. El segundo es que me de una alerta cuando llega o pasa por un valor maximo establecido. La tercera es igual cuando llega un valor minimo establecido. Me de una alerta. Pero el problema esta en el valor minimo que se me queda prendido todo el tiempo apenas que llega a ese valor. Por favor ayudenme aun soy novato. Se los agradecere
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
int maximo = 4;
int minimo = 5;
 
int contador = 0;
long tiempo = 0;
 
void setup()
{
    pinMode(maximo, OUTPUT);
    pinMode(minimo, OUTPUT);
       pinMode(2, INPUT_PULLUP);
       Serial.begin(115200);
attachInterrupt(0, PasoXCero, FALLING);
 
}
 
void loop()
{
   if(millis()-tiempo>999)
    {
        Serial.println(contador);
        tiempo = millis();
        contador = 0;
 
    }
 
    if(contador >= 121)
    {
        digitalWrite(maximo, HIGH);
        delay(500);
    }
    else if (contador <= 119)
    {
        digitalWrite(minimo, HIGH);
        delay(500);
    }
    else
    {
        digitalWrite(maximo, LOW);
        digitalWrite(minimo, LOW);
    }
}
void PasoXCero()
{
    contador++;
}
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
sin imagen de perfil
Val: 40
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Problemas con IF ELSE en arduino

Publicado por foroplus (18 intervenciones) el 03/12/2018 07:56:10
Según tu código, y aunque tienes una subrutina para aumentar el valor del contador, nunca la llamas, por que el valor del contador será siempre 0, es decir, que el pin minimo estará siempre high, y como parece que tienes un led a él conectado, siempre estará encendido.

Debes introducir en la parte del programa principal, bucle loop(), un incremento del contador contador++, o llamar a la función PasoXcero.

En tu código, creo que la interrupción, que es la que modificaría el valor de contador, aumentándolo, sólo se dispara cuando el varor del PIN cambia de HIGH a LOW, que es sólo 1 vez. Ojo con las interrupciones porque son programación avanzada. Yo lo gestionaría todo desde loop() y con el contador de milis.
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