1 | // Zeiten und Variablen für die Drückzeitabfrage
|
2 | static unsigned long startzeit2;
|
3 | static unsigned long vergangenezeit2;
|
4 | static bool gestartet2;
|
5 |
|
6 | //Global: Variable für die aktuell einzustellende Stelle
|
7 | // static int aktstelle = 0;
|
8 | // ist global: static bool uhrstellenaktiv = 0;
|
9 | //variablen für flanke weiterPin
|
10 | static bool flweiter;
|
11 | static bool weiteralt;
|
12 | //variablen für flanke uhrzeitPin
|
13 | static bool fleinstellen;
|
14 | static bool einstellenalt;
|
15 | // aktuelle Farbe__________________________________hier habe ich das Problem
|
16 | static int aktFarbe = 0;
|
17 |
|
18 | void ZeitStellen ()
|
19 | {
|
20 | //Variablen für die Pins
|
21 | bool einstellen = digitalRead (uhrzeitPin);
|
22 | bool weiter = digitalRead (weiterPin);
|
23 |
|
24 | //Flanke vom weiter Pin abfragen
|
25 | if (weiter == 0 && weiteralt == 1)
|
26 | {
|
27 | flweiter = 1;
|
28 | } else
|
29 | {
|
30 | flweiter = 0;
|
31 | }
|
32 | weiteralt = weiter;
|
33 |
|
34 | //Flanke vom uhrzeitPin abfragen
|
35 | if (einstellen == 0 && einstellenalt == 1)
|
36 | {
|
37 | fleinstellen = 1;
|
38 | } else
|
39 | {
|
40 | fleinstellen = 0;
|
41 | }
|
42 | einstellenalt = einstellen;
|
43 |
|
44 | // Wenn der uhrzeitPin auf 0 geht, wird die Startzeit gesetzt
|
45 | if (gestartet2 == 0 && einstellen == 0 )
|
46 | {
|
47 | gestartet2 = 1;
|
48 | startzeit2 = millis();
|
49 | }
|
50 | // Geht der uhrzeitPin wieder auf 1, rücksetzten der zeiten
|
51 | if (einstellen == 1)
|
52 | {
|
53 | startzeit2 = 0;
|
54 | gestartet2 = 0;
|
55 | vergangenezeit2 = 0;
|
56 | }
|
57 | // Wurde die Startzeit gesetzt und die Vergangene Zeit ist zu groß, wird wird das stellen aktiv
|
58 | if (einstellen == 0 && gestartet2 == 1 )
|
59 | {
|
60 | vergangenezeit2 = millis() - startzeit2;
|
61 | }
|
62 | // Wenn die Vergangene zeit zu groß ist, dann uhrzeitstellen aktiv
|
63 | if (vergangenezeit2 > 2000)
|
64 | {
|
65 | uhrstellenaktiv = 1; // uhrzeitstellen wird aktiv, solange bis alle stellen durch sind
|
66 | }
|
67 |
|
68 |
|
69 | // Farbe ändern
|
70 |
|
71 | if (flweiter == 1 && uhrstellenaktiv == 0)
|
72 | {
|
73 | if (aktFarbe < 5)
|
74 | {
|
75 | aktFarbe++;
|
76 | }
|
77 | else
|
78 | {
|
79 | aktFarbe = 0;
|
80 | }
|
81 |
|
82 | switch (aktFarbe)
|
83 | {
|
84 | case 0:
|
85 | rot = 1;
|
86 | blau = 1;
|
87 | gruen = 1;
|
88 | break;
|
89 | case 1:
|
90 | rot = 0;
|
91 | blau = 1;
|
92 | gruen = 1;
|
93 | break;
|
94 | case 2:
|
95 | blau = 0;
|
96 | rot = 1;
|
97 | gruen = 1;
|
98 | break;
|
99 | case 3:
|
100 | gruen = 0;
|
101 | rot = 1;
|
102 | blau = 1;
|
103 | break;
|
104 | case 4:
|
105 | rot = 0;
|
106 | blau = 0;
|
107 | gruen = 1;
|
108 | break;
|
109 | case 5:
|
110 | rot = 0;
|
111 | gruen = 0;
|
112 | blau = 1;
|
113 | break;
|
114 | default:
|
115 | aktFarbe = 0;
|
116 | break;
|
117 | }
|
118 | }
|
119 |
|
120 |
|
121 |
|
122 | //Wenn Uhrstellen aktiv ist, dann ablauf
|
123 | if (uhrstellenaktiv == 1)
|
124 | {
|
125 | switch (aktstelle)
|
126 | {
|
127 | case 0:
|
128 | fleinstellen = 0;
|
129 | aktstelle = 1;
|
130 | break;
|
131 | case 1:
|
132 | if (flweiter == 1 && EinerMinuten == 9)
|
133 | {
|
134 | EinerMinuten = -1;
|
135 | }
|
136 | if (flweiter == 1 && EinerMinuten < 9)
|
137 | {
|
138 | EinerMinuten++;
|
139 | }
|
140 | if (fleinstellen == 1)
|
141 | {
|
142 | aktstelle = 2;
|
143 | }
|
144 | break;
|
145 | case 2:
|
146 | if (flweiter == 1 && ZehnerMinuten == 5)
|
147 | {
|
148 | ZehnerMinuten = -1;
|
149 | }
|
150 | if (flweiter == 1 && EinerMinuten < 5)
|
151 | {
|
152 | ZehnerMinuten++;
|
153 | }
|
154 | if (fleinstellen == 1)
|
155 | {
|
156 | aktstelle = 3;
|
157 | }
|
158 | break;
|
159 | case 3:
|
160 | if (flweiter == 1 && EinerStunden == 9 || (ZehnerStunden == 2 && EinerStunden == 4))
|
161 | {
|
162 | EinerStunden = -1;
|
163 | }
|
164 | if (flweiter == 1 && EinerStunden < 9)
|
165 | {
|
166 | EinerStunden++;
|
167 | }
|
168 | if (fleinstellen == 1)
|
169 | {
|
170 | aktstelle = 4;
|
171 | }
|
172 | break;
|
173 | case 4:
|
174 | if (flweiter == 1 && ZehnerStunden == 2)
|
175 | {
|
176 | ZehnerStunden = -1;
|
177 | }
|
178 | if (flweiter == 1 && ZehnerStunden < 2)
|
179 | {
|
180 | ZehnerStunden++;
|
181 | }
|
182 | if (fleinstellen == 1)
|
183 | {
|
184 | // nach letzter zahl wieder zurück zum anfang und alles wieder auf default
|
185 | aktstelle = 0;
|
186 | uhrstellenaktiv = 0;
|
187 | gestartet2 = 0;
|
188 | startzeit2 = 0;
|
189 | vergangenezeit2 = 0;
|
190 | zeiten_generieren();
|
191 | }
|
192 | break;
|
193 | }
|
194 | }
|
195 |
|
196 | }
|