Jetzt hat's geklappt.
Nur weicht er bei Abstand<15 immer noch auf die gleiche Seite aus.
Hier der Code:
Code:#include "asuro.h" #include "ultrasonic.h" int main(void) { int abstand, sw, sw0, sw1, sw2; unsigned char ocr = 0; unsigned char ocr1 = 0; Init(); while(1) { sw0=PollSwitch(); sw1=PollSwitch(); sw2=PollSwitch(); ocr = TCNT0; ocr1 =ocr/2; ocr1 *=2; if ((sw0==sw1) && (sw0==sw2)) sw=sw0; else sw=0; MotorDir(FWD,FWD); MotorSpeed(150, 150); abstand = Chirp(); StatusLED(YELLOW); if (sw==32) { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(FWD,RWD); MotorSpeed(150, 150); Msleep(600); } if (sw==16) { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(FWD,RWD); MotorSpeed(150, 150); Msleep(600); } if (sw==8) { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(FWD,RWD); MotorSpeed(150, 150); Msleep(600); } if (sw==1) { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(RWD,FWD); MotorSpeed(150, 150); Msleep(600); } if (sw==2) { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(RWD,FWD); MotorSpeed(150, 150); Msleep(600); } if (sw==4) { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(RWD,FWD); MotorSpeed(150, 150); Msleep(600); } else if (abstand<15) { if (ocr == ocr1){ StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(RWD,FWD); MotorSpeed(150, 150); Msleep(600); } else { StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(150, 150); Msleep(600); MotorDir(FWD,RWD); MotorSpeed(150, 150); Msleep(600); } } else { StatusLED(GREEN); MotorDir(FWD, FWD); MotorSpeed(150, 150); } } return 0; }







Zitieren

Lesezeichen