Hallo

Die Schrägstriche am Programmanfang hättest du besser für Kommentare im Programm verwendet. Das hier funzt so nicht:

Code:
            OdometrieData(ododata);
        if(ododata[0]>=ododata[1])
           {v=v+5;}
        else
           {v=v-5;}
Die Werte kann man nicht direkt vergleichen denn sie stehen für das an den Codescheiben reflektierte Licht das die Sensoren einfangen.

Für das Fahren ohne Strich würde ich eine Zeitfunktion verwenden weil die Odometrie nicht einfach zu programieren ist und die Genauigkeit unter Umständen nicht merklich besser als bei Zeitfunktionen ist. Wichtig bei Zeitfunktionen ist aber die richtige Wahl der MotorSpeed()-Parameter.

Hier würde ich umformulieren:
Code:
         while(a<=300)
         {
            a++;
            Sleep(255);
            MotorDir(RWD,RWD);
            MotorSpeed(160,80);
         }
in
Code:
            MotorDir(RWD,RWD);
            MotorSpeed(160,80);
         while(a<=300)
         {
            a++;
            Sleep(255);
         }
Das hier ist vielleicht auch kritisch:
Code:
if(PollSwitch()>0)
{
   if(PollSwitch()>0)
   {
      a=0;
      taste=PollSwitch();
Obwohl zweimal auf PollSwitch() > 0 geprüft wird könnte taste trotzdem 0 sein!

Testen kann ich leider nicht, vielleicht könnest du die Fehlfunktion genauer beschreiben.

Gruß

mic