Hallo Zusammen,
ich versuche gerade ein Menue zu Programmieren. Um in das Menue zu
kommen soll eine Taste eine Secunde lang gedrückt werden. Danach soll
mit jedem weiteren druck der Taste in den nächsten Menue Punkte
gesprungen werden. Das klapt auch so weit sehr gut.
Allerdings soll wenn ich im lezten Menue Punkt bin mit einem weiteren
Druck der Taste das Menue verlassen werden.
Leider spring ich dann immer zurück in den ersten Menuepunkt.
1 | int menuePunkt = 0;
|
2 |
|
3 | unsigned long timemils, timesec, timesecalt, menueDelay;
|
4 | unsigned long timeMenueTaster1, timeMenueTaster2, timePlusTaster, timeMinusTaster;
|
5 |
|
6 | bool statusMenueTaster, statusPlusTaster, statusMinusTaster;
|
7 | bool statusMenue = false, statusPlus = false, statusMinus = false;
|
8 | bool minusOn = false, plusOn = false, menueOn = false;
|
9 | bool timerabgelaufen = false;
|
10 |
|
11 | void loop () {
|
12 | timemils = millis();
|
13 |
|
14 | //Start Tasterabfrage plus entprellung und Zeitverzögerung für Menue
|
15 | statusMenueTaster = digitalRead(menueTaster);
|
16 | statusPlusTaster = digitalRead(plusTaster );
|
17 | statusMinusTaster = digitalRead(minusTaster);
|
18 |
|
19 |
|
20 | if(statusMenueTaster == LOW){
|
21 | if(timeMenueTaster1 < timemils && statusMenue == false){
|
22 | statusMenue = true;
|
23 | menueOn = true;
|
24 | if (menuePunkt==0){
|
25 | menueDelay = timeMenueTaster1+950;
|
26 | }
|
27 | }
|
28 | }else{
|
29 | timeMenueTaster1 = timemils+50;
|
30 | statusMenue = false;
|
31 | }
|
32 |
|
33 | if(statusMenue == true && menuePunkt == 0){
|
34 | if(menueDelay < timemils){
|
35 | menuePunkt = 1;
|
36 | menueOn = false;
|
37 | }
|
38 | }
|
39 |
|
40 | if(statusPlusTaster == LOW){
|
41 | if(timePlusTaster < timemils && statusPlus == false){
|
42 | statusPlus = true;
|
43 | plusOn= true;
|
44 | }
|
45 | }
|
46 | else{
|
47 | timePlusTaster = timemils+50;
|
48 | statusPlus = false;
|
49 | }
|
50 |
|
51 | if(statusMinusTaster == LOW){
|
52 | if(timeMinusTaster < timemils && statusMinus == false){
|
53 | statusMinus = true;
|
54 | minusOn = true;
|
55 | }
|
56 | }
|
57 | else{
|
58 | timeMinusTaster = timemils+50;
|
59 | statusMinus = false;
|
60 | }
|
61 | //Ende Tasterabfrage plus entprellung und Zeitverzögerung für Menue
|
62 |
|
63 | //Gehe durch das Menue.
|
64 | if (menuePunkt != 0 && menueOn){
|
65 | menueOn = false;
|
66 | menuePunkt++;
|
67 | }
|
68 |
|
69 | if (menuePunkt== 1){
|
70 | analogWrite(5 ,255 );
|
71 | } else if (menuePunkt== 2){
|
72 | analogWrite(6 ,255 );
|
73 | } else if (menuePunkt== 3){
|
74 | analogWrite(11 ,255 );
|
75 | } else if (menuePunkt== 4){
|
76 | analogWrite(5 ,0 );
|
77 | analogWrite(6 ,0 );
|
78 | analogWrite(11 ,0 );
|
79 | menuePunkt =0;
|
80 | }
|
81 | }
|
Ich komm leider nicht drauf wo mein logischer Fehler liegt.
Danke schon mal für eure hilfe und noch mehr danke an die jenigen die es
sich verkneifen können mich dumm anzumachen weil ich erst mal
Programmierun lernen soll oder das der Code völliger mist ist oder,
oder, oder...
Ist ja leider in nicht ganz unüblich hier.
bis dann und Danke
Amper