Hallo,

eine Kurve sollte er wenigstens mal fahren.

Mein Asuro hat für die linke und rechte ODO-Scheibe unterschiedliche Werte. Die habe ich in dem Code beschrieben. Beim Selbstcompilieren müsste man evtl. diese Werte anpassen. Außerdem fahre ich mit ODO-Scheiben, die 24 Segmente haben (12 schwarze, 12 weiße). Das ergibt dann rund 1 mm Fahrtstrecke pro Segmentwechsel.

Hans.

Code:
#define MM_PRO_SEGWE 1;         // zurückgelegter Weg für 1 Odo-Segmentwechsel in Millimeter 

#include "asuro.h" 

void HoleGefWeg(unsigned int *WegData, char *Drehrichtung) 
{ 
   unsigned int data[2]; 
   unsigned int tmpWertOdoLi, tmpWertOdoRe;      // Helligkeitswerte der Odoscheiben links / rechts 
   unsigned int static tmpWertOdoLiAlt, tmpWertOdoReAlt;   // Helligkeitswerte der Odoscheiben links / rechts 
                                             // behalten!! ---> static Definition 
   unsigned int WegLinks, WegRechts;                  // zurückgelegter Weg des linken bzw. rechten Rades 
   unsigned int OdoWertReHell;      // Odo-Wert für linke Odoscheibe, ab dem eine weiße Fläche angenommen wird 
   unsigned int OdoWertReDkl;      // Odo-Wert für linke Odoscheibe, ab dem eine dunkle Fläche angenommen wird 
   unsigned int OdoWertLiHell;      // Odo-Wert für rechte Odoscheibe, ab dem eine weiße Fläche angenommen wird 
   unsigned int OdoWertLiDkl;      // Odo-Wert für rechte Odoscheibe, ab dem eine dunkle Fläche angenommen wird 
   unsigned int dNeutrZoneLi;      // Neutrale Zone der Odowerte 
   unsigned int dNeutrZoneRe;      // Neutrale Zone der Odowerte 

   switch(Drehrichtung[1])         //Drehrichtung rechtes Rad 
   { 
      case 1:                //positiv, d.h. vorwärts 
      {    
         OdoWertReHell = 700;    // Odo-Wert für rechte Odoscheibe, ab dem eine weiße Fläche angenommen wird 
         OdoWertReDkl = 700;      // Odo-Wert für rechte Odoscheibe, ab dem eine dunkle Fläche angenommen wird 
         break;    
....