Hallo Leute ich hab ein Problem mit der Odometrie. Wenn ich follgendes Programm flash, aus Mehr Spaß mit ASURO Band II etwas modofieziert:
Wenn ich dann die Daten abfrage kommt folgendes:Code:#include "asuro.h" /*Schwellwert für die Hell-/Dunkel-Unterscheidung. Eventuell muss damit etwas variiert werden.*/ #define TRIGGERLEVEL 600 #define HYSTERSIS 10 #define LOW 0 #define HIGH 1 #define SPEED 255 int main(void) { unsigned int data[2]; signed int status[2] = {0, 0}; signed int difference = 0; Init(); MotorDir(FWD, FWD); MotorSpeed(SPEED, SPEED); while(1) { OdometrieData(data); if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERSIS)) /*Wenn linker Sensor von niedrig auf hoch wechselt*/ { status[0]=HIGH; difference++; } if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERSIS)) /*Wenn linker Sensor von hoch auf niedrig wechselt*/ { status[0]=LOW; difference++; } if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERSIS)) /*Wenn rechter Sensor von niedrig auf hoch wechselt*/ { status[1]=HIGH; difference--; } if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERSIS)) /*Wenn rechter Sensor von hoch auf neidrig wechselt*/ { status[1]=LOW; difference--; } PrintInt (difference); if (difference<-SPEED) /*Sicherheitsabfragen*/ { difference=-SPEED; } if (difference>SPEED) { difference=SPEED; } if (difference>0) { MotorSpeed(SPEED-difference, SPEED); /*Motoren einstellen*/ } else if (difference<0) { MotorSpeed(SPEED, SPEED+difference); } if (SPEED-difference<=100) { difference=0; } } }
und wenn 206 kommt bleibt das rechte Rad stehen. Könnte es ein Hardwaredefekt sein oder ist im Programm ein Fehler?Code:00000011111.....206206206206.......
Vielen Dank im vorraus.







Zitieren

Lesezeichen