Construir una lámpara de escritorio reactiva al audio con Arduino Nano
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Arduino Nano R3 | 1 |
| Módulo detector de sonido | 1 |
| Protoboard (genérica) | 1 |
| Cables jumper (genéricos) | 1 |
| Tira LED direccionable (addressable) | 1 |
| Tarrito IKEA DROPPAR (el más alto) | 1 |
| Tramo pequeño de tubo PVC | 1 |
Herramientas necesarias
- Soldador
Aplicaciones y servicios online
- Arduino IDE
Sobre este proyecto
¡HOLA MUNDO!
En esta construcción haremos una lámpara bonita que baila al ritmo de todos los sonidos y música, usando componentes simples y programación básica de Arduino. Hace un efecto genial en el escritorio mientras juegas, pones música, o cualquier cosa que haga sonido. ¡Vamos allá!
Este proyecto lo basé en el youtuber "Natural Nerd". Es mi versión del proyecto. Todo el crédito para ellos y un gran saludo por proporcionar los detalles.
PASO 1: SUMINISTROS PRINCIPALES
¿Qué suministros necesitamos y cuánto cuestan? Son largely opcionales y se pueden improvisar. Elementos clave:
- Arduino Nano (o cualquier Arduino pequeño)
- Módulo Detector de Sonido
- Fuente de alimentación 5V (o 12V con módulo step-down)
- Tira LED direccionable individualmente 60 LEDs/metro
Para el aspecto final usé:
- Tarrito IKEA DROPPAR más alto
- Tramo de tubo PVC
- Tablero de espuma (foam board)
- Pistola de pegamento caliente
Coste total aprox. 83 RM (≈17€), siendo la tira LED lo más caro (40 RM por 1 metro).
PASO 2: ALIMENTACIÓN DE COMPONENTES
Método directo: cable USB del Arduino Nano al PC. Si usas fuente externa AC/DC, necesitas un módulo step-down para bajar a 5V; de lo contrario arriesgas quemar el Arduino y componentes.
El módulo detector de sonido da una señal analógica al Arduino. Ambos requieren 5V. Conecta VIN de Arduino y detector a positivo, GND a negativo. También alimenta la tira LED (VCC/GND) de la misma fuente.
PASO 3: DETECTOR Y TIRAS LED
- Salida analógica del detector → Pin A0 (analógico) del Arduino
- Entrada de datos de la tira LED → Pin D6 (digital) del Arduino
- Usa tubo termorretráctil en cables para evitar contactos en espacio reducido
PASO 4: SUBIR EL CÓDIGO
La parte más importante es el código. Cambia la construcción de "bastante guay" a "increíblemente genial". Principio: mapear valor analógico del sensor a número de LEDs a encender. Usa la librería FastLED.
PASO 5: PREPARAR LA CARCASA
- La tapa del tarrito era de vidrio, no acrílico. Hice una tapa de foam board circular del mismo diámetro (usé rotulador mojado y papel para medir).
- Rompe el vidrio de la tapa dentro de una bolsa plástica gruesa (¡seguridad!) y en espacio abierto. Retira todos los fragmentos.
- Coloca el foam board en el centro de la tapa; que quede ajustado.
- Haz agujeros en el foam board: uno central para mini protoboard, dos para cables del detector de sonido (que irá fuera de la tapa), uno para cable USB del Arduino (montado vertical).
- Corta tubo PVC a la altura del tarrito. Marca con cinta y corta limpio.
- Enrolla la tira LED en espiral alrededor del tubo PVC, ligeramente inclinada hacia arriba. Deja agujero en tubo para esconder cables.
- Fija tubo PVC al foam board/protoboard con pegamento caliente o cinta doble cara. Conecta componentes en protoboard según esquema.
- Coloca el módulo de sonido fuera de la tapa (para captar mejor el sonido ambiente). Conecta según esquema.
Código
Usa librería FastLED. Configuración principal:
NUM_LEDS = 60LED_PIN = 6ANALOG_READ = A0MIC_LOW = 0.0,MIC_HIGH = 200.0(calibrar según tu módulo)
Funciones clave:
fscale(): Mapeo no lineal (curva) para respuesta visual agradablesample(): Lectura analógica con promedio móvilvisualize_music(): Lógica principal – detecta picos, modo "HIGH" (batida fuerte) vs "NORMAL", ajusta colores y número de LEDs activos- Modo HIGH: fade rápido, colores cálidos (rojo/amarillo)
- Modo NORMAL: fade lento, colores fríos (azul/verde)
- Auto-reset de promedio de canción cada 30 seg
#include <FastLED.h>
#define NUM_LEDS 60
#define LED_PIN 6
#define ANALOG_READ A0
#define MIC_LOW 0.0
#define MIC_HIGH 200.0
#define AVGLEN 5
#define LONG_SECTOR 20
#define DELAY 1
CRGB leds[NUM_LEDS];
int avgs[AVGLEN] = {-1};
int long_avg[LONG_SECTOR] = {-1};
// ... variables de estado, color, timing ...
void setup() {
Serial.begin(9600);
FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
// Test inicial: todos azules
for(int i=0;i avg * 0.8) return; // Filtrar outliers
insert(mapped, avgs, AVGLEN);
insert(avg, long_avg, LONG_SECTOR);
// Lógica de modo HIGH/NORMAL, cálculo curshow, actualización LEDs...
// Ver código completo en repositorio del proyecto
FastLED.show();
}
// Funciones auxiliares: compute_average, insert, fscale...
Código completo en el repositorio del autor.
Esquemáticos
Esquema: Arduino Nano USB → 5V/GND → Detector sonido (VCC/GND/A0) y Tira LED (VCC/GND/D6). Protoboard para distribución. Detector fuera de la carcasa; tira LED en espiral dentro de tubo PVC.
Proceso de manufactura
- Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense
- Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Cómo reproducir audio con Arduino UNO y DFPlayer Mini – Guía paso a paso
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
- MobBob: Robot Arduino Impreso en 3D, Controlado por Smartphone Android
- Pong Neón en Matriz NeoPixel con Arduino Nano
- Construye un volante joystick personalizado con Arduino para gaming