Hi

Also ich habe das versucht so zu lösen :
Code:
else if (taskTrigger==3) { //nach rechts 
   switch (taskStep) {
     case 0:
       digitalWrite(leftMtrDirPin1, LOW);
      digitalWrite(leftMtrDirPin2, LOW);  
      digitalWrite(rightMtrDirPin1, HIGH);
      digitalWrite(rightMtrDirPin2, LOW); 
      analogWrite(leftMtrSpdPin, 255);   //drive the motor
      analogWrite(rightMtrSpdPin, 255);
       
       currentPosition=bearing;
       taskStep++;
       break;
     case 1:
       if (currentPosition= newPosition+90) { 
         taskTrigger=0;
         taskStep=0;  
   
    analogWrite(leftMtrSpdPin, 0);   //stopp the motors
    analogWrite(rightMtrSpdPin, 0);      
       }
   }
 }
vorher kommt die Anweisung :
Code:
if (!taskTrigger && (uS2 < 15 & uS3 > 30 )) //abstand kleiner als 15cm und abstand links grösser als 30  
    taskTrigger=1;
    
else if (!taskTrigger && ( uS2 < 15 & uS1 > 30 )) //wenn abstand kleiner als 15 und links groesser als 30 dann rechts
    taskTrigger=2;

else if (!taskTrigger && (uS3 < 16)) //wenn abstand kleiner als 16 dann rechts drehen
    taskTrigger=3;
leider "pulsiert" der Antrieb nur
Es schert ihm nicht was die Werte des kompasmoduls machen.

Ich krieg das nicht hin ....
Warum wartet er nicht bis er um 90° gedreht hat ???

Hat jemand einen Vorschlag ?

Gruß
Chr.