next up previous contents
Nächste Seite: Motoransteuerung Aufwärts: Realisierung Vorherige Seite: Realisierung   Inhalt


Entprellung

Da die Taster, welche zur Kollisionserkennung vorgesehen sind auch zum Einstellen der Stillstandswerte der Servoansteuerung benutzt werden sollen, müssen sie per Software entprellt werden. BUMPER ist ein Makro der Bibliothek. Es liefert einen Wert je nach gedrücktem Taster (oder Tasterkombination). Ein eifacher Durchschnitt über mehrere Werte hätte evtl. zu grosse Abweichungen gegeben. Daher wird auf drei (fast) gleiche Werte gewartet und wahr zurückgegeben, wenn dieser Wert innerhalb der Werte $ x{\pm}d$ liegt.


int delta_bumper(int x, int d)
{
int cur, prev1, prev2;
  prev1 = prev2 = 0;
  cur = BUMPER;
  while( ((prev1<cur-1) || (prev1>cur+1)) || ((prev2<cur-1) || (prev2>cur+1))) { 
    prev2 = prev1; prev1 = cur; cur = BUMPER; 
  }

  return( (cur>=(x-d)) && (cur<=(x+d)) );
}

Die verschiedenen Taster werden mit den folgenden Makros abgefragt:


#define LEFT_BUMPER  delta_bumper(80,5)
#define RIGHT_BUMPER delta_bumper(22,5)
#define REAR_BUMPER  delta_bumper(127,5)
#define FRONT_BUMPER delta_bumper(42,5)



G. Sch.
2000-11-09