Ich habe mein Programm noch einmal völlig umgeschrieben.
und rausgekommen ist das hier:Doch statt geradeaus zu fahren bis sich ein rad nicht mehr dreht und dann zurückzustetzen und zu drehenCode:#include <asuro.h> int Drehen(char dl,char dr){ int za; MotorDir(RWD,RWD); MotorSpeed(120,120); for(za=0;za<282;za++){ Sleep (225); } MotorDir(dl,dr); MotorSpeed(120,120); for(za=0;za<282;za++){ Sleep (225); } return 0; } int Zeit(int Da,char Zei){ int Data[2]; int za; OdometrieData(Data); if(Data[Da]>750){ while(Data[Da]>750){ MotorSpeed(150,150); Sleep(1); OdometrieData(Data); } while(Data[Da]<550){ MotorSpeed(200,200); Sleep(1); Zei++; OdometrieData(Data); } } else if(Data[Da]<550){ while(Data[Da]<550){ MotorSpeed(150,150); Sleep(1); OdometrieData(Data); } while(Data[Da]>750){ MotorSpeed(200,200); Sleep(1); Zei++; OdometrieData(Data); } } MotorSpeed(0,0); for(za=0;za<1000;za++){ Sleep (225); } return 0; } int Stehen(int Da,char Ze){ unsigned int Data[2]; MotorDir(FWD,FWD); MotorSpeed(255,255); OdometrieData(Data); if(Data[Da]>750){ Sleep(Ze); OdometrieData(Data); if(Data[Da]>750){ Drehen(RWD,FWD); } else{ MotorDir(FWD,FWD); MotorSpeed(255,255); } } else if(Data[Da]<550){ Sleep(Ze); OdometrieData(Data); if(Data[Da]<550){ Drehen(RWD,FWD); } else{ MotorDir(FWD,FWD); MotorSpeed(255,255); } } return 0; } int main(void){ Init(); unsigned int zl; unsigned int zr; Zeit(0,zl); Zeit(1,zr); while(1){ Stehen(0,zl); Stehen(1,zr); } return 0; }
tut er zweiteres ständig unabhängig von der Rad drehung. Woran liegt das?? Wo ist der fehler??
Lesezeichen