Tast Sensor Test C

Asuro Tastsensor Testprogramm.

Beschreibung

Die Tastsensoren des Asuro werden alle 1/2 Sekunde überprüft und das Ergebnis über die IR Schnittstelle zum PC gesendet. Dort kann das Ergebnis mithilfe eines Terminalprogramm überprüft werden.

Programmcode

Der Programmcode aller Beispiel- und Testprogramme kann im Download Bereich heruntergeladen werden, bzw. befinden sich im Examples Ordner der Asuro Lib unter TasterTest.

 
/***********************************************************************
 *
 * File Name:   tastsensor.c
 * Project  :   ASURO
 *
 * Description: Test der Tastensensoren
 *
 * Ver.     Date         Author           Comments
 * -------  ----------   --------------   ------------------------------
 * 1.0      10.09.2005   Peter            initial build
 * 1.1      08.01.2006   Peter            2x PollSwitch + Vergleich, anstelle 8x PollSwitch
 *
 * benoetigt die modifizierte Asuro Bibliothek 'asuro.c'
 * von waste, stochri und andun. Zu finden bei www.roboternetz.de
 */

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   any later version.                                                    *
 ***************************************************************************/


#include "asuro.h"

int main(void)
{
  unsigned char t1, t2;

  Init();
  SerWrite("\r\nTastsensor Test\r\n",19);
  while(1)
  {
    t1 = PollSwitch();
    t2 = PollSwitch();
    if(t1 && t2 && t1 == t2)              /* irgendeine Taste gedrueckt */
    {
      PrintInt(t1);     /* Tastenwert senden */
      SerWrite("\r\n", 2); /* Zeilenvorschub */
      Msleep(500);         /* halbe Sekunde warten */
    }
  }
}

Ausgabe

Funktionieren alle Tastsensoren korrekt, so sollte im Terminalprogramm folgende Ausgabe erscheinen, wenn nacheinander die Taster K1..K6 gedrückt werden.

 
Tastsensor Test
32
16
8
4
2
1

Falls die Werte K1, K2 o. K3 etwas abweichen, z.B. 33 statt 32 liefern hilft eine Modifikation der Bibliotheksfunktion PollSwitch(). Näheres siehe im FAQ unter Taster Probleme.

Werden mehrere Tasten gleichzeitig gedrückt entspricht der ausgegebene Wert der Summe der gedrückten Tasten.

Die Werte für die einzelnen Tasten sind nicht zufällig gewählt sondern entsprechen den 2er Potenzen 21, 22, 23, 24, 25, 26. Dadurch kann man in eigenen Programmen die gedrückte Tasten mit den gesetzten Bits (in Hexadezimal Schreibweise) abtesten.

 

t1 = PollSwitch();
t2 = PollSwitch();
if (t1 && t2 && t1 == t2)
{
  if (t1 & 0x01)   // Taste K6 gedrückt
    do_K6();
  if (t1 & 0x02)   // Taste K5 gedrückt
    do_K5();
  if (t1 & 0x04)   // Taste K4 gedrückt
    do_K4();
  if (t1 & 0x08)   // Taste K3 gedrückt
    do_K3();
  if (t1 & 0x10)   // Taste K2 gedrückt
    do_K2();
  if (t1 & 0x20)   // Taste K1 gedrückt
    do_K1();
  if (t1 & 0x07)   // Taste K6, K5 und K4 gedrückt
    do_K6_K5_K4();