Einen zuverlässigen Arduino-Küchentimer mit LCD-Display bauen
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino UNO | 1 |
| Adafruit 16x2 LCD (Weiß auf Blau) | 1 |
| Taster 12 mm (SparkFun) | 4 |
| Widerstand 10 kΩ | 4 |
| Widerstand 220 Ω | 2 |
| Drehpotentiometer 100 kΩ | 1 |
| Summer (Buzzer) | 1 |
| Steckbrett & Jumper-Kabel | 1 |
Über das Projekt
Ein klassischer Küchentimer – aber selbstgebaut, erweiterbar und lehrreich. Das Gerät arbeitet in vier Modi:
- IDLE: Warte auf Eingabe, zeigt eingestellte Zeit.
- SETUP: Per Langdruck auf Taste S4 betreten. Mit S3 wählen Sie Stunde/Minute/Sekunde, mit S1/S2 Werte ändern.
- RUNNING: Countdown läuft. Start/Stopp mit S3, Abbruch mit S4.
- RINGING: Zeit abgelaufen – Summer ertönt. Jede Taste stoppt den Alarm und kehrt zu IDLE zurück.
Funktionsweise
Alle Tasten werden per digitalRead und Flankenerkennung entprellt. Ein 10-kΩ-Pull-down-Widerstand hält den Eingang LOW, solange die Taste nicht gedrückt wird (dann HIGH). Der Mode-Wechsel erfolgt über einen switch-Block in loop(). Die Zeitberechnung nutzt die TimeLib.h-Bibliothek (now()).
Code-Highlights
- Entprellung und Long-Press-Erkennung für Reset-Taste.
- Zustandsmaschine mit vier klar definierten Modi.
- Automatische Zeitberechnung und Umschaltung in RINGING-Modus.
- LCD-Management pro Modus (Anzeige von Countdown, Setup-Werten, Meldungen).
Code
ArduinoSketch (Küchentimer v1.0)
/**************************************************
* Arduino Küchentimer v1.0 – 27.01.2016
* By Angelo Fiorillo (Rom, IT) – GPL3+
**************************************************/
#include <LiquidCrystal.h>
#include <TimeLib.h> // Fix für 'now' not declared
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int buzzerPin = 10;
const int resetButtonPin = 6;
const int startStopButtonPin = 7;
const int downButtonPin = 8;
const int upButtonPin = 9;
// Variablen für Zeit, Modi, Tastenstatus …
const int MODE_IDLE = 0;
const int MODE_SETUP = 1;
const int MODE_RUNNING = 2;
const int MODE_RINGING = 3;
int currentMode = MODE_IDLE;
void setup() {
lcd.begin(16, 2);
pinMode(resetButtonPin, INPUT);
pinMode(startStopButtonPin, INPUT);
pinMode(upButtonPin, INPUT);
pinMode(downButtonPin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 1. Tasten einlesen & entprellen (für alle 4 Tasten)
// 2. Modus-Verwaltung (switch über currentMode)
// 3. Zeitmanagement (Countdown, Ringing)
// 4. LCD aktualisieren
delay(10);
}
void Reset() {
currentMode = MODE_IDLE;
// Werte zurücksetzen …
}
Der vollständige Sketch ist im Originalartikel verfügbar. Er demonstriert saubere Zustandsmaschinen-Programmierung und den Umgang mit Zeitbibliotheken.
Schaltplan
Die Verdrahtung zeigt Tasten mit Pull-down-Widerständen, LCD im 4-Bit-Modus, Summer an Pin 10. Ein Fritzing-Schema ist im Projekt enthalten.
Herstellungsprozess
- Smart Thirst Alert: DIY Pflanzen-Alarm für optimale Bewässerung
- 20-kHz-Arduino-Oszilloskop mit Nokia 5110 LCD – Einfacher DIY-Bau
- Intelligente Jalousien: Automatische Lichtsteuerung mit Arduino & Solarenergie
- Italienische Word Clock mit Arduino Nano, NeoPixel, LCD & RTC
- Zuverlässigen Arduino-Countdown-Timer mit SparkFun 7-Segment-Display bauen
- Zuverlässiger Sigfox-kWh-Zähler mit Arduino MKR Fox 1200
- Bluetooth-Temperaturmonitor mit Arduino Nano
- Berührungsloses Gesten-Schloss: Sicherer Zugang mit APDS-9960 & Arduino
- Isolierter Analogeingang für Arduino: Spannung/Strom galvanisch trennen
- Präziser Reaktionszeit-Test mit Arduino UNO