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 ifelse 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

  2. Sintaxis Básica

  3. Ejemplo 1: Control de LED con Potenciómetro

  4. Ejemplo 2: Control de Múltiples LEDs

  5. Optimización del Código

  6. Conclusión


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:

cpp
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:

cpp
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

cpp
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

cpp
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

cpp
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 ifelse if y else.

  • 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

Entradas más populares de este blog

12. Demostracion de como usar Tinkercad para simular Arduino con circuitos

11. Ejemplos Básicos de Leds y Pulsadores

Lectura de Potenciómetro con Arduino Uno en Tinkercad