Stilvolle Wanduhr mit Adafruit 60-LED Neopixel-Ring & Arduino
Komponenten und Materialien
- 4 × Adafruit Neopixel 1/4 60-Ring (je 60 LEDs, insgesamt 240 LEDs)
- 1 × eDOTcore Board (Arduino-kompatibel mit integriertem RTC)
- 1 × Arduino UNO (Alternative)
- 1 × Arduino Nano R3 (Alternative)
- 1 × Arduino Micro (Alternative)
Software
- Arduino IDE
- Bibliotheken:
RTClib,Adafruit_NeoPixel,Wire
Projektbeschreibung
Eine elegante Wanduhr aus vier 60-LED-Neopixel-Ringen (¼-Kreise), die zu einem vollen Kreis zusammengesetzt werden. Die Uhrzeit wird über ein Echtzeituhr-Modul (RTC DS1307 auf dem eDOTcore-Board) gehalten. Stunden-, Minuten- und Sekundenzeiger werden als farbige LED-Bögen dargestellt:
- Stunden: Cyan-Bogen (3 LEDs breit, Mitte heller)
- Minuten: Magenta-Bogen (3 LEDs breit)
- Sekunden: Gelb-Bogen (3 LEDs breit)
Die Helligkeit ist auf 20/255 gedimmt für angenehmes Umgebungslicht. 3D-Druck-Teile für das Gehäuse sind auf Thingiverse verfügbar.
Code
#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define PIXEL 60 // pro Ring, 4 Ringe = 240 LEDs gesamt
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL * 4, PIN, NEO_GRB + NEO_KHZ800);
RTC_DS1307 RTC;
DateTime Clock;
byte hourval, minuteval, secondval;
void setup() {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (!RTC.isrunning()) {
// RTC.adjust(DateTime(__DATE__, __TIME__)); // Einmalig zum Stellen aktivieren
}
strip.begin();
strip.show(); // alle aus
strip.setBrightness(20);
}
void loop() {
Clock = RTC.now();
secondval = Clock.second();
minuteval = Clock.minute();
hourval = Clock.hour();
if (hourval > 11) hourval -= 12; // 12h-Format
// Stunde: 5 Min pro LED → (Stunde*60 + Minute)/12
hourval = (hourval * 60 + minuteval) / 12;
// Stunden-Zeiger (Cyan) mit weichem Rand
strip.setPixelColor(hourval, 0x008080);
strip.setPixelColor((hourval - 1 + 240) % 240, 0x004040);
strip.setPixelColor((hourval + 1) % 240, 0x004040);
strip.setPixelColor((hourval + 2) % 240, 0x001010);
strip.setPixelColor((hourval - 2 + 240) % 240, 0x001010);
// Minuten-Zeiger (Magenta)
strip.setPixelColor(minuteval * 4, 0x800080); // 60 Min → 240 LEDs
strip.setPixelColor((minuteval * 4 + 1) % 240, 0x200020);
strip.setPixelColor((minuteval * 4 - 1 + 240) % 240, 0x200020);
// Sekunden-Zeiger (Gelb)
strip.setPixelColor(secondval * 4, 0x808000);
strip.setPixelColor((secondval * 4 + 1) % 240, 0x002F00);
strip.setPixelColor((secondval * 4 - 1 + 240) % 240, 0x002F00);
strip.show();
delay(25);
// LEDs wieder löschen für nächsten Frame
strip.setPixelColor(hourval, 0);
strip.setPixelColor((hourval - 1 + 240) % 240, 0);
strip.setPixelColor((hourval + 1) % 240, 0);
strip.setPixelColor((hourval + 2) % 240, 0);
strip.setPixelColor((hourval - 2 + 240) % 240, 0);
strip.setPixelColor(minuteval * 4, 0);
strip.setPixelColor((minuteval * 4 + 1) % 240, 0);
strip.setPixelColor((minuteval * 4 - 1 + 240) % 240, 0);
strip.setPixelColor(secondval * 4, 0);
strip.setPixelColor((secondval * 4 + 1) % 240, 0);
strip.setPixelColor((secondval * 4 - 1 + 240) % 240, 0);
}
3D-Druck Gehäuse
Passende Teile für die vier Viertelringe und die Wandhalterung:
Thingiverse: Neopixel Ring Wall Clock
Hinweis zum eDOTcore Board
Das eDOTcore-Board ist ein Arduino-kompatibles Board mit onboard DS1307 RTC und Batteriehalter. Es vereinfacht den Aufbau, da kein separates RTC-Modul nötig ist. Das Projekt funktioniert aber mit jedem Arduino + externem DS1307/DS3231 Modul.
Herstellungsprozess
- Arduino POV-Uhr: Persistence-of-Vision LED-Display selbst bauen
- Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
- DIY Arduino Word Clock – Elegante Wortuhr mit RTC & Schieberegistern
- Interaktives Gyroskop-LED-Display mit NeoPixel-Ring & Arduino
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
- Arduino UNO WiFi Webserver: LED per Browser steuern
- Pixie: DIY NeoPixel-Armbanduhr mit Arduino Pro Mini – Schick & Selbstgebaut
- Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen