Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync

Komponenten und Materialien

Arduino Nano R3 1

Apps und Online-Dienste

Über das Projekt

Das Projekt spielt „Happy Birthday“ in dreistimmiger Polyphonie auf einem Arduino Nano mit drei Summer (Buzzern) auf einem einzigen Mini-Breadboard.

Demonstration

An jede USB-Stromquelle angeschlossen (nicht nur PC) spielt das Gerät die Melodie endlos – bis man sie nicht mehr hören kann. Die LEDs blinken taktsynchron zu jedem Notenwechsel im jeweiligen Kanal/Summer.

Schaltplan & Aufbau

Ziel war ein superkompaktes Gerät mit (fast) keinem Löten. Alles passt auf ein winziges Breadboard:

„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync

Die inneren Verbindungen des Breadboards:

„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync

Der Trick: Das Arduino Nano Board passt PERFEKT in ein solches Breadboard, sodass auf beiden Seiten Bauteile angeschlossen werden können.

„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync
„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync

Verwendet: Arduino Nano v3.0 (Gravitech), beliebige Piezo-Summer und LEDs. Widerstände 100 Ω (üblich 220 Ω für LEDs – hier egal).

Wichtig: Die Summer-Pins werden so in das Breadboard gesteckt:

„Happy Birthday“ dreistimmig auf Arduino Nano – Endlose Melodie mit Licht-Sync

Der mittlere Summer ist größer – ursprünglich für „Bass“ gedacht, klingt aber identisch. Drei gleiche Summer funktionieren ebenfalls; dann müssen Position und Pin-Nummern im Code angepasst werden.

Hack: Mehrere Arduino I/O-Pins werden als GND für Summer und LEDs genutzt. Setzt man einen Pin auf LOW, verhält er sich wie ein Ground-Pin. Cool, oder? ;)

Zur Programmierung

Der vollständige Sketch steht unten. Voraussetzung: Die Tone-Bibliothek installieren:

Tone.zip (Dropbox) – Pop-up einfach schließen.

Installation: In der Arduino IDE → Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen → Datei wählen.

Die Bibliothek nutzt Hardware-Timer und Interrupts für echte simultane Tonerzeugung („Redneck-Multitasking“ auf einem Kern ohne OS). Autor: Bhagman, GitHub: Tone Library.

Hinweis: Der Code ist umfangreich und schwer lesbar, da drei „unabhängige“ Melodie-Threads in einem linearen Ablauf verwaltet werden. Eine spätere Refaktorisierung für andere Songs blieb aus. Viel Erfolg – Feedback willkommen!

Code

Wichtig: Tone-Bibliothek vorher installieren!

#include <Tone.h>
Tone solo; Tone bass; Tone rythm;
const int t = 600;        // Viertelnote Dauer
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;   // A1
const int rythmLedPin = 17;  // A3
const int soloLedPin = 19;   // 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() {
  pinMode(14, OUTPUT); // A0 – LED GND
  pinMode(16, OUTPUT); // A2 – LED GND
  pinMode(18, OUTPUT); // A4 – LED GND
  pinMode(bassLedPin, OUTPUT);
  pinMode(rythmLedPin, OUTPUT);
  pinMode(soloLedPin, OUTPUT);
  pinMode(2, OUTPUT);  // Solo Summer GND
  pinMode(9, OUTPUT);  // Rythm Summer GND

  solo.begin(6);   // Solo Summer Signal
  bass.begin(12);  // Bass Summer Signal
  rythm.begin(0);  // Rythm Summer Signal

  // Intro: zwei kurze D4-Töne
  solo.play(NOTE_D4, t34); switchSoloLed(); wait(solo);
  solo.play(NOTE_D4, t14); switchSoloLed(); wait(solo);
}

void loop() {
  // Die gesamte Melodie wird notenweise abgespielt.
  // Jeder Block: play() → LED toggeln → wait() auf dem längsten Ton (meist rythm).
  // Struktur: Bass, Rythm, Solo parallel.
  // Siehe Originalcode für die vollständige Notenfolge.
  // ...
}

Hinweis: Der vollständige Notencode ist sehr lang. Das obige Gerüst zeigt die Struktur; die komplette Notenfolge finden Sie im Originalprojekt.

Herstellungsprozess

  1. K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
  2. Kommunikationshilfe für Taubblinde: 1Sheeld + Arduino + Sprachausgabe & Anzeige
  3. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  4. Arduino Nano Bundle: CrazyCircuits, DFRobot Sensoren & Werkzeuge – Projekte mit Vertrauen umsetzen
  5. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  6. DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
  7. Interaktives Nextion HMI Projekt mit Arduino Mega und Sensoren
  8. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  9. Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
  10. Handheld Geigerzähler mit Arduino Nano selbst bauen