Arduino-Beispielcode (UNO R3)
// GoMaker × DFRobot — Geburtstags-LED-Torte
// Hardware: DFRduino UNO R3 (DFR0011), LED-Kit (DFR0021), Buzzer (DFR0032), Taster (DFR0029)
// LEDs an Pins: 3,5,6,9,10 | Buzzer: 8 | Button: 2 (GND, interner Pullup)
#include <Arduino.h>
const uint8_t LEDS[] = {3,5,6,9,10};
const uint8_t N_LEDS = sizeof(LEDS);
const uint8_t PIN_BUTTON = 2;
const uint8_t PIN_BUZZER = 8;
volatile bool startShow = false;
unsigned long lastPress = 0;
const unsigned long debounceMs = 200;
// Frequenzen für "Happy Birthday" (vereinfacht, in Hz)
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define REST 0
// Melodie (Töne + Notenlängen in ms)
int melody[] = {
G4, G4, A4, G4, C5, B4,
G4, G4, A4, G4, D5, C5,
G4, G4, G5, E5, C5, B4, A4,
F5, F5, E5, C5, D5, C5
};
int duration[] = {
400,400,800,800,800,1600,
400,400,800,800,800,1600,
400,400,800,800,800,800,1600,
400,400,800,800,800,1600
};
// Hilfs-Makros für Töne
#define G4 NOTE_G4
#define A4 NOTE_A4
#define B4 NOTE_B4
#define C5 NOTE_C5
#define D5 587
#define E5 659
#define F5 698
#define G5 784
void IRAM_ATTR onPress(){
unsigned long now = millis();
if (now - lastPress > debounceMs) {
startShow = true;
lastPress = now;
}
}
void setup(){
for(uint8_t i=0;i=0;b-=8){
for(uint8_t i=0;i
Nutzung: Taste kurz drücken → die Melodie startet, LEDs flackern wie Kerzen und „erlöschen“ am Ende. Für leisere Umgebungen Buzzer einfach abstecken – die Lichtershow bleibt erhalten.