Ho Ho Ho - Arduino Weihnachtsprojekte 2025
| Autor: | Prof. Dr.-Ing. Schneider |
| Termin: | vierzehntägig dienstags, 13:30 Uhr bis 15:30 Uhr, Gymnasium Antonianum, Geseke |
1) „Jingle Bells“ Melodie mit Piezo-Summer

Der Arduino spielt eine kleine Weihnachtsmelodie über einen Piezo-Summer.
| Musterlösung |
#include "pitches.h"
int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5 };
int durations[] = { 8, 8, 4, 8, 8, 4 };
void setup() {
}
void loop() {
for (int i = 0; i < 6; i++) {
tone(8, melody[i]);
delay(300 * durations[i]);
noTone(8);
}
delay(1000);
}
|
2) „Kerzenflackerlicht“ mit einer einzigen LED
Eine einzelne warmweiße LED simuliert das Flackern einer Kerze.
| Musterlösung |
int led = 9;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
int brightness = random(150, 255);
analogWrite(led, brightness);
delay(random(30, 150));
}
|
3) Temperaturabhängige Lichtfarbe
Mit einem Temperatursensor (z. B. DHT11 oder BME280) kannst du LED-Streifen je nach Raumtemperatur unterschiedlich leuchten lassen – von eisblau bei Kälte bis warmweiß bei gemütlichen Temperaturen.
Der Sensor liest kontinuierlich die Raumtemperatur aus. Basierend auf dem Wert wechselt die LED-Farbe: Unter 18°C leuchtet alles in kühlem Blau, zwischen 18-22°C in neutralem Weiß und über 22°C in warmem Orange. So verbindest du Funktionalität mit Atmosphäre.
RGB-LED Weihnachts-Stimmungslicht
Sanfte Farbwechsel wie ein LED-Teelicht.
| Musterlösung |
int r = 9, g = 10, b = 11;
void setup() {
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}
void loop() {
analogWrite(r, random(50,255));
analogWrite(g, random(0,80));
analogWrite(b, random(0,40));
delay(100);
}
|
4) „Laser-Schneefall“ mit LCD 16×2
Schneeflocken fallen zufällig im Display herunter.
| Musterlösung |
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char snow[16] = " ";
void setup() {
lcd.begin(16,2);
}
void loop() {
// neue Schneeflocke
snow[random(0,16)] = '*';
lcd.setCursor(0,0);
lcd.print(snow);
// "fallen lassen"
for (int i=0;i<16;i++) if (snow[i] == '*') snow[i] = ' ';
delay(200);
}
|
5) Mini-Weihnachtsstern mit 8 LEDs
Du baust einen kleinen LED-Stern, bei dem die acht LED-Spitzen in verschiedenen Mustern leuchten: Lauflicht, Pulsieren, Sternenblinken usw.
Verdrahtung:
- Kathode (−) jeder LED → gemeinsame GND-Leiste
- Anode (+) → über einen 220 Ω Widerstand → zum jeweiligen Arduino-Pin
| Musterlösung |
int leds[] = {2,3,4,5,6,7,8,9};
int count = 8;
void setup() {
for (int i = 0; i < count; i++)
pinMode(leds[i], OUTPUT);
}
void loop() {
// Lauflicht vorwärts
for (int i = 0; i < count; i++) {
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
}
// Lauflicht rückwärts
for (int i = count - 1; i >= 0; i--) {
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
}
}
|
Erweiterter Code: Stern-Blinkmuster & Animationen
Erseugt mehrere Weihnachts-Effekte, die automatisch nacheinander ablaufen:
- ⭐ Rundlauf
- ✨ Gegenlauf
- 🎇 Explosionseffekt
- 🌟 Pulsieren
- ❄ Sternfunkeln (random)
| Musterlösung |
int leds[] = {2,3,4,5,6,7,8,9};
int count = 8;
void setup() {
for (int i = 0; i < count; i++)
pinMode(leds[i], OUTPUT);
}
void loop() {
runForward();
runBackward();
explode();
sparkle();
pulseAll();
}
// ====== Effekte ======
void runForward() {
for (int i = 0; i < count; i++) {
digitalWrite(leds[i], HIGH);
delay(80);
digitalWrite(leds[i], LOW);
}
}
void runBackward() {
for (int i = count - 1; i >= 0; i--) {
digitalWrite(leds[i], HIGH);
delay(80);
digitalWrite(leds[i], LOW);
}
}
void explode() {
for (int i = 0; i < count / 2; i++) {
digitalWrite(leds[i], HIGH);
digitalWrite(leds[count - 1 - i], HIGH);
delay(120);
digitalWrite(leds[i], LOW);
digitalWrite(leds[count - 1 - i], LOW);
}
}
void sparkle() {
for (int i = 0; i < 30; i++) {
int r = random(0, count);
digitalWrite(leds[r], HIGH);
delay(40);
digitalWrite(leds[r], LOW);
}
}
void pulseAll() {
// alles ON
for (int i = 0; i < count; i++)
digitalWrite(leds[i], HIGH);
delay(600);
// alles OFF
for (int i = 0; i < count; i++)
digitalWrite(leds[i], LOW);
delay(600);
}
|
Aufbauhinweis: Sternform
- Auf Pappe, Holz, 3D-gedruckte Form oder Styropor
- LEDs von hinten durchstecken → sieht top aus!
LED1
LED8 LED2
LED7 LED3
LED6 LED4
LED5
Optionale Erweiterungen
Nutzt einen Knopf zur Effektwahl.
→ zurück zum Hauptartikel: Mechatronik mit Arduino