Keine Angst, ich lese mir die Beiträge schon genau durch. Ich habe die Anweisungen mit den Variablen auch so umgesetzt gehabt, nur zwischen drin klappte das dann nicht mehr... ist jetzt auch egal.

Und doch, Schumis Programm klappt bis auf die Tatsache, dass der Robo erst minimal vor dem Hindernis dreht und die Infrarotsteuerung(die klappt immer noch nicht...) Es klappt wahrscheinlich aber nur, weil da ohne Else-Steuerung gearbeitet wird. Um weiter zu kommen, wäre es vllt. sinnvoll, die Else-Steuerung(so leid es mir tut, sowohl um deine Arbeit, als auch darum da ich es gerne so gemacht hätte, da es schicker aussieht), weg zulassen und an dem anderen Programm weiterzuarbeiten.

Code:
#include "qfixMiniBoard.h"
#include "qfixLCD.h"


const    int SENSOR3 = 3;
        int SENSOR1 = 1;
        int SENSOR2 = 2;
        int SENSOR = 0;

MiniBoard robot;
LCD lcd;

#define geradeaus        0
#define linksDrehung    1
#define rechtsDrehung    2

#define hindernis        85
#define freieSicht       150 // Wenn der Robo etwas nach links fährt, aber dann gegen das Hindernis, ist dieser Wert zu klein

#define True            1
#define False            0

int main() 
{
   
	unsigned char drehrichtung = geradeaus;    // unsigned char = 8bit integer von 0 bis 255, braucht weniger Platz im RAM
    unsigned char schonNachLinksAusgewichen = False;  
	int abstand   = robot.analog(1);
	int infrarot  = robot.analog(3);
  
    while(1)
    {
        
		
        if( drehrichtung == geradeaus)
        {
            robot.motors(100,100); //geradeaus fahren
            if( abstand < 150)
            {
                if(schonNachLinksAusgewichen == False)
                    drehrichtung = linksDrehung;
                else
                    drehrichtung = rechtsDrehung;
            }
        }
        if( drehrichtung == linksDrehung )
        {
		    robot.motors(-100,-100);
			msleep(100);
            robot.motors(-150, 150); // nach links drehen
			msleep(300);
            if( abstand >= 150 )
            {
                robot.motors(100,100);
				msleep(500);
                schonNachLinksAusgewichen = True;
				
				
				if( infrarot < 150){
		        robot.motors(100,-100);
				msleep(500);
				
            }
        }
        if( drehrichtung == rechtsDrehung )
        {
            robot.motors(150, -150); // nach rechts drehen
			msleep(300);
            if( abstand >= 150 )
            { 
			    robot.motors(-100, -100);
				msleep(100);
                robot.motors(100,100);
				msleep(500);
                schonNachLinksAusgewichen = False; 
				
				int infrarot  = robot.analog(3);
				if( infrarot < 150){
				robot.motors(-100,100);
				msleep(500);
				
	
			// Er ist zwar schon mal nach links ausgewichen, aber inzwischen auch schon rechtsrum, also wieder von vorne
			
			
			
			
			
			}  
		}		  
	}	

}	
}
}
Wie gesagt: Das hier funktioniert soweit(arbeite sozusagen an zwei Versionen gleichzeitig), dass der Robo fährt, sich dann minimal vor dem Hindernis dreht. Die Rücksteuerung per Infrarot wäre jetzt das nächste, was ich gerne versuchen würde, vllt. klappt es dann ja. Würde mich extrem freuen.

Also, weißt du, was hier der Fehler an der Infrarotsteuerung sein könnte? Ich sehe keinen und weiß deshalb nicht was ändern.

_____

Bei dem mit der Else-Schleife bleibt das Problem, dass er sich nur dreht. Hab schon ein paar Dinge verändert, aber immer dasselbe Problem, er scheint den "If-Teil" einfach nicht auszuführen.