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