Tasterzustand halten und auf LCD anzeigen - Bascom

Gast #1624914
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
Gast #1624948
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.