-
-
Neuer Benutzer
Öfters hier
Menü hochzählen
Hallo Allesamt!
Habe mal eine Frage zu Menüsteuerungen.
Habe ein Programm geschrieben, mit welchem ich einen Wert für das PWM-Signal über zwei Taster erhöhen bzw. erniedrigen kann. Angezeigt jeweils über ein LCD.
Am PWM-Signal hängt derzeit zu Versuchszwecken über einen Mosfet eine kleine Birne, die sich auf diesem Weg dunkler und heller machen lässt, könnte aber auch ein Motor od. ähnliches sein.
Soweit mal mein Code:
Initlcd
Cls
Do
Debounce Pinb.0 , 0 , Pwmmehr , Sub
Debounce Pinb.1 , 0 , Pwmweniger , Sub
Pwm1a = Zahl
Locate 1 , 1
Lcd " PWM-Sollwert "
Locate 2 , 1
Lcd " PWM ="
Lcd Zahl
Loop
Return
Pwmmehr:
Zahl = Zahl + 1
If Zahl > 1024 Then Zahl = 1024
Return
Pwmweniger:
Zahl = Zahl - 1
If Zahl < 0 Then Zahl = 0
Return
Das funktioniert soweit ohne Probleme. Wenn ich allerdings jetzt den AD-Wandler im 10bit- Modus laufen lasse und ein PWM-Singal von 1000 erreichen möchte tippe ich mir natürlich den Wolf bis ich da endlich hingekommen bin. Ich hätte jetzt am Liebsten eine Variante wie man sie oft bei Geräten finden kann, und zwar dass das längere drücken einer Taste nach ein paar Sekunden den Hochlauf schneller vollzieht.
Also einmal drücken -> einen Wert hochzählen.
Auf der Taste bleiben -> langsam hochzählen.
Nach bspw. 5 Sekunden auf der Taste bleiben -> in 10er Schritten hochzählen.
Wie kann ich sowas realisieren? Der Debounce Befehl macht mir hierbei Schwierigkeiten, bzw. ich weiß nicht wie ich ihn richtig anwenden muß.
Danke für Eure Tipps!
Gruß, Martin
-
Neuer Benutzer
Öfters hier
Hallo Martin,
ein Vorschlag der zum Experimentieren anregen soll.
Dim Tasten_zaehler As Word
Const Ein = 0
Taste_plus Alias PINB.0
Taste_minus ALIAS PINB.1
If Taste_plus = Ein Then
Incr Tasten_zaehler
Select case Tasten_zaehler
case 5 : Gosub Pwmmehr
case 1000: Tasten_zaehler = 900
Gosub Pwmmehr
case else
End select
Else
Tasten_zaehler = 0
End if
Werte kannst du verändern um die Zeiten anzupassen.
Den gleichen Programmteil für Taste minus.
MfG Frank
-
Neuer Benutzer
Öfters hier
Super, vielen Dank!
Ich dachte ich müsste unbedingt mit dem debounce befehl arbeiten, aber mit nem Zähler ist natürlich die einfachste Variante!
Gruß, Martin
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen