Präzise Arduino UNO Digitaluhr: Einfach, genau & ohne Bauteile-Overhead
Benötigte Bauteile
| Komponente | Anzahl |
|---|---|
| Arduino UNO | 1 |
| LCD 16×2 (weiß auf blau, z. B. Adafruit Standard) | 1 |
| Taster 12 mm (z. B. SparkFun) | 2 |
| Steckbrett (Halbgröße) | 1 |
| Steckdrähte (Jumper Wires) | 1 Set |
Projektbeschreibung
Diese Digitaluhr basiert auf einem Arduino UNO und einem 16×2-LCD – ganz ohne Echtzeituhr-Modul (RTC), ohne Potentiometer für Kontrast/Hintergrundbeleuchtung und ohne externe Pull-Up-Widerstände an den Tastern. Die Idee entstand aus Unzufriedenheit mit einem bestehenden Tutorial (Simple Arduino Digital Clock without RTC), das Timing-Probleme und unnötige Bauteile aufwies.
Wesentliche Verbesserungen
- Exaktes Timing: Die Sekundenzählung erfolgt per
millis()-Vergleich, nicht durch Loop-Dauer – dadurch driftet die Uhr nicht. - Interne Pull-Ups: Die Taster für Stunden/Minuten-Einstellung nutzen
INPUT_PULLUPdes ATmega328P – externe Widerstände entfallen. - Kontrast & Hintergrundbeleuchtung per PWM: Ein PWM-Ausgang (z. B. Pin 9) steuert den Kontrast-Eingang (Vo) des LCD; ein weiterer PWM-Pin (z. B. Pin 10) versorgt die Hintergrundbeleuchtung (Anode über Vorwiderstand). So lassen sich Kontrast und Helligkeit per Software einstellen – kein Potentiometer nötig.
- Minimalistischer Aufbau: Nur UNO, LCD, zwei Taster, Steckbrett, Drähte.
Schaltung
LCD-Anschluss (4-Bit-Modus)
LCD RS → Arduino Pin 12 LCD EN → Arduino Pin 11 LCD D4 → Arduino Pin 5 LCD D5 → Arduino Pin 4 LCD D6 → Arduino Pin 3 LCD D7 → Arduino Pin 2 LCD VSS → GND LCD VDD → 5 V LCD Vo → Arduino Pin 9 (PWM für Kontrast) LCD A → Arduino Pin 10 (PWM für Backlight, über 220 Ω) LCD K → GND
Taster
Taster „Stunde“ → Arduino Pin 6 (INPUT_PULLUP) Taster „Minute“ → Arduino Pin 7 (INPUT_PULLUP)
Software-Highlights
- Keine zusätzlichen Bibliotheken nötig (nur
LiquidCrystal.haus der Arduino-IDE). - Im
loop()wird permillis()geprüft, ob 1000 ms vergangen sind – dann wird die interne Zeitvariable inkrementiert. - Tasterabfrage mit Entprellung (einfaches
delay(50)nach Erkennung). - Einstellmodus: Drückt man einen Taster, wechselt die Anzeige in den Editiermodus für Stunde/Minute.
Genauigkeit & Grenzen
Der Arduino-Resonator hat eine Toleranz von ca. ±0,5 % – das entspricht bis zu ~43 Sekunden Abweichung pro Tag. Für eine Hobby-Uhr akzeptabel; für präzise Anwendungen ist ein RTC-Modul (DS3231) empfehlenswert. Dieser Aufbau demonstriert jedoch, wie man mit minimalen Mitteln eine funktionsfähige Uhr realisiert.
Fazit
Eine lehrreiche, minimalistische Digitaluhr, die zeigt, wie man Timing ohne delay(), interne Pull-Ups und PWM für LCD-Steuerung nutzt. Ideal für Einsteiger, um Arduino-Grundlagen (Timing, I/O, LCD) zu verstehen.
Herstellungsprozess
- Kuckucksuhr: Geschichte, Handwerkskunst und moderne Evolution
- Die Sanduhr: Geschichte, Handwerkskunst und moderne Anziehungskraft
- Die Evolution der Zeitmessung: Von Sonnenuhren zu präzisen Quarzuhren
- Retro-Numitron-Uhr mit Arduino bauen: Einfach, zuverlässig & energieeffizient
- Digitales Procurement: Bewährter Pfad zum Post-Pandemie-Erfolg
- Arduino Echtzeituhr für islamische Gebetszeiten bauen
- Präzisions-Wortuhr: Minuten-genaue Zeitanzeige in Worten
- Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen
- Sieben Schlüsseltreiber für die Beschleunigung der digitalen Transformation
- Luftfahrt-Exzellenz: Zeitnahe, präzise Einblicke für Wettbewerbsvorteile