Hi,
ich habe einen Taster und versuche ein Programm zu schreiben das so
funktioneren soll:
Ich drück den Taster für 1Sekunde, danach - wenn die Taste weiterhin
immer noch gedrückt ist - wird alle 100ms ein %-Wert erhöht und an die
USART gesendet. (Kennt mann von zu Hause bei einem Tastdimmer...)
Ich glaube, dass mein Weg nicht der Richtige ist da er Augenscheinlich
zu viel Zykluszeit in Anspruch nimmt.
Ich merke das daran, das der 100ms Impuls nicht mehr alle 100ms kommt
(Was er normalerweise tut) sondern das dass Ganze unregelmäßiger wird.
Irgendwo habe ich da einen Bock drin...Kann mir einer Helfen? Evtl. geht
mein Vorhaben auch wesentlich einfacher?!
1 | void TasterDimmenAuf (bool bit , bool imp, uint8_t ArrNr)
|
2 | {
|
3 |
|
4 | //Licht Ein
|
5 | if (R_TRIG(bit)){licht_schalten[ArrNr] = 1;}
|
6 |
|
7 | //Nach Zeit Licht Dimmwert erhöhen
|
8 | if (bit && imp)
|
9 | {
|
10 | ArrayCountTasterDimmer[ArrNr]++;
|
11 |
|
12 |
|
13 | if (ArrayCountTasterDimmer[ArrNr] > 10)
|
14 | {
|
15 |
|
16 | u8SpeicherDimmwert[ArrNr]++;
|
17 | //
|
18 |
|
19 | if (u8SpeicherDimmwert[ArrNr] <=100)
|
20 | {
|
21 |
|
22 | usart_writePC("98|11|05|%1i\n\r", u8SpeicherDimmwert[ArrNr]);
|
23 | }
|
24 | }
|
25 | }
|
26 | else if (!bit)
|
27 | {
|
28 | ArrayCountTasterDimmer[ArrNr] = 0;
|
29 | }
|
30 | }
|
So der Aufruf in der Main while Schleife
1 | TasterDimmenAuf (Eingang[0], _100msImp,12);
|