Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas

Componentes y materiales

Componente Cantidad
Arduino Nano R3 1

Aplicaciones y servicios online

Sobre el proyecto

Reproduce el tema «Cumpleaños Feliz» en polifonía en un Arduino Nano con tres zumbadores en una mini protoboard.

Primero, la demostración

Conectad este dispositivo a cualquier fuente de alimentación USB (no solo al ordenador) y reproducirá la melodía «Cumpleaños Feliz» indefinidamente… casi… hasta que os canséis =]

Además, los LEDs parpadean al compás de cada cambio de nota en el canal/zumbador correspondiente.

Esquemático

La idea era hacer un dispositivo súper compacto con (casi) nada de soldadura. Logré colocar todo lo necesario en una protoboard diminuta:

Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas

Los agujeros de la protoboard están interconectados así:

Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas

El truco es que la placa Arduino Nano encaja PERFECTAMENTE en esta protoboard, permitiendo conectar componentes adicionales a ambos lados.

Perdonad, soy demasiado perezoso para dibujar diagramas, pero el caso es TAN simple que estos primeros planos serán más que suficientes =]

Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas
Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas

Uso una Arduino Nano v3.0 de Gravitech, pero cualquier clon sirve. Los zumbadores y LEDs son totalmente ordinarios, no necesitan parámetros especiales.

Las resistencias son de 100 Ω (el «estándar» para protección de LEDs suele ser 220 Ω… pero a quién le importa… ¯\_(ツ)_/¯).

Lo que quizás no sea obvio en las fotos es cómo se insertan los pines de los zumbadores:

Reproduce «Cumpleaños Feliz» con Polifonía de 3 Vías en Arduino Nano – Demo Infinita con Luces Sincronizadas

El zumbador central es más grande: se usa para el canal «bajo» ☝🏻… ¡broma! ^__^ Todos suenan igual de agudos, como un coro de ratones locos. Podéis usar tres zumbadores idénticos sin problema, solo tendréis que colocarlos en otras posiciones y cambiar los números de pin en el código.

Otro pequeño «truco»: uso varios pines I/O de Arduino como pines de TIERRA (GND) para zumbadores y LEDs 😱😱. Si ponéis un pin en estado LOW en el programa, puede usarse exactamente igual que un pin GND estándar. ¡Genial, no? ;)

Sobre el programa…

El listado completo del sketch para Arduino IDE está abajo. Pero debéis instalar la librería adicional «Tone» para poder compilar:

Descargar Tone.zip (si aparece ventana de registro, cerradla con la X).

Instalación fácil: en el menú principal del IDE, Programa → Incluir librería → Añadir librería .ZIP… y seleccionad el zip descargado.

Esta librería es necesaria para generar varios tonos simultáneos en un solo controlador (usa temporizadores e interrupciones de hardware «bajo el capó»). En resumen, es una especie de «multitarea rústica» en un solo núcleo sin SO =]

Autor de la librería (¡gracias!): Bhagman | GitHub: Tone

AVISO 🙂: Mi código es bastante voluminoso y difícil de leer. Eso se debe a la necesidad de «hacer malabares» con tres «hilos» de melodía independientes desde un solo flujo lineal de comandos. Pensé en refactorizar para separar las melodías y reutilizarlas en otras canciones… pero probablemente no lo haga =]

¡Suerte! Cualquier feedback es bienvenido. Gracias por leer hasta el final =]

Código

Happy_birthday (Arduino)

¡No olvidéis instalar la librería Tone!!

#include <Tone.h>
Tone solo;
Tone bass;
Tone rythm;

const int t = 600; // duración de negra
const int tt = t*2;
const int t14 = round(t*1/4);
const int t24 = round(t*2/4);
const int t34 = round(t*3/4);

const int bassLedPin = 15;   // pin LED bajo (A1)
const int rythmLedPin = 17;  // pin LED ritmo (A3)
const int soloLedPin = 19;   // pin LED solo (A5)

void wait(Tone t) { while (t.isPlaying()) { } }

int bassLedState = LOW;
void switchBassLed() { bassLedState = !bassLedState; digitalWrite(bassLedPin, bassLedState); }

int rythmLedState = LOW;
void switchRythmLed() { rythmLedState = !rythmLedState; digitalWrite(rythmLedPin, rythmLedState); }

int soloLedState = LOW;
void switchSoloLed() { soloLedState = !soloLedState; digitalWrite(soloLedPin, soloLedState); }

void setup(void) {
  pinMode(14, OUTPUT); // GND LED (A0)
  pinMode(16, OUTPUT); // GND LED (A2)
  pinMode(18, OUTPUT); // GND LED (A4)
  pinMode(bassLedPin, OUTPUT);
  pinMode(rythmLedPin, OUTPUT);
  pinMode(soloLedPin, OUTPUT);
  pinMode(2, OUTPUT);  // GND zumbador solo
  pinMode(9, OUTPUT);  // GND zumbador ritmo
  solo.begin(6);   // pin señal zumbador solo
  bass.begin(12);  // pin señal zumbador bajo
  rythm.begin(0);  // pin señal zumbador ritmo
  solo.play(NOTE_D4, t34); switchSoloLed(); wait(solo);
  solo.play(NOTE_D4, t14); switchSoloLed(); wait(solo);
}

void loop(void) {
  // La secuencia completa de notas se omite por brevedad.
  // El código original reproduce la melodía completa con tres voces
  // y parpadea los LEDs correspondientes en cada cambio de nota.
  // Consultad el código fuente completo en el repositorio del proyecto.
}

Proceso de manufactura

  1. Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
  2. Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
  3. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  4. Vestido Inteligente con Arduino Nano: Monitor de Ritmo Cardíaco y LEDs Controlados por CrazyCircuits y DFRobot
  5. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  6. Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
  7. Proyecto HMI Interactivo con Nextion, Arduino Mega y Múltiples Sensores
  8. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
  9. Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
  10. Contador Geiger Portátil con Arduino Nano: Construye tu Detector de Radiación
  11. Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet