PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Menü hochzählen



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

lumilux
29.09.2006, 17:18
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

Lincolnmhkn
30.09.2006, 19:44
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