Introducción

La Navidad es una época mágica, y ¿qué mejor manera de celebrarla que con un proyecto DIY de electrónica? En este tutorial, te mostraremos cómo construir un «Árbol de Navidad» intermitente con luces LED de colores y un zumbador que reproduce melodías festivas, todo controlado por una placa Arduino. Es un proyecto divertido, educativo y perfecto para principiantes que quieren adentrarse en el mundo de la programación y la electrónica.

Materiales Necesarios

  • Placa Arduino Uno (o compatible)
  • Protoboard (al menos una, preferiblemente dos para más espacio y claridad)
  • 8-10 LEDs de diferentes colores (rojo, verde, azul, blanco, amarillo, etc.)
  • 8-10 resistencias de 220 ohmios o 330 ohmios (una por cada LED)
  • 1 Buzzer (zumbador) activo o pasivo
  • Cables jumper (macho-macho)
  • Cable USB para conectar el Arduino al ordenador

Esquema del montaje

El montaje se realizará sobre una o dos protoboards. Primero, colocaremos los LEDs en una forma que simule un árbol de Navidad, conectando cada LED a su resistencia. Luego, añadiremos el buzzer. Finalmente, conectaremos todos estos componentes a los pines digitales y al pin GND de nuestro Arduino. Asegúrate de que las conexiones sean firmes y ordenadas para evitar cortocircuitos y facilitar la depuración.

Conexiones:

  • LEDs: Conecta el ánodo (patilla larga) de cada LED a un pin digital diferente del Arduino (por ejemplo, del pin 2 al pin 9). Conecta el cátodo (patilla corta) de cada LED a una resistencia de 220 o 330 ohmios. El otro extremo de cada resistencia se conecta al carril GND de la protoboard.
  • Buzzer: Conecta una patilla del buzzer a un pin digital libre del Arduino (por ejemplo, el pin 10). Conecta la otra patilla del buzzer al carril GND de la protoboard. Si es un buzzer pasivo, no importa la polaridad. Si es activo, suele tener un signo ‘+’ o una patilla más larga para el positivo.
  • GND Común: Conecta el carril GND de la protoboard al pin GND de la placa Arduino para cerrar todos los circuitos.

Codigo Arduino


// Definición de pines para los LEDs
// Puedes ajustar estos pines según tu montaje y la cantidad de LEDs.
// Sugerencia: Intenta organizar los LEDs en la protoboard para que
// simulen la forma de un árbol de Navidad.
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // 8 LEDs
const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);

// Definición de pin para el Buzzer
const int buzzerPin = 10;

// Definiciones de notas para el Buzzer (simplificado para una melodía navideña)
#define NOTE_C4  262 // Do central
#define NOTE_D4  294 // Re
#define NOTE_E4  330 // Mi
#define NOTE_F4  349 // Fa
#define NOTE_G4  392 // Sol
#define NOTE_A4  440 // La
#define NOTE_B4  494 // Si
#define NOTE_C5  523 // Do alto

// Duraciones de notas (en milisegundos)
#define WHOLE    1000 // Redonda
#define HALF     500  // Blanca
#define QUARTER  250  // Negra
#define EIGHTH   125  // Corchea

void setup() {
  // Configura todos los pines de los LEDs como SALIDA
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  // Configura el pin del buzzer como SALIDA
  pinMode(buzzerPin, OUTPUT);
  // Inicializa el generador de números aleatorios
  randomSeed(analogRead(0));
}

// Función para reproducir una nota con duración y pequeña pausa
void playTone(int note, int duration) {
  tone(buzzerPin, note, duration);
  delay(duration + 20); // Pequeña pausa entre notas para distinguirlas
  noTone(buzzerPin);    // Detiene la nota
}

// Función para tocar una melodía navideña simple
void christmasTune() {
  // Fragmento de "Jingle Bells"
  playTone(NOTE_E4, QUARTER);
  playTone(NOTE_E4, QUARTER);
  playTone(NOTE_E4, HALF);
  delay(100);

  playTone(NOTE_E4, QUARTER);
  playTone(NOTE_E4, QUARTER);
  playTone(NOTE_E4, HALF);
  delay(100);

  playTone(NOTE_E4, QUARTER);
  playTone(NOTE_G4, QUARTER);
  playTone(NOTE_C4, QUARTER);
  playTone(NOTE_D4, QUARTER);
  playTone(NOTE_E4, WHOLE);
  delay(500); // Pausa más larga al final de la frase
}

void loop() {
  // --- Patrón 1: Todos los LEDs encendidos y música ---
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], HIGH);
  }
  christmasTune();
  delay(500); // Mantener LEDs encendidos un poco más después de la música

  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], LOW);
  }
  delay(500); // Todos los LEDs apagados

  // --- Patrón 2: Luces persiguiendo (chasing lights) ---
  for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); playTone(NOTE_C4 + (i * 20), EIGHTH); // Escalada de tonos simple delay(100); digitalWrite(ledPins[i], LOW); } // Y luego en sentido inverso for (int i = numLeds - 1; i >= 0; i--) {
    digitalWrite(ledPins[i], HIGH);
    playTone(NOTE_C4 + (i * 20), EIGHTH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
  delay(500);

  // --- Patrón 3: Parpadeo aleatorio ---
  for (int k = 0; k < 20; k++) { // 20 parpadeos aleatorios
    int randomLed = random(0, numLeds); // Elige un LED al azar
    digitalWrite(ledPins[randomLed], HIGH);
    delay(random(50, 200)); // Duración aleatoria
    digitalWrite(ledPins[randomLed], LOW);
    delay(random(50, 200));
  }
  delay(1000); // Pausa antes de repetir el loop
}

Como funciona

El cerebro: Arduino

El Arduino Uno actúa como el cerebro de nuestro árbol de Navidad. Está programado con un código que le indica exactamente cuándo y cómo encender los LEDs y cuándo activar el zumbador. La energía se suministra a través del cable USB desde tu ordenador, que también se utiliza para cargar el código en la placa.

Las luces: LEDs

Los LEDs (diodos emisores de luz) son los encargados de darle vida a nuestro árbol. Cada LED se conecta a un pin digital del Arduino, que puede configurarse para enviar una señal de «alto» (HIGH, que proporciona 5V y enciende el LED) o «bajo» (LOW, que lo apaga). Es crucial utilizar una resistencia en serie con cada LED para limitar la corriente que fluye a través de ellos y evitar que se quemen. Las resistencias de 220 o 330 ohmios son las más comunes para este tipo de proyectos.

La melodía: Buzzer

El zumbador es un pequeño dispositivo que puede producir sonidos. Al conectarlo a un pin digital y usar la función tone() de Arduino, podemos generar ondas cuadradas de diferentes frecuencias (que se perciben como notas musicales) durante un tiempo determinado. La función noTone() se utiliza para detener el sonido. Esto nos permite tocar melodías simples o efectos de sonido, como la que escuchas en el vídeo y en nuestro código de ejemplo.

La programación

El código de Arduino se divide en dos funciones principales: setup() y loop(). En setup(), que se ejecuta una sola vez al inicio, se inicializan todos los pines que se utilizarán (estableciéndolos como pines de SALIDA para controlar los LEDs y el buzzer). En loop(), se ejecuta repetidamente la lógica principal del programa: los patrones de luces y la música. Utilizamos la función delay() para controlar el tiempo que los LEDs permanecen encendidos o apagados y la duración de las notas musicales, creando así los diversos efectos visuales y auditivos que simulan un árbol de Navidad festivo. La función random() añade un toque de imprevisibilidad a algunos patrones de luz, haciendo que el árbol parezca más dinámico.

Material

Aquí os dejamos los materiales que nosotros compramos cuando empezamos. Si quieres darnos una pequeña ayuda puedes comprar desde este link. Gracias por leernos!

Placa arduino: https://amzn.to/43LM4k4
Protoboard: https://amzn.to/3LZaZdM
Cables: https://amzn.to/3K5N3ox
Leds: https://amzn.to/4iryuse
Buzzer: https://amzn.to/4ilPlfX
Pack de lo necesario para empezar: https://amzn.to/3MmuDAs
«`