Händetrockner

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail
 

Aufgabe

Der Händetrockner soll so programmiert werden, daß, sobald die Lichtschranke unterbrochen wird, der Lüfter ein- und nach 5 Sekunden wieder ausgeschaltet wird. So der Text aus "Computing Starter". Dazu wird an M1 der Ventilator (Propeller) und an M2 eine Linsenlampe angeschlossen. An E1 ist der Phototransistor angeschlossen (auf Polung achten). Phototransistor und Lampe bilden eine Lichtschranke

Anwendungskonstanten

Const mVentilator = 1, mLampe = 2
Const ePhototransistor = 1

Beschriftung der Textfelder

.lblTitel = "Händetrockner 1"
.lblEText(1).Caption = "Lichtschranke"
.lblMText(1).Caption = "Ventilator"
.lblMText(2).Caption = "Lichtschranke"

fishMain

ftiSetMotor mLampe, ftiEin             ' --- Lichtschranke ein
ftiWaitForTime 1000                    '     Warten
Do                                     ' --- Schleife bis HALT
  If Not ftiGetInput(ePhototransistor) Then '   unterbrochen
    ftiSetMotor mVentilator, ftiEin    ' ---  Ventilator ein
    ftiWaitForTime 5000 ' trocknen
    ftiSetMotor mVentilator, ftiAus    '      Ventilator aus
  End If
Loop Until ftiFinish(0)                ' --- Abbruchwunsch

Was passiert da? 
Die Lampe der Lichtschranke wird eingeschaltet, dem Phototransistor wird 1 Sekunde (1000 Millisekunden) Zeit zum sicheren Erkennen der Lampe gelassen, dann startet die Do ... Loop Schleife. Dort wird die Lichtschranke (Phototransistor) abgefragt, ob sie unterbrochen wurde. In diesem Fall wird der Ventilator für 5 Sekunden eingeschaltet und dann wieder abgeschaltet. Die Do ... Loop Schleife wiederholt sich bis sie (ftiFinish(0)) einen Abbruchwunsch erkennt. Das ist hier der HALT-Button auf der Form, dann wird das Programm beendet.

Erweiterungen

Anzeige des Betriebszustandes in der Statuszeile : 

printStatus "trocknet"
printStatus "bereit"

printStatus gibt einen Text in die Statuszeile aus. Der Text "trocknet" sollte nach Einschalten des Ventilators erscheinen, der Text bereit, wenn die Lichtschranke steht, aber der Ventilator nicht läuft.

Variable Zeiten.

In die Felder "Steuerwerte" können beliebige numerische Werte eingegeben werden. Den oberen nennen wir Anlaufzeit und den unteren Trockenzeit. Dazu muß die Beschriftung der Textfelder erweitert werden :

Const wAnlaufzeit = 1, wTrockenzeit = 2  ' --- bei den Const
.lblWert(1).Caption = "Anlaufzeit"
.txtWert(1).Text = 1000
.lblWert(2).Caption = "Trockenzeit"
.txtWert(2).Text = 5000

und in der Source von fishMain werden dann die entsprechende Zeilen geändert :

ftiWaitForTime Werte(wAnlaufzeit)    ' Warten
ftiWaitForTime Werte(wTrockenzeit)   ' trocknen

Aufgabe 2

Modell wie bisher. Der Lüfter soll jetzt aber nicht mehr konstant 5 Sekunden laufen, sondern, wenn die Lichtschranke nicht mehr unterbrochen ist (die Hände sind raus) den Betrieb einstellen.

modifiziertes fishMain

ftiSetMotor mLampe, ftiEin        ' --- Lichtschranke ein
ftiWaitForTime Werte(wAnlaufzeit) ' Warten
Do                                ' --- Schleife bis HALT
  If Not ftiGetInput(ePhototransistor) Then ' --- unterbrochen
    ftiSetMotor mVentilator, ftiEin ' Ventilator ein
  Else
    ftiSetMotor mVentilator, ftiAus ' Ventilator aus
  End If
Loop Until ftiFinish(0)             ' --- Abbruchwunsch

Auf den ersten Blick siehts recht ähnlich aus. In der Do ... Loop Schleife ist jetzt ein komplexeres If (mit Else) angesiedelt : wenn die Lichtschranke unterbrochen ist (Not ftiGetInput(ePhototransistor)) wird der Ventilator eingeschaltet, wenn nicht wird er abgeschaltet (bei jedem Durchlauf der Schleife, wäre eigentlich nicht nötig, ist aber einfacher, was könnte man da tun?).

Man sollte wieder die printStatus einfügen und bei den Konstanten die nicht mehr benötigten für Trockenzeit entfernen.