hi allerseits,
so weit klar. Ich habe jetzt stochris "kleines geheimnis" um das einlesen und auswerten der taster ergänzt (wird nocht nicht ausgewertet) und probeweise um ein paar defines ergänzt:wenn ich das programm starte, macht der asuro einen leichten rechtsbogen, beim "stochri pur" aber nicht. Wieso???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 back { MotorSpeed(150,150);MotorDir(RWD,RWD);Msleep(1000);} #define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);} #define backleft { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);} #define backright { MotorSpeed(250,150);MotorDir(RWD,RWD);Msleep(1000);} #define stop { MotorSpeed(0,0);} /************************************************************************************* 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 v,nullspeed, sw, sw0, sw1, sw2; Init(); Encoder_Init(); StatusLED(OFF); SerWrite("\n\rASURO OK\n\r",8); go; Msleep(500); nullspeed=speed()-10; while(1) { sw0=PollSwitch(); // Schalter einlesen und für eine Runde speichern sw1=PollSwitch(); sw2=PollSwitch(); if ((sw0==sw1) && (sw0==sw2)) sw=sw0; else sw=0; v=speed(); SerWrite("\n\r speed ",9); PrintInt(v); if(v<nullspeed) { backturn; go; Msleep(500); } } return 0; }
Lesezeichen