Das Ziel des Verfahrens war es, dem Asuro eine Art "Gefühl" beizubringen. Der Asuro merkt sozusagen, dass die Belastun seiner Motoren zu hoch wird und fährt dann in einer Kurve rückwärts.Code:#include "asuro.h" // bitte die neue Datei benutzen // asuro.h und asuro.c vom 31.03.05 #define aus MotorDir(BREAK,BREAK) #define go {MotorSpeed(150,150);MotorDir(FWD,FWD);} #define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);} /************************************************************************************* ASURO discovers your apartment program made by stochri july, 2005 *************************************************************************************/ int speed() { int rightspeed,leftspeed; int leftold,rightold; Encoder_Set(0,0); // reset encoder leftold=encoder[LEFT]; rightold=encoder[RIGHT]; Msleep(300); leftspeed=encoder[LEFT]-leftold; rightspeed=encoder[RIGHT]-rightold; //SerWrite(" speed Left,Right ",19); //PrintInt(leftspeed); //PrintInt(rightspeed); return leftspeed+rightspeed; } int main(void) { int n,v,nullspeed; Init(); Encoder_Init(); StatusLED(OFF); SerWrite("\n\rASURO OK\n\r",8); go; Msleep(500); nullspeed=speed()-10; while(1) { v=speed(); SerWrite("\n\r speed ",9); PrintInt(v); if(v<nullspeed) { backturn; go; Msleep(500); } } return 0; }
Das Interessante an diesem Verfahren ist, dass der Asuro so durch die ganze Wohnung fahren kann, was bei einer Methode bei der nur die Tasten abgefragt werden, nicht funktioniert.[/quote]
Lesezeichen