Forum: Mikrocontroller und Digitale Elektronik Tasterzustand halten und auf LCD anzeigen - Bascom


von Hans (Gast)


Lesenswert?

Hallo

ich habe mir vor kurzem bei Pollin ein LCD bestellt. Dieses habe ich 
angeschlossen und es zeigt auch das an, was ich will.
Habe jetzt ein kleinen Programm geschrieben, mit dem ich den Zustand des 
Portb.0 abfrage und damit eine LED schalte. Gleichzeitig steht auf dem 
Display in Zeile 2: "LED 1 ist ein" oder eben "LED 1 ist aus"
Auch das Funktioniert wunderbar. Nun möchte ich aber einen Taster 
verwenden und beim drücken soll die LED angehen und anbleiben, bei 
erneutem drücken ausgehen. Ich habe mit dem Toogle befehl zwar kleine 
Erfolge erzielt (ohne LCD), aber die LED macht beim schalten was sie 
will. Mal geht sie an, mal wird sie bei gedrücktem Taster bloß dunkler 
und geht aber nach loslassen nicht aus sondern bleibt an usw...
Den Taster schalte ich gegen Masse und die internen Widerstände sind 
aktiviert, das solte doch eigentlich als Entprellung genügen oder?
Ich habe gelesen, das es einen Befehl names Debounce gibt, der eine 
Subroutine in gang setzt. Mir isr allerdings nicht ganz klar, wie ich 
den Befehl in meinen Programm einsetze. Könntet ihr mal mit 
drüberschauen?

Das ist jetz das Programm was ich aktuell zusammengekriegt habe. Es 
schlatet die LED, aber nur so lange wie ich den Taster gedrückt halte.
Hatte jetzt auch schon diesen Debounce Befehl an verschieden Stellen 
eingesetzt, aber es will nicht so recht klappen :( Wo müsste der Befehl 
hin und was müsste alles drin stehen?

 $regfile = "m8def.dat"
 $crystal = 16000000

 Config Pinb.0 = Input
 Portb.0 = 1
 Config Portb.1 = Output
 Config Lcd = 20 * 2
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
 Config Lcdbus = 4
 Cursor Off

Do
 Locate 1 , 1
 Lcd "Hallo Welt"
 If Pinb.0 = 0 Then
 Locate 2 , 1
 Lcd "LED 1 ist ein"
 Else
 Locate 2 , 1
 Lcd "LED 1 ist aus"
 End If
 If Pinb.0 = 0 Then
 Portb.1 = 0
 Else
 Portb.1 = 1
 End If
Loop
End

von Hans (Gast)


Lesenswert?

Hallo

es klappt nun doch. Habe jetzt die Subroutine Schalten unter den Befehl 
Loop geschrieben und den Befehl Debounce in die Zeile unter Hallo Welt. 
Dann habe ich noch die Ports etwas angepasst. Jetzt gehts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.