Vielleicht kennst du das ja. Da arbeitet man konzentriert an einer Sache und schon ist der Tee bitter, weil er wieder zu lange gezogen hat. Abhilfe schafft da der Tee-Timer mit Arduino. Hier kannst du einfach deine Teetasse drauf stellen, auf den richtigen Knopf drücken und nach einer eingestellten Zeit erinnert dich eine blinkende LED daran, dass der Tee fertig ist.
Drei Button können zur Auswahl von Schwarzem, Grünen, Früchte- und Kräutertee verwendet werden. Die Zieh-Zeiten habe ich übrigens von hier.
Bauteile
- Ein Arduino Starter Kit sollte reichen
- Arduino, Breadboard, Kabel
- Widerstand 220 Ohm (rot-rot-braun oder rot-rot-schwarz-schwarz)
- LED – Farbe deiner Wahl
- 4x Taster
- 2x Taster als Grundfläche für die Teetasse
Schaltplan

Vier Taster sind mit digitalen Pins des Arduinos verbunden. Auf einem davon steht die Teetasse, die anderen sind für die Auswahl der Tee-Zeiten vorgesehen. Eine LED ist in Reihe mit einem Widerstand zwischen einem PWM-Pin (Pin 11) und dem GND geschaltet. Die zwei nicht angeschlossenen Taster dienen als Auflagefläche für die Teetasse. Da kann man natürlich auch was anderes drunter packen. Wichtig ist nur, dass genügend Gewicht der Tasse auf den Button ausgeübt wird.
Funktionsweise des Programmes
Das Programm sieht erstmal komplex aus, basiert aber im Grunde auf einer State-Machine, die aus vier States besteht.
switch (myState) { case 0: // keine Tasse auf dem Untersetzer break; case 1: // Tasse auf Untersetzer, warte auf Eingabe break; case 2: // Ziehzeit läuft break; case 3: // Ziehzeit abgelaufen break; }
State 0 bedeutet, dass keine Tasse auf dem Untersetzer (also auf den Buttons) steht. Hier müssen wir also nur gucken, ob der Button, auf dem die Tasse stehen soll, irgendwann gedrückt wird. Dann wechseln wir in den nächsten State. Die Tasse ist auf dem Untersetzer und wir warten auf Eingabe. Dazu lassen wir noch die LED ungeduldig blinken. Wird einer der drei Buttons für die Teesorte gedrückt, merken wir uns die mit ihm verknüpfte Zieh-Zeit:
myTimeout = time2;
Nun befinden wir uns im Ziehzeit-State und warten einfach, bis die Zeit abgelaufen ist. Wie ein Timer funktioniert, kannst du übrigens hier nachlesen. Zusätzlich faden wir die LED langsam ein und aus.
Ist die Zeit abgelaufen, springen wir in den letzten State, in dem wir einfach die LED blinken lassen. Nimmt man nun die Tasse hoch, springt das Programm wieder an den Anfang. Das ist es auch schon.
Code für den Tee-Timer mit Arduino
const int ledPin1 = 11; const int buttonPin1 = 8; // schwarzer Tee const int buttonPin2 = 6; // grüner Tee const int buttonPin3 = 4; // Kräuter- und Früchtetee const int buttonPinTasse = 12; // hier steht die Tasse drauf const long time1 = 180000; // 3 Minuten für schwarzen Tee const long time2 = 240000; // 4 Minuten für grünen Tee const long time3 = 480000; // 8 Minuten für Kräuter- und Früchtetee int myState = 0; long myTimeout = 0; long myStartTime = 0; void setup() { pinMode(buttonPinTasse, INPUT_PULLUP); pinMode(buttonPin1, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); pinMode(buttonPin3, INPUT_PULLUP); Serial.begin(9600); } void loop() { switch (myState) { case 0: // keine Tasse auf dem Untersetzer analogWrite(ledPin1, 0); if (digitalRead(buttonPinTasse) == 0) myState = 1; break; case 1: // Tasse auf Untersetzer, warte auf Eingabe blinkSlow(); // LED Ausgabe langsames Blinken if (digitalRead(buttonPin1) == 0) { blinkIndikator(1); myState = 2; myTimeout = time1; myStartTime = millis(); } if (digitalRead(buttonPin2) == 0) { blinkIndikator(2); myState = 2; myTimeout = time2; myStartTime = millis(); } if (digitalRead(buttonPin3) == 0) { blinkIndikator(3); myState = 2; myTimeout = time3; myStartTime = millis(); } break; case 2: // Ziehzeit läuft // Reset, wenn alle drei Buttons gleichzeitig gedrückt werden if ((digitalRead(buttonPin1) == 0) && (digitalRead(buttonPin1) == 0) && (digitalRead(buttonPin1) == 0)) { resetIndication(); // LED Ausgabe langes Leuchten myState = 0; } breath(); // LED Ausgabe langsames faden if (millis() - myStartTime > myTimeout) myState = 3; // dann ist der Tee fertig :-) break; case 3: // Ziehzeit abgelaufen blinkFast(); if (digitalRead(buttonPinTasse) == 1) myState = 0; break; } } void blinkFast(){ if (millis() % 200 > 100) analogWrite(ledPin1, 155); else analogWrite(ledPin1, 0); } void resetIndication() { analogWrite(ledPin1, 255); delay(3000); analogWrite(ledPin1, 0); delay(10); } void blinkSlow() { if (millis() % 2000 > 1000) analogWrite(ledPin1, 255); else analogWrite(ledPin1, 0); } void breath() { int myValue = (millis() / 10) % 1020; if (myValue < 512) analogWrite(ledPin1, (myValue/2)); else analogWrite(ledPin1, 255 - ((myValue/2) - 255)); } void blinkIndikator(int wiederholungen) { analogWrite(ledPin1, 0); delay(500); for (int i=0; i<wiederholungen; i++){ analogWrite(ledPin1, 255); delay(80); analogWrite(ledPin1, 0); delay(80); } };
Ich hoffe, das Projekt hat dir gefallen und du hast was gelernt. Lass mir gern einen Kommentar da :-)
User-Gallery
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs
Pingback: Stoppuhr mit Arduino und Segmentanzeige – Arduino+TM1637
Pingback: Arduino millis() – Arduino Tutorial
Hallo Stefan,
wie kann ich ein Bild meines Tee Timers senden, welchen ich modifiziert habe…
Hallo, tja, am Besten per Email an hallo@starthardware.org
Bin gespannt :-)
Liebe Grüße
Stefan
Hallo Stefan,
Ich bin ziemlich neu im Arduino-Game und versuche mich an diesem Projekt. Kann ich den Taster auch einfach ersetzten durch einen „vier-Beinigen-Taster“ (Wie den zur Ablage der Tasse)? Und wäre es einfach möglich einen Servo Motor einzubauen, um den Teebeutel auch aus der Tasse heraus nehmen zu lassen?
Vielen Danke und Liebe Grüße
Hi Pia,
ja klar kannst du einen vierbeinigen Taster verwenden. Der hat zwar vier Beine, aber zwei davon sind jeweils im inneren mit einander verbunden (einfach ausprobieren, welche). Die Servo-Idee ist super! Klar kann man das machen. Muss man ja nur in case 2 und case 3 noch ein Servo-Ziel angeben. Probier es mal aus und schick mir den Code. Dann packe ich den mit auf die Seite :-)
Liebe Grüße
Stefan
Hallo wie kann ich den qellcode c Teekocher in den Arduiner copieren.
und von dieser Seite weg copieren.
Bitte schreiben sie es mir.
Mfg.gattermann
Hallo, einfach den Text markieren und dann per Copy&Paste in einen neuen Arduino-Sketch einfügen. Liebe Grüße
Cool!
Dennoch: Grüner Tee zieht nur etwa die Hälfte der Zeit verglichen mit Schwarztee.
Man lernt doch nie aus :-)
Danke für deine Mühe! Du hast hier sehr spannende Inhalte zusammengetragen!
Vielen Dank Denny :-)
Wie viele Kabel benötigt man um denn Tee Timer nachzubauen
Ich glaube 12, wenn ich mich nicht verzählt habe :-)