Unsere nützlichste "Erfindung" bislang. Endlich perfekt gezogener Tee. Das gab es bei uns vorher nicht, weil keiner die Teeuhr hört. Hier im Haushalt kann sich schon Sekunden nach dem nervtötenden Klang keiner daran erinnern, ob es nun geklingelt hat oder nicht.

Der Teeautomat hilft und zieht den Teebeutel im richtigen Moment.Auf Wunsch wird auch schon mal den Kandis eingeworfen.

Der Ablauf:

  1. Teebeutel einhängen
  2. Berührungssensor drücken. Es ertönt die Frage "Mit Zucker?"
  3. Wer Zucker will drückt noch einmal innerhalb von 5 Sekunden.
  4. Teeuhr einstellen und unter dem Schallsensor platzieren. Kindern das Toben verbieten! Niederfrequente laute Trampeltöne lösen unweigerlich den Sensor aus.
  5. Wenn die Uhr klingelt (oder ein Kind tobt) zieht der Automat den Beutel.
  6. Falls gewünscht wird der Zucker aus der Zuckerschale gekippt.
  7. Der Automat ruft: "Der Tee ist fertig!"

Was noch fehlt? Der zweite Roboter der die Arbeitsfläche wischt, nachdem der Kandis aus großer Höhe in den Tee gefallen ist.

NXC Quelltext:

 
    
#define BEUTEL_HEBER OUT_A
#define BEUTEL_HEB_DREHUNGEN 1800
#define KANDIS_KIPPE OUT_B
#define KANDIS_KIP_DREHUNGEN 160
#define KLINGEL_LAUSCHER IN_2
#define KLINGEL_GRENZWERT 90
#define BEDIENKNOPF IN_1
#define BEDIENKNOPF_WERT SENSOR_1

sub hebeBeutel()
{
    RotateMotor(BEUTEL_HEBER,40,BEUTEL_HEB_DREHUNGEN);
}
sub kippeKandis()
{
    RotateMotor(KANDIS_KIPPE,20,KANDIS_KIP_DREHUNGEN);
    Wait(1000);
    RotateMotor(KANDIS_KIPPE,20,-KANDIS_KIP_DREHUNGEN);
}
sub mitZucker()
{
     PlayFile("mitzucker.rso");
     Wait(3500);
}
sub endeMitZucker()
{
    PlayTone(400,400);
    Wait(400);
}
sub teeIstFertig()
{
     PlayFile("teeistfertig.rso");
     Wait(3000);
}
task main ()
{
     SetSensorSound(KLINGEL_LAUSCHER);
     SetSensor(BEDIENKNOPF,SENSOR_TOUCH);
     until(BEDIENKNOPF_WERT==1);
     mitZucker();
     bool mitZucker=false;
     int i=0;
     do
     {
       Wait(100);
       i++;
       int bedien= SENSOR_1;
       if (bedien==1)
       {
          mitZucker=true;
       }
       
     } while (i<50 && ! mitZucker);
     endeMitZucker();
     until(SENSOR_2 > KLINGEL_GRENZWERT);
     Wait(2000);
     hebeBeutel();
     if (mitZucker)
     {
        kippeKandis();
     }
     teeIstFertig();
}