18. Manejo de control de Flujo if
Control de Flujo con Condicionales en Arduino
¡Hola a todos! En este tutorial vamos a explorar el control de flujo en programación, específicamente el uso de condicionales if, else if y else. Aprenderemos cómo tomar decisiones en nuestro código basadas en condiciones que evalúan como verdadero o falso.
Tabla de Contenidos
1. Introducción a las Condicionales {#introducción}
Una condicional permite que nuestro programa tome decisiones basadas en comparaciones entre valores. Estas comparaciones solo pueden tener dos resultados: true (verdadero) o false (falso). Algunos operadores comunes son:
>Mayor que>=Mayor o igual que<Menor que<=Menor o igual que==Igual a!=Diferente de
2. Sintaxis Básica {#sintaxis}
La estructura básica de una condicional es la siguiente:
if (condición) {
// Bloque de código si la condición es verdadera
} else {
// Bloque de código si la condición es falsa
}También existe else if para evaluar múltiples condiciones:
if (condición1) {
// Código si condición1 es verdadera
} else if (condición2) {
// Código si condición2 es verdadera
} else {
// Código si ninguna condición es verdadera
}3. Ejemplo 1: Control de LED con Potenciómetro {#ejemplo1}
Objetivo: Encender un LED en una mitad del giro del potenciómetro y apagarlo en la otra mitad.
Circuito
Conecta un potenciómetro a una entrada analógica (ej. A0).
Conecta un LED al pin digital 8 con una resistencia.
Código
int potPin = A0; // Pin del potenciómetro
int ledPin = 8; // Pin del LED
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int valor = analogRead(potPin); // Leer valor del potenciómetro (0-1023)
if (valor < 512) {
digitalWrite(ledPin, LOW); // Apagar LED en la primera mitad
} else {
digitalWrite(ledPin, HIGH); // Encender LED en la segunda mitad
}
}Explicación:
El potenciómetro devuelve valores entre 0 y 1023.
Si el valor es menor a 512 (primera mitad), el LED se apaga.
Si el valor es 512 o mayor (segunda mitad), el LED se enciende.
4. Ejemplo 2: Control de Múltiples LEDs {#ejemplo2}
Objetivo: Usar el potenciómetro para controlar el parpadeo de dos LEDs de forma exclusiva.
Circuito
Agrega un segundo LED al pin digital 9.
Código
int potPin = A0;
int ledPin1 = 8;
int ledPin2 = 9;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop() {
int valor = analogRead(potPin);
if (valor < 512) {
// Controlar LED 1: parpadeo con velocidad variable
int delayTime = map(valor, 0, 511, 50, 500);
digitalWrite(ledPin1, HIGH);
delay(delayTime);
digitalWrite(ledPin1, LOW);
delay(delayTime);
digitalWrite(ledPin2, LOW); // Asegurar que LED 2 esté apagado
} else {
// Controlar LED 2: parpadeo con velocidad variable
int delayTime = map(valor, 512, 1023, 50, 500);
digitalWrite(ledPin2, HIGH);
delay(delayTime);
digitalWrite(ledPin2, LOW);
delay(delayTime);
digitalWrite(ledPin1, LOW); // Asegurar que LED 1 esté apagado
}
}Explicación:
En la primera mitad (0-511), el LED 1 parpadea con velocidad variable.
En la segunda mitad (512-1023), el LED 2 parpadea con velocidad variable.
La función
map()ajusta el valor del potenciómetro al rango de tiempo deseado.
5. Optimización del Código {#optimización}
Podemos evitar repetir código usando variables para almacenar el pin del LED activo y el tiempo de delay.
Código Optimizado
int potPin = A0;
int ledPin1 = 8;
int ledPin2 = 9;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop() {
int valor = analogRead(potPin);
int pinActivo;
int delayTime;
if (valor < 512) {
pinActivo = ledPin1;
delayTime = map(valor, 0, 511, 50, 500);
} else {
pinActivo = ledPin2;
delayTime = map(valor, 512, 1023, 50, 500);
}
// Apagar ambos LEDs antes de activar uno
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
// Controlar el LED activo
digitalWrite(pinActivo, HIGH);
delay(delayTime);
digitalWrite(pinActivo, LOW);
delay(delayTime);
}Ventajas:
Código más limpio y mantenible.
Evita duplicación de lógica.
6. Conclusión {#conclusión}
Las condicionales son fundamentales para crear programas que tomen decisiones basedas en condiciones. Hemos aprendido:
Cómo usar
if,else ifyelse.A controlar LEDs con un potenciómetro.
A optimizar código para hacerlo más eficiente.
¡Espero que este tutorial te haya sido útil! En la próxima sección exploraremos el uso de sensores. ¡Hasta luego!
¡No olvides practicar y experimentar con los ejemplos!
Comentarios
Publicar un comentario