Hola espero me puedan ayudar ya que intento hacer un programa en arduino uno el cual es el siguiente:
int BANDA = 19;
int BOMBA = 18;
int ELEV = 17;
int ARRANQUE = 6;
int PARO = 7;
void setup()
{
pinMode(ARRANQUE, INPUT);
pinMode(PARO, INPUT);
pinMode(BANDA, OUTPUT);
pinMode(BOMBA, OUTPUT);
pinMode(ELEV, OUTPUT);
}
void loop()
{
if(digitalRead(ARRANQUE)==HIGH)
{
do
{
digitalWrite(BANDA, HIGH);
delay(4000);
digitalWrite(BOMBA, HIGH);
delay(4000);
digitalWrite(BOMBA, LOW);
digitalWrite(ELEV, HIGH);
delay(1500);
digitalWrite(ELEV, LOW);
} while (PARO==LOW);
}
if(digitalRead(PARO)==HIGH)
{do{digitalWrite(BOMBA, LOW);
digitalWrite(ELEV, LOW);
digitalWrite(BANDA, LOW);
}
while (ARRANQUE==LOW);
}}
Quiero tener dos botones uno de paro y otro de arranque cuando se apriete el de arranque se hagan las funciones de encender las variables con nombre BOMBA, ELEV y BANDA eso hasta ahora lo hago con leds y funciona pero cuando se aprieta el boton de paro la secuencia no se apaga, ningun led se apaga , quisiera saber en que estoy mal o que me ayuden a darle solucion de antemano gracias.
Lo que debes hacer es definir una variable booleana de este modo
bool estadoArranque = false;
bool estadoParo = false;
estas variables toman dos estados 1 o 0. falso o verdadero (true).
Cuando presiones el boton ARRANQUE pones la variable estadoArranque en true y estadoParo en false.
Cuando presiones el botón PARO pones la variable estadoParo en true y estadoArranque en false.
cuando consultes por el valor de estadoArranque y si es uno haras la secuencia que tenías y luego pones en 0 la variable estadoArranque con lo que no se ejecutará mas.
Lo mismo cuando detengas.
const byte BANDA = 19;
const byte BOMBA = 18;
const byte ELEV = 17;
const byte ARRANQUE = 6;
const byte PARO = 7;
bool estadoArranque = false;
bool estadoParo = false;
byte leoArranque, leoArranqueAnt = 0;
byte leoParo, leoParoAnt = 0;
void setup() {
pinMode(ARRANQUE, INPUT);
pinMode(PARO, INPUT);
pinMode(BANDA, OUTPUT);
pinMode(BOMBA, OUTPUT);
pinMode(ELEV, OUTPUT);
}
void loop() {
leoArranque = digitalRead(ARRANQUE);
leoParo = digitalRead(PARO);
if (leoArranque == HIGH && leoArranqueAnt == LOW) {
estadoArranque = true;
estadoParo = false;
}
leoArranqueAnt = leoArranque;
if (leoParo == HIGH && leoParoAnt == LOW) {
estadoArranque = false;
estadoParo = true;
}
leoParoAnt = leoParo;
if (estadoArranque) {
digitalWrite(BANDA, HIGH);
delay(4000);
digitalWrite(BOMBA, HIGH);
delay(4000);
digitalWrite(BOMBA, LOW);
digitalWrite(ELEV, HIGH);
delay(1500);
digitalWrite(ELEV, LOW);
estadoArranque = false; // ya se ejecutó asi que no lo hago mas
}
if (estadoParo) {
digitalWrite(BOMBA, LOW);
digitalWrite(ELEV, LOW);
digitalWrite(BANDA, LOW);
estadoParo = false; // ya se ejecutó asi que no lo hago mas
}
}
1 Like