Im Moment ist bei meinem ASURO incl. US die Odometrie nicht kalibriert, aber probiere das mal so:
Code:
#include "asuro.h" //incl. US
int abstand=0;
int j=0;
void fahren (void)
{
//EncoderInit();
Go (200,150);
Msleep(1000);
Turn (85,150);
Msleep(1000);
}
void entfernung(void)
{
SerWrite("\r\n --- ultrasonic test ---",29);
Msleep(1000);
do
{
abstand=Chirp();
SerWrite("\r\n distanz in cm ",16);
Msleep(500);
PrintInt(abstand);
if(abstand > 25)
{
StatusLED(GREEN);
Msleep(500);
fahren();
}
else
{
StatusLED(RED);
Msleep(500);
Turn(180,200);
}
}
while(1);
}
int main(void)
{
Init();
EncoderInit ();
for (j = 0; j < 8; j++)
{
entfernung();
StatusLED(YELLOW);
Msleep(500);
}
while(1);
return 0;
}
Damit läuft er mal in den if- und mal in den else-Zweig, und er schickt ständig Werte auf das Hyperterminal. Damit kommst Du weiter.
Die for-Schleife in main() wird übrigens nur einmal ausgeführt, weil er sich ja in entfernung() in der do/while-Schleife fängt. Das macht bezüglich der Ablauflogik keinen Sinn. Das solltest Du ändern.
Lesezeichen