Vier met Licht en Geluid: DIY Verjaardags Arduino-project
Onderdelen en benodigdheden
| Speaker: 0,25W, 8 ohm | × | 1 |
| Breadboard (standaard) | × | 1 |
| Arduino UNO | × | 1 |
| Jumper wires (standaard) | × | 1 |
| LED (standaard) – 1 rood, 1 blauw, 1 wit (kies gerust eigen kleuren) | × | 3 |
| Weerstanden: 3× 220 Ω (voor de LEDs) | × | 3 |
Benodigde tools
- Solderbout (alleen als je draden aan de speaker moet solderen)
Apps en online services
- Arduino IDE
Over dit project
Na een mislukte poging om een LED-balkgrafafstandsvisualisatie te maken, besloot ik te beginnen met eenvoudigere projecten. Op de Arduino Project Hub vond ik de inspiratie voor deze verjaardags-melodie met synchroniserende LEDs.
Stap 1: Verzamel materialen
Zorg dat alle onderdelen klaarliggen. Als de speaker nog geen draden heeft, solder deze dan vast.
Stap 2: Plaats de LEDs op het breadboard
Zet de drie LEDs dicht bij elkaar op het breadboard. Let op de polariteit: de lange poot (anode) is de plus, de korte poot (kathode) de min.
Stap 3: Sluit de anoden aan op de Arduino
Gebruik jumper wires om de anoden te verbinden met de volgende digitale pinnen:
- Rood: pin 9
- Blauw: pin 10
- Wit: pin 11
Stap 4: Sluit de kathoden aan via weerstanden
Verbind de kathoden van de LEDs met 220 Ω weerstanden. De andere kant van de weerstanden gaat naar de negatieve rails (GND) van het breadboard. Verbind deze rail met de GND-pin van de Arduino.
Stap 5: Sluit de speaker aan
- De negatieve draad van de speaker naar de negatieve rail (GND) op het breadboard.
- De positieve draad naar pin 3 van de Arduino (PWM-pin voor
tone()).
Code
Het project bestaat uit twee bestanden: de hoofdsketch en pitches.h met de nootfrequenties.
Hoofdsketch: Happy Birthday Lights + Sounds
// Rood: pin 9; Blauw: pin 10; Wit: pin 11
#include "pitches.h"
// Melodie: Happy Birthday
int melody[] = {
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4,
NOTE_D4, NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4
};
// Nootduur: 4 = kwartnoot, 8 = achtste noot, etc.
int noteDurations[] = {
8, 8, 4, 4, 4, 2,
8, 8, 4, 4, 4, 2,
8, 8, 4, 4, 4, 4, 4,
8, 8, 4, 4, 4, 2
};
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
for (int thisNote = 0; thisNote < 25; thisNote++) {
// Willekeurige LED-patronen
int randomLight1 = random(9, 12);
int randomLight2 = random(9, 12);
int randomLight3 = random(9, 12);
digitalWrite(randomLight1, HIGH);
digitalWrite(randomLight2, HIGH);
digitalWrite(randomLight3, LOW);
// Bereken nootduur en speel toon
int noteDuration = 1130 / noteDurations[thisNote];
tone(3, melody[thisNote], noteDuration);
// Pauze tussen noten
int pause = noteDuration * 1.275;
delay(pause);
noTone(3);
}
// Na afloop: alle LEDs uit
delay(3000);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
void loop() {
// Herhaling niet nodig
}
pitches.h – Nootfrequenties
Dit bestand bevat de definities voor alle piano-toonhoogtes (C0 tot B8). Voeg het toe als tabblad in de Arduino IDE met de naam pitches.h.
/*************************************************
* Public Constants
*************************************************/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978
Schema
Het Fritzing-schema (happy_birthday_lights__sounds_I16bf0SBDq.fzz) toont de complete bedrading van alle componenten.
Tips en uitbreidingen
- Experimenteer met andere kleuren LEDs of voeg meer LEDs toe (gebruik dan schuifregisters of LED-drivers).
- Vervang de speaker door een buzzer-module voor eenvoudiger aansluiting.
- Pas de melodie aan door de arrays
melody[]ennoteDurations[]te wijzigen. - Voeg een knop toe om het liedje op aanvraag af te spelen in plaats van één keer bij opstarten.
Productieproces
- LED helderheid regelen met PWM via drukknop op Arduino Mega
- DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
- Bouw een GPS-datalogger met ruimtelijke analyse op Azure IoT Hub
- Arduino temperatuur- en vochtigheidslogger met DHT11 en Ethernet Shield
- Realtime afstandsmeting met Arduino Sonar & Processing visualisatie
- DIY Gitaar Speed Pick & Stomp Pedal – Bouw Je Eigen 3D-Gemotoriseerde Plektron
- Uw autodashboard ontcijferd: lampjes, indicatoren en hun betekenis
- Draadverbinding Conventies in Elektrische Schema's: Duidelijke Gids
- Netwerken vs Bussen: een duidelijke gids voor bedrading in digitale systemen
- Vieren van 50 Jaar Precisie: Metal Cutting Corporation Wordt Half Eeuw
- Titaandraad: Typen, eigenschappen en industriële toepassingen