Guten Morgen allerseits !


Hab folgendes Problem:

Ich möchte meinen Asuro in Dauerbetrieb nehmen. Später soll er bei einem geringen Batteriestand die Ladestation aufsuchen. Momentan bin ich noch in der Anfangsphase und habe bisher folgenden Code:


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]; 

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 = 120; 
   for(;;) { 
       
      LineData(lineData); 
      i = lineData[0] - lineData[1]; 
      if (i > 0) { 
         StatusLED(GREEN); 
         Line(); 
         } 
      else if (i < 0) { 
         StatusLED(RED); 
         Line(); 
         } 
      else { 
         StatusLED(OFF); 
         speedLeft = speedRight = medspeed; 
         MotorDir(FWD,FWD); 
         sL=speedLeft;sR=speedRight; 
      } 
      MotorSpeed(sL,sR); 
	  SerWrite("Akkuladung: ",12);	 
      PrintInt(Batterie());
      SerWrite("\n\r",3);
	  
	  
   } 
}

Bei diesem Code, ist allerdings die Linienverfolgung miserabel. Könnte mir jemand einen Tipp geben, wie man es optimieren könnte ?


Und noch eine Frage:
Kann man die Akkus auch aufladen, wenn der Asuro eingeschaltet ist ?


===========================
Vielen Dank!