Im Moment ist bei meinem ASURO incl. US die Odometrie nicht kalibriert, aber probiere das mal so:
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.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; }
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.







Zitieren

Lesezeichen