Tomo 3: El Efecto "Auto Increíble" - Secuencias de LEDs

Ahora que sabemos controlar un LED, ¿por qué no controlar ocho? En esta misión, aprenderemos a manejar múltiples salidas para crear efectos visuales y animaciones. Introduciremos dos conceptos de programación increíblemente poderosos que nos ahorrarán escribir cientos de líneas de código: los Arrays y los bucles `for`.

🧠 Protagonista de Hoy: El Bucle `for` y los Arrays

Un Array (o arreglo) es como una caja con compartimentos numerados donde podemos guardar una colección de valores del mismo tipo. En lugar de crear 8 variables para los 8 pines, creamos un solo array. El bucle `for` es una herramienta que hace trabajo repetitivo por nosotros. Le decimos "repite esta acción X veces" y él se encarga, ideal para recorrer nuestro array y activar cada LED uno por uno.

🧠 El Código: Programando Animaciones

Este código nos enseña a ser eficientes. Con muy pocas líneas, controlaremos todos los LEDs para crear un efecto de barrido de ida y vuelta.

Código Arduino

/*
 * Misión 03: El Efecto "Auto Increíble"
 * Descripción: Crea una secuencia de luces con 8 LEDs.
 * Por: Profe Campos
 * CECyTEM 05 Guacamayas
*/

// Creamos un array de enteros para guardar los números de los pines de nuestros LEDs.
int pinesLeds[] = {2, 3, 4, 5, 6, 7, 8, 9};
// Creamos una variable para saber cuántos LEDs tenemos.
int numLeds = 8;

void setup() {
  // Usamos un bucle 'for' para configurar todos los pines como salida.
  // "Para i desde 0, mientras i sea menor que 8, incrementa i en 1"
  for (int i = 0; i < numLeds; i++) {
    pinMode(pinesLeds[i], OUTPUT); // En cada repetición, configura el pin correspondiente.
  }
}

void loop() {
  // Secuencia de Izquierda a Derecha
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(pinesLeds[i], HIGH); // Enciende el LED actual.
    delay(80);                         // Espera un momento.
    digitalWrite(pinesLeds[i], LOW);  // Apaga el LED actual.
  }
  // Secuencia de Derecha a Izquierda
  // "Para i desde 7, mientras i sea mayor o igual a 0, decrementa i en 1"
  for (int i = numLeds - 1; i >= 0; i--) {
    digitalWrite(pinesLeds[i], HIGH);
    delay(80);
    digitalWrite(pinesLeds[i], LOW);
  }
}
        

🔌 Manos a la Obra: El Circuito

Conectaremos 8 LEDs a nuestro Arduino. Será como una pista de aterrizaje personal para practicar el control de múltiples salidas.

Diagrama del Circuito 3

Diagrama de conexión para una secuencia de 8 LEDs

💡 Conceptos Clave de la Misión

🚀 ¡Inténtalo Tú Mismo! (Retos)