Arduino-Küchentimer
Komponenten und Verbrauchsmaterialien
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 4 | |||
![]() |
| × | 4 | |||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Über dieses Projekt
Am Anfang schuf Gott Himmel und Erde. Und Menschen. Und Menschen haben digitale Küchentimer wie diesen geschaffen.

Und die Menschen sagten:Cool, aber ein bisschen trostlos. Machen wir einen besseren!
Und Gott sagte, ich habe deinen Ruf gehört, es soll Arduinos geben:und es gab überall auf der Erde Arduinos, und das war gut.
Und die Menschen haben einen Arduino genommen und einen besseren Küchentimer entwickelt, wie diesen.

Und Gott sah den neuen Küchenwecker und sagte:Ich habe deinen neuen Küchenwecker gesehen und er sieht schrecklich aus , aber es scheint zu viel Spaß zu sein ! Und das ist gut . :-)
Was Sie haben müssen
Jetzt, da Sie wissen, woher das alles kommt, gehen wir tiefer darauf ein.
Alle von mir verwendeten Komponenten stammen aus dem Arduino Starter Kit , einschließlich des kleinen Steckbretts, das Sie auf den Bildern und im Video sehen. Fühlen Sie sich frei, das Projekt in ein größeres unterzubringen , wenn Sie möchten.
Du brauchst auch eine Stromquelle:Beim Herumspielen reichen der USB-Anschluss und das Kabel des PCs.
Was Sie tun müssen
Erstens:Bitte nehmen Sie alle benötigten Komponenten aus dem Starter Kit oder Ihrem bevorzugten Komponentenbehälter zusammen; Wenn Sie keine haben, geraten Sie nicht in Panik. Es gibt viel im Internet. Die Komponentenliste finden Sie unten.
Und, na ja, Sie brauchen auch den Code. Es ist wieder unten in seiner Kiste.
So funktioniert's
Grundsätzlich können Sie wie jedes andere ähnliche Gerät in jedem Geschäft in Ihrer Nähe für wenig Geld kaufen. Aber dieses ist Ihre . Und das wird Ihnen zeigen, wie diese kleinen Geräte funktionieren tatsächlich.
Das Schlüsselwort hier ist:aktueller Modus . Der Timer selbst kann nur in einem von vier Modi gleichzeitig laufen:
- IDLE - der Timer wartet auf Ihre Eingabe und zeigt die aktuell eingestellte Zeit an; Dies ist auch der anfängliche Modus nach dem Einschalten oder Zurücksetzen.
- SETUP - Sie können diesen Modus durch langes Drücken von S4 aufrufen (im Code wird dies auch "Reset-Taste" genannt); hier können Sie mit S3 ("Start-Stopp-Taste") auswählen, welcher Wert geändert werden soll, um die verstrichene Zeit später herunterzuzählen; schließlich können Sie mit S2 ("Abwärts-Taste") bzw. S1 ("Aufwärts-Taste") den gewählten Wert (Stunden, Minuten oder Sekunden) verringern oder erhöhen.
- RUNNING - Sie können diesen Modus durch Drücken von S3 aufrufen, während Sie beim Verlassen sowohl S3 als auch S4 benötigen (was Sie in den IDLE-Modus führt).
- KLINGELN - Wenn die gewünschte Zeit verstrichen ist, wird dieser Modus automatisch aktiviert; Sie können es verlassen (d. h. den kleinen Jungen aufhören zu klingeln), indem Sie einen beliebigen Schalter drücken.
Der Code
Zuerst müssen wir einschließen die richtigen Bibliotheken:
#include
#include
Wenn Sie sie noch nicht haben, müssen Sie sie herunterladen und installieren:
- Paulus Stoffregens Zeit Bibliothek (bitte die ZIP-Datei herunterladen über die grüne Schaltfläche "Klonen oder Herunterladen")
- Arduino LiquidCrystal-Bibliothek
Lassen Sie uns als Nächstes initialisieren das schöne LCD-Modul:
LiquidCrystal LCD(12, 11, 5, 4, 3, 2);
Bitte zögern Sie nicht, die Pins nach Belieben zu verwürfeln, um ein schönes Verdrahtungslayout zu erhalten:Folgen Sie mir nicht, denn ich habe einen schrecklichen Verdrahtungsplan gemacht! :D Zum Beispiel können Sie die letzten vier Pins in der obigen Anweisung umkehren, um zu vermeiden, dass sich die gelben Drähte kreuzen, die Sie im folgenden Schema sehen können (natürlich müssen Sie die Pin-Konstanten der Taste entsprechend anpassen, siehe unten). Spielen, Spaß haben! Das Leben mit Arduinos beginnt direkt nach diesem Kopieren/Einfügen!
Die nächsten 51 Codezeilen enthalten die Deklaration und Initialisierung der statischen Variablen. Sie können sie gerne durchsuchen, ihre kristallklaren Namen und einige verstreute Kommentare werden Ihnen helfen, das Ganze zu verstehen.
Die setup ()-Funktion führt die üblichen vorbereitenden Schritte aus, die Sie in jeder Arduino-Skizze da draußen und bisher unzählige Male gesehen haben. Die einzige bemerkenswerte Anweisung ist die erste, die die Position des anfänglichen LCD-Anzeigecursors festlegt. Denn, ja:Dieses Modul erfordert, dass Sie eine Position entlang seiner Zeilen und Spalten einrichten und dann etwas "drucken", das ab dieser Position erscheint.
Kommen wir nun zur Funktion loop().
Lassen Sie uns zunächst die Schalterzustände entdecken. Um dies zu erreichen, wird der folgende Codeblock für fast . verwendet jeder von ihnen:
/*
* Schaltflächenverwaltung starten/stoppen
*/
startStopButtonPressed =false;
startStopButtonState =digitalRead(startStopButtonPin);
if(startStopButtonState !=startStopButtonPrevState)
{
startStopButtonPressed =startStopButtonState ==HIGH;
startStopButtonPrevState =startStopButtonState;
}
Ein digitalRead wird gegen den zugehörigen Pin ausgegeben und das Ergebnis mit einem zuvor gelesenen Wert verglichen:Wenn sich etwas geändert hat, wird der neue Wert für zukünftige Referenzen gespeichert und die bool statische Variable "xxxButtonPressed" wird auf true gesetzt, wenn die Schaltfläche gedrückt wird.
Wenn Sie sich den Schaltplan unten ansehen, werden Sie feststellen, dass jeder Eingangspin durch einen 10k-Widerstand auf LOW gezwungen wird, es sei denn, der entsprechende Schalter wird gedrückt und der Pin selbst ist direkt mit +5V verbunden. Ein ziemlich klassisches Szenario, äh?
Zuvor sagte ich "fast jeder von ihnen", weil es eine Taste gibt, die anders funktioniert als die anderen:S4. Sein Codeblock ist in der Lage, das oben erwähnte lange Drücken zu erkennen, um in den SETUP-Modus zu gelangen.
Als nächstes kommt der Modusverwaltungsblockwechsel:Jeder Fall betrachtet die Schaltflächenstatus-Trigger ("xxxButtonPressed") und leitet den Fluss in den richtigen neuen Status um oder führt die richtige Aktion aus.
case MODE_IDLE:
if(resetButtonPressed)
{
Reset();
}
if(resetButtonLongPressed)
{
currentMode =MODE_SETUP;
}
if(startStopButtonPressed)
{
currentMode =currentMode ==MODE_IDLE ? MODE_RUNNING :MODE_IDLE;
if(currentMode ==MODE_RUNNING)
{
// STARTING TIMER!
startTime =now();
}
}
Pause;
Der vorherige Codeausschnitt zeigt, wie der IDLE-Modus verwaltet wird, und ist ziemlich selbsterklärend. Ein weiteres Beispiel zeigt, wie jeder Tastendruck während des Klingelns das Klingeln stoppt:
case MODE_RINGING:
if(resetButtonPressed || startStopButtonPressed || downButtonPressed || upButtonPressed)
{
currentMode =MODE_IDLE;
}
break;
Sieht einfach aus, nicht wahr? :-) Ist es.
Der nächste Block - "Zeitmanagement" - führt die eigentliche Zeitdifferenzberechnung durch, löst den RINGING-Modus aus und klingelt das Summen, wenn es Zeit dafür ist.
Der letzte Block - "LCD-Verwaltung" - verwaltet die LCD-Anzeige für jeden Modus, indem er die richtigen Zeichenfolgen an ihren richtigen Stellen ausdruckt.
Das war's.
Einpacken und los geht's!
Jetzt, da dieser kleine Welpe keine Geheimnisse mehr für Sie hat, lassen Sie uns ihn in Aktion sehen. Danke fürs Zuschauen und viel Spaß!
Code
- ArduinoSketch
ArduinoSketchArduino
Schaltpläne
Sie können jedes Universal-Steckbrett verwenden, einschließlich des Starter-Kits, das kleiner ist als das hier abgebildete (der Summer kann unter den gelben Drähten platziert werden, siehe Video und Fotos).

Herstellungsprozess