derrabe
18.01.2015, 16:11
Hallo miteinander,
ich bin noch recht neu in der Bascom/Microcontroller Materie und habe gerade folgende Idee auf nem Evaluationsboard versucht zu realisieren:
Ein Schwimmschalter soll den Füllstand eines Gefäßes, dass ständig neu volläuft regeln und dazu ggf eine Tauchpumpe ein und auschalten. Um zu verhindern, dass der Schalter ständig ein und auschaltet will ich mit dem Microcontroller ne ein und auschalteverzögerung realisieren.
Mein Code sah nun so aus: Der Schalter muss 4 Sekunden aktiviert sein, bevor das Programm in die Subroutine Pumpen springt. Dort wird dann der Port für die Pumpe (aktuell noch ne LED auf dem Evaluationsboard) eingeschaltet. In dieser Routine soll der Port abgefragt werden, wenn dieser für 4 Sekunden aus ist soll die Subroutine verlassen werden und das ganze Spie von vorne beginnen.
Jedoch klappt das nicht so wie ichs mir vorstellt, da das Programm zwar in die Routine Pumpen springt, aber die LED dann dauerhaft anbleibt. Woran liegt das?
Im folgenden mein Code:
$regfile "m88def.dat"
$crystal = 8000000
$baud = 19200
Led Alias Portb.6
Config Led = Output
Led = 0
Sw1 Alias Pind.2
Config Sw1 = Input
Portd.2 = 1
Reset Led
Main:
Do
If Sw1 = 0 Then
Waitms 4000
If Sw1 = 0 Then
Gosub Pumpen
End If
End If
Loop
End
Pumpen:
Set Led
If Sw1 = 1 Then
Waitms 4000
If Sw1 = 1 Then
Reset Led
Gosub Main
End If
End If
Return
Über Feedbacks würde ich mich sehr freuen
ich bin noch recht neu in der Bascom/Microcontroller Materie und habe gerade folgende Idee auf nem Evaluationsboard versucht zu realisieren:
Ein Schwimmschalter soll den Füllstand eines Gefäßes, dass ständig neu volläuft regeln und dazu ggf eine Tauchpumpe ein und auschalten. Um zu verhindern, dass der Schalter ständig ein und auschaltet will ich mit dem Microcontroller ne ein und auschalteverzögerung realisieren.
Mein Code sah nun so aus: Der Schalter muss 4 Sekunden aktiviert sein, bevor das Programm in die Subroutine Pumpen springt. Dort wird dann der Port für die Pumpe (aktuell noch ne LED auf dem Evaluationsboard) eingeschaltet. In dieser Routine soll der Port abgefragt werden, wenn dieser für 4 Sekunden aus ist soll die Subroutine verlassen werden und das ganze Spie von vorne beginnen.
Jedoch klappt das nicht so wie ichs mir vorstellt, da das Programm zwar in die Routine Pumpen springt, aber die LED dann dauerhaft anbleibt. Woran liegt das?
Im folgenden mein Code:
$regfile "m88def.dat"
$crystal = 8000000
$baud = 19200
Led Alias Portb.6
Config Led = Output
Led = 0
Sw1 Alias Pind.2
Config Sw1 = Input
Portd.2 = 1
Reset Led
Main:
Do
If Sw1 = 0 Then
Waitms 4000
If Sw1 = 0 Then
Gosub Pumpen
End If
End If
Loop
End
Pumpen:
Set Led
If Sw1 = 1 Then
Waitms 4000
If Sw1 = 1 Then
Reset Led
Gosub Main
End If
End If
Return
Über Feedbacks würde ich mich sehr freuen