Hi,
ich habe einmal die PollSwitch funktion mit waste's geradeaus funktion kombiniert. irgendwie klappt das überhaupt nicht! entweder wird sofort die while-schleife übersprungen und die LED blinkt, oder die motoren laufen nicht an, dh. LED ist grün, bewegen tut sich nix, drückt man jedoch einen taster verlässt er die schleife. hier mal der code:
Code:
include "asuro.h"
int main(void){
int speedL, speedR;
int j;
int diff, wegL, wegR;
unsigned int odo[2];
unsigned char flankeL=FALSE, flankeR=FALSE, speed;
Init();
MotorDir(FWD,FWD);
StatusLED(GREEN);
speed=200;
speedL=0;
speedR=0;
wegL=0;
wegR=0;
while(PollSwitch()==0){
OdometrieData(odo);
if((odo[0]<550)&&(flankeL==TRUE)){wegL++; flankeL=FALSE;}
if((odo[0]>650)&&(flankeL==FALSE)){wegL++; flankeL=TRUE;}
if((odo[1]<550)&&(flankeR==TRUE)){wegR++; flankeR=FALSE;}
if((odo[1]>650)&&(flankeR==FALSE)){wegR++; flankeR=TRUE;}
diff=wegR-wegL;
if(diff>0){speedR--;}
else if(diff<0){speedL--;}
else{
speedL=speed;
speedR=speed;
}
if(speedL<0){speedL=0;}
if(speedR<0){speedR=0;}
MotorSpeed(speedL,speedR);
}
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
while(1){
StatusLED(RED);
for(j=0;j<70;j++){
Sleep(255);
}
StatusLED(GREEN);
for(j=0;j<70;j++){
Sleep(255);
}
}
while(1);
return(0);
}
Lesezeichen