Hab ich gemacht, zumindest so halbwegs.
Ich glaube es ist logisch: Am ersten weißen Kreis soll sich der Robo(das Quadrat) links drehen, dann ab dann per Infrarot den Boden scannen und sich am schwarzen Kreis(Wert >180) rechts drehen, damit er auf das nächste Hindernis zu fahren kann. Danach dasselbe in grün nur umgekehrt, also erst rechts drehen, dann links. Wie gesagt, ich hab was für das Infrarot geschrieben, nur will es nicht. Wie kann ich das anders machen?
Und noch eine Frage: Wie kann ich es machen, dass sich der Robo genau 90° dreht? Irgendwie macht der das nur manchmal...
So sieht das Programm derzeit aus:
Code:
while(1)
{
int abstand = robot.analog(1);
//int infrarot = robot.analog(3);
if( drehrichtung == geradeaus)
{
robot.motors(25,25); //geradeaus fahren
if( abstand < hindernis)
{
if(schonNachLinksAusgewichen == False)
drehrichtung = linksDrehung;
else
drehrichtung = rechtsDrehung;
}
}
if( drehrichtung == linksDrehung )
{
robot.motors(-255, 255); // nach links drehen
if( abstand >= freieSicht )
{
robot.motors(125,125);
schonNachLinksAusgewichen = True;
//if( infrarot > 180){
//robot.motors(100,-100);
//msleep(500);
//}
}
}
if( drehrichtung == rechtsDrehung )
{
robot.motors(200, -200); // nach rechts drehen
if( abstand >= freieSicht )
{
robot.motors(100,100);
schonNachLinksAusgewichen = False;
//msleep(500);
//if( infrarot > 180){
//robot.motors(-100,100);
//}
// Er ist zwar schon mal nach links ausgewichen, aber inzwischen auch schon rechtsrum, also wieder von vorne
}
}
}
}
____
Leider habe ich im Alltag nicht all zu viel Zeit dafür, mich einzulesen und jetzt ist zu spät, Ferienende. Zudem sollte das Ding eigentlich bis Mittwoch fertig sein, werd ich aber wohl nicht schaffen. Nun gut, kann man nix machen...
Lesezeichen