Warum nicht,
muss ja nicht so schnell sein. So wie man eine Uhr stellt.
Werbung
Aaaaalso....
Ich habe vor, eine Menüführung zu Programmieren, bei der ich zwischen den einzelnen Bereichen mit zwei Tasten hin und her springen kann... bzw vor und zurück blättern...
Soweit klappt das ja, nur möchte ich jetzt verhindern, daß wenn ich den Finger einfach auf der Taste lasse, der durch das ganze Menü durchfliegt....
Code hier:
Jemand ne Idee ??Code:define keyin ad[8] define menubyte as byte define Licht port[16] #start menubyte = 0 Licht = off lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Startmenue" lcd.off #byterechnung if keyin = 34 then menubyte = menubyte + 1 end if if keyin > 35 then menubyte = menubyte - 1 end if #ende if menubyte = 1 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 1" lcd.off end if if menubyte = 2 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 2" lcd.off end if if menubyte = 3 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 3" lcd.off end if goto byterechnung
Warum nicht,
muss ja nicht so schnell sein. So wie man eine Uhr stellt.
Ganz einfach: die Aktion sollte nicht ausgeführt werden, wenn der Taster gedrückt wird, sondern erst, nachdem er wieder losgelassen wurde. Dazu gibt es im Wiki einen Artikel über "Tasten entprellen", sogar mit Programmbeispiel.
Sieh da mal nach.
Gruß
Irgendwie bin ich zu blöd zum suchen...
Gib mal bitte nen Tip
Du könntest das einfach mit einem do loop machen
Code:if keyin = 34 then Do Loop Until keyin<>34 'Loop solange Taste gedrückt menubyte = menubyte + 1 end if
Ei ei!
ZB hier:
https://www.roboternetz.de/wissen/in...r-Abfrage_in_C
Hmm... C-Control heisst aber nicht Programmiersprache C sondern Conrad....Zitat von Gock
Und der Teil hier
sieht eher nach C aus, statt nach CCbasic oder Basic++Code:#include "taster.h" volatile signed char taster = NO_TASTER; taste_t tasten[NUM_TASTER]; void get_taster (const unsigned char num, unsigned char tast)
@Dierk
Super Idee !! Hat bestens geklappt.
Hab den Teil jetzt so geändert:
Und hab ganz unten noch das hier eingefügt:Code:#byterechnung if keyin = 50 then Do Loop Until keyin<>50 'Loop solange Taste 2 gedrückt menubyte = menubyte + 1 end if if keyin = 34 then Do Loop Until keyin<>34 'Loop solange Taste 1 gedrückt menubyte = menubyte - 1 end if
damit er, wenn er bis 4 hochgezählt hat, wieder in Menübildschirm 1 springt...Code:if menubyte = 4 then menubyte = 1 end if
Nur wenn ich dann von Menü 1 runterzähle, komme ich eigentlich bei menubyte = 0 an... macht er aber nicht... sondern bleibt bei 1 (Menue 1) stehen...
Wenn ich noch ne Schleife
einbaue, springt er natürlich von Start an direkt in Menü 1...Code:if menubyte = 0 then menubyte = 4 end if
Also wurde das ganze jetzt wie folgt umgebaut...
Somit Zeigt er am Anfang den Text.... und springt dann in Menü 1.Code:define Pot1 ad[1] define Pot2 ad[2] define Pot3 ad[3] define Pot4 ad[4] define keyin ad[8] define menubyte as byte define Licht port[16] #start menubyte = 1 Licht = off lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "DRIONA C-Control" lcd.pos 2, 1 lcd.print ".....please wait" lcd.off pause 200 #byterechnung if keyin = 50 then Do Loop Until keyin<>50 'Loop solange Taste 2 gedrückt menubyte = menubyte + 1 end if if keyin = 34 then Do Loop Until keyin<>34 'Loop solange Taste 1 gedrückt menubyte = menubyte - 1 end if #menue if menubyte = 1 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 1" lcd.pos 2, 1 lcd.print "Analog 1 = " & Pot1 lcd.off end if if menubyte = 2 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 2" lcd.pos 2, 1 lcd.print "Analog 2 = " & Pot2 lcd.off end if if menubyte = 3 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 3" lcd.pos 2, 1 lcd.print "Analog 3 = " & Pot3 lcd.off end if if menubyte = 4 then lcd.Init lcd.clear lcd.pos 1, 1 lcd.print "Menue 4" lcd.pos 2, 1 lcd.print "Analog 4 = " & Pot4 lcd.off end if if menubyte = 0 then menubyte = 4 end if if menubyte = 5 then menubyte = 1 end if goto byterechnung
Ab hier kann ich mit "vorwärts" (Taste 2) und rückwärts (Taste 1) durch die Menüs blättern...
Hi,
das lcd.clear und lcd.pos 1, 1 nach lcd.Init kannst Du weglassen.
lcd.init macht auch gleich ein lcd.clear und positioniert gleich den Cursor an 1,1.
Gruss
Lesezeichen