Archiv verlassen und diese Seite im Standarddesign anzeigen : Menü-Programmierung
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:
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
Jemand ne Idee ??
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
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/index.php/Taster-Abfrage_in_C
Ei ei!
ZB hier:
https://www.roboternetz.de/wissen/index.php/Taster-Abfrage_in_C
Hmm... C-Control heisst aber nicht Programmiersprache C sondern Conrad....
Und der Teil hier
#include "taster.h"
volatile signed char taster = NO_TASTER;
taste_t tasten[NUM_TASTER];
void get_taster (const unsigned char num, unsigned char tast)
sieht eher nach C aus, statt nach CCbasic oder Basic++
@Dierk
Super Idee !! Hat bestens geklappt.
Hab den Teil jetzt so geändert:
#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
Und hab ganz unten noch das hier eingefügt:
if menubyte = 4 then
menubyte = 1
end if
damit er, wenn er bis 4 hochgezählt hat, wieder in Menübildschirm 1 springt...
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
if menubyte = 0 then
menubyte = 4
end if
einbaue, springt er natürlich von Start an direkt in Menü 1...
Also wurde das ganze jetzt wie folgt umgebaut...
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
Somit Zeigt er am Anfang den Text.... und springt dann in Menü 1.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.