Arduino - Esclusa con Arduino UNO

 
Vista:

Esclusa con Arduino UNO

Publicado por Zamora (2 intervenciones) el 25/08/2020 02:48:09
Buen día a todos

Soy nuevo con Arduino, tengo un proyecto interesante que ya se realizo pero se tiene un detalle, se tiene dos puertas, se tienen chapar electricistas y sensores magnéticos en cada uno de ellas, con dos botones se permite la apertura de las chapas, si se oprime el botón uno y la puerta dos esta cerrada permite la apertura de la puerta uno, mientras este abierta la puerta uno no permite la apertura de la puerta 2, y viceversa, esto ya esta funcionando ya que tiene este arreglo:

1
2
3
4
5
6
7
8
if (SW_BOTON1 == 1 and  SE_PUERTA2 == 1){
    digitalWrite(8, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(11, HIGH);
    delay(2500);
    digitalWrite(8, HIGH);
    digitalWrite(11, LOW);
}

El problema es cuando oprimen el botón de puerta uno (libera la chapa) si la puerta no se muevo y desconecta el sensor de la puerta permite la abertura de la puerta 2.

intente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (SW_BOTON1 == 1 and  SE_PUERTA2 == 1){
    digitalWrite(8, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(11, HIGH);
    delay(2500);
    digitalWrite(8, HIGH);
    digitalWrite(11, LOW);
 
    delay(2000);
    while (SE_PUERTA1 == 1)
     {
       digitalWrite(11, HIGH);
       delay(50);
       digitalWrite(11, LOW);
       delay(50);
 
       if (SE_PUERTA1 == 0){
          break;
       }
     }
}

pero no sale del "WHILE" cuando se abre la puerta uno se queda dentro del ciclo, alguna idea para resolver esto?

Saludos y de antemano agradezco su ayuda.
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: 6
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Esclusa con Arduino UNO

Publicado por Ruben (2 intervenciones) el 01/09/2020 18:56:27
Hola, que no salga del while es un muy raro, luego yo no he visto nunca un and con arduino, he utilizado &&, mira:
podrías crear 2 funciones, la primera donde este todo el código y la segunda donde este el while, entonces, cuando quieras que el código
vaya al while, llamas a la función 2 desde la función 1, y luego para salir del, llamas de la función 2 a la función 1
mira:

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
void loop(){
funcion1();
}
 
void funcion1(){
if (SW_BOTON1 == 1 &&  SE_PUERTA2 == 1){
    digitalWrite(8, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(11, HIGH);
    delay(2500);
    digitalWrite(8, HIGH);
    digitalWrite(11, LOW);
 
    delay(2000);
    if(SE_PUERTA1 == 1){
    delay(10);               //cuando quieres saber el estado de una cosa en if siempre son buenos los delay
    funcion2();
}
}
}
 
 
 
void funcion2(){
while (SE_PUERTA1 == 1)
     {
       digitalWrite(11, HIGH);
       delay(50);
       digitalWrite(11, LOW);
       delay(50);
 
       if (SE_PUERTA1 == 0){
          funcion1();
       }
     }
}



ojala funcione ;)
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

Esclusa con Arduino UNO

Publicado por Zamora (2 intervenciones) el 02/09/2020 05:04:32
Gracias

El problema fue que no actualizaba la variable por eso no salía.
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