Lincolnmhkn
29.09.2006, 13:48
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
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