Hab ein erneutes Problem. Das folgende Programm funktioniert nach meiner Zufriedenheit:
Code:#include "asuro.h" #include <stdlib.h> #define maxspeed 130 #define medspeed 120 #define quadteiler 30 int speedLeft,speedRight, sR, sL, i; unsigned int lineData[2]; unsigned int zaehler = 0; int bat; void Line (void) { speedRight = medspeed - ((i*abs(i))/quadteiler); speedLeft = medspeed + ((i*abs(i))/quadteiler); if (speedRight > maxspeed) speedRight = maxspeed; if (speedLeft > maxspeed) speedLeft = maxspeed; if (speedRight < -maxspeed) speedRight = -maxspeed; if (speedLeft < -maxspeed) speedLeft = -maxspeed; if (speedRight < 0) {MotorDir (FWD,RWD); sR=-speedRight;sL=speedLeft;} else if (speedLeft < 0) {MotorDir (RWD,FWD); sL=-speedLeft;sR=speedRight;} else {MotorDir(FWD,FWD);sL=speedLeft;sR=speedRight;} } int main(void) { Init(); FrontLED(ON); for (i = 0; i < 0xFF; i++) LineData(lineData); speedLeft = speedRight = 200; for(;;) { zaehler++; if (zaehler == 2500) { bat = Batterie(); zaehler = 0; PrintInt(bat); if(bat > 550){ StatusLED(GREEN); } else{ StatusLED(RED); } } LineData(lineData); i = lineData[0] - lineData[1]; if (i > 0) { Line(); } else if (i < 0) { Line(); } else { speedLeft = speedRight = medspeed; MotorDir(FWD,FWD); sL=speedLeft;sR=speedRight; } MotorSpeed(sL,sR); } }
Nun brauch i das Programm ohne Linienverfolgung - hab mir folgendes gedacht:
Jedoch werden jetzt ganz andere Werte, als vorher ausgeben. Beim obersten Programm Werte um 580 beim unteren Programm Werte von 830 ?Code:#include "asuro.h" #include <stdlib.h> unsigned int zaehler = 0; int bat; int main(void) { Init(); for(;;) { zaehler++; if (zaehler == 2500) { bat = Batterie(); zaehler = 0; PrintInt(bat); if(bat > 550){ StatusLED(GREEN); } else{ StatusLED(RED); } } } }
Kann jemand helfen ?
oder weiß jemand welche Werte bei der Batterie-Funktion ausgegeben werden müssten ?
Danke






Zitieren

Lesezeichen