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;
}
Lesezeichen