-
-
Moderator
Robotik Visionär
Hallo Weiti
taste1 sollte natürlich zuvor deklariert sein, als Byte bzw. Char weil der Rückgabewert von PollSwitch() so aussieht:
unsigned char PollSwitch (void)
taste2 speichert den letzten mit PollSwitch() ermittelten Wert (der ja in taste1 steht) und wird am Ende der Schleife zugewiesen (und muss natürlich auch zuvor als Char deklariert sein):
taste2=taste1
Dann kann man in der If-Abfrage die zwei nacheinander ermittelten Tastenwerte vergleichen. taste1 aus der aktuellen Schleife und taste2 aus der vorhergehenden Schleife. Dadurch spart man sich einen Aufruf von PollSwitch(). Zur Erhöhung der Zuverlässigkeit des Tastenwertes kann man dann noch einen dritten Tastenwert aus der vorletzen Schleife abfragen (if((taste1 > 0) && (taste1 == taste2) && (taste1 == taste3) den man mit
taste3=taste2;
taste2=taste1;
auch am Ende der Schleife gespeichert hat. Das funktioniert natürlich nur, wenn die Tasten halbwegs genau kalibriert sind und bei Betätigung (meistens) den ihnen zugewiesenen Wert erzeugen (1,2,4,8,16 und 32)
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen