Con la instrucción if, ya vista en el tema pulsadores, vimos un condicional, si el pulsador esta activado, enciende una luz.
En este tema vamos a ampliar las posibilidades de la instrucción if, aumentando el numero de condiciones para realizar una acción.
Ejemplos:
- Si esta activado el pulsador uno Y el pulsador dos enciendo un led
- Si esta activado el pulsador uno O el pulador dos enciendo un led
- Si esta activado el pulsador uno Y NO esta activado el pulsador dos enciendo un led
Ejercicio: En una instalación con tres led conectados a los pines 2,3 y 4 y tres pulsadores conectados a los pines 5,6 y 7.
El led 2 se encenderá si activo los pulsadores 5 y 6 y no activo el 7
El led 3 se encenderá si activo el pulsador 5 o el 6
El led 4 se encenderá si no pulso el 5
SOLUCIÓN
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
}
void loop()
{
if (digitalRead(5) == HIGH && digitalRead(6) == HIGH && digitalRead(7)== LOW)
{
digitalWrite(2, HIGH);
}// podia haberlo puesto todo en una linea
else digitalWrite(2, LOW); // solo una condición no necesito y por lo tanto no pongo llaves
if (digitalRead(5) == HIGH || digitalRead(6) == HIGH) digitalWrite(3, HIGH);
else digitalWrite(3, LOW);
if (digitalRead(5) == LOW) digitalWrite(4, HIGH);
else digitalWrite(4, LOW);
}
Con siguiente programa si activamos el pulsador conectado al pin 5, el led verde parpadea con una frecuencia de medio segundo, si pulsamos los pulsadores conectados a 6 o 7 se encienden los led rojo y amarillo.
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
}
void loop()
{
if (digitalRead(5) == HIGH)
{
digitalWrite(2,HIGH);
delay(500);
digitalWrite(2,LOW);
delay(500);
}
else digitalWrite(2,LOW);
if (digitalRead(7) == HIGH || digitalRead(6) == HIGH )
{
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
}
else
{
digitalWrite(4, LOW);
digitalWrite(3,LOW);
}
}
Si el parpadeo lo realizamos con una frecuencia de 2 segundos, observamos que las reación si pulso el pulsador del pin5 y luego el pulsador del pin6 o del pin7 observo que tardan casi 4 segundos en encender desde la pulsación de uno de estos, y pasa algo similar en el apagado.
Esto se solucionará mas adelante cuando cambiemos la instrucción delay por otra.