Ich habe mein Programm noch einmal völlig umgeschrieben.
und rausgekommen ist das hier:
Code:
#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;
}
Doch statt geradeaus zu fahren bis sich ein rad nicht mehr dreht und dann zurückzustetzen und zu drehen
tut er zweiteres ständig unabhängig von der Rad drehung. Woran liegt das?? Wo ist der fehler??
Lesezeichen