Forum: Mikrocontroller und Digitale Elektronik Variable mit Tastendruck erhöhen


von Stefan (Gast)


Lesenswert?

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);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.