Warum denn so komplizirt?
es geht doch auch einfacher:
Code:
#include "asuro.h"
int main(void){
int d;
Init();
while(1){
unsigned char b;
unsigned char a;
unsigned char c;
b=PollSwitch();
a=PollSwitch();
c=PollSwitch();
MotorDir(FWD,FWD);
MotorSpeed(120,120);
Sleep(100);
if ((b>0)&&(b<8)&&(a==b)&&(a==c)&&(b==c)){
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(255);}
MotorDir(RWD,FWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(120);
}
}
else if((b>7)&&(b<57)&&(a==b)&&(a==c)&&(b==c)){
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(255);}
MotorDir(FWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(120);
}
}
else{
MotorDir(FWD,FWD);
MotorSpeed(120,120);
}
}
return 0;
}
Das währe ein programm wo der asuro, wenn er links irgendwo gegen fährt ein stück Rückwärts fährt und dann nach rechts und wenn er rechts gegen fährt genau das gegenteil.
Noch einfacher für den anfang währe es so zu schreiben
Code:
#include "asuro.h"
int main(void){
int d;
Init();
while(1){
unsigned char b;
unsigned char a;
unsigned char c;
b=PollSwitch();
a=PollSwitch();
c=PollSwitch();
MotorDir(FWD,FWD);
MotorSpeed(120,120);
Sleep(100);
if ((b>0)&&(a==b)&&(a==c)){
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(255);}
MotorDir(RWD,FWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(120);
}
}
else{
MotorDir(FWD,FWD);
MotorSpeed(120,120);
}
}
}
hier bei fährt der Asuro rückwärs und dann nach links egal auf welcher seite er anstöst.
Lesezeichen