====== Line Follower ====== Ziel: Der Roboter folgt einer Linie. ===== Vorbereitung ===== * Laptop und Roboter (Taste in der Mitte) starten. * Stromversorgung vom Roboter ausstecken. * Bezeichnung der Roboter-Tasten verstehen: * ESC, Escape: Oben links * Enter, Bestätigen: Mitte * TigerJython starten. * IP von Roboter ablesen und in TigerJython wie folgt eintragen: * Datei -> Einstellungen -> Bibliotheken -> zuunterst die IP eintragen. Bestätigen. * Auf dem Roboter Enter drücken (mittlere Taste), **Run default**. * Beispiel-Code kopieren, **speichern**, testen und studieren. from ev3robot import * # Roboter initialisieren robot = LegoRobot() # Linker und rechter Motor hinzufuegen right = Motor(MotorPort.A) robot.addPart(right) left = Motor(MotorPort.B) robot.addPart(left) # Lichtsensor hinzufuegen und starten ls = LightSensor(SensorPort.S3) # Ueberpruefen, ob der Sensor auch wirklich an Port 3 angeschlossen ist! robot.addPart(ls) ls.activate(True) ################################## ## Platz fuer eigene Funktionen ## ################################## ########################################### ## B E G I N D E S P R O G R A M M S ## ########################################### left.setSpeed(20) # Sinnvolle Werte zwischen 0 und 100 left.forward() # Erst jetzt wird setSpeed wirksam! right.setSpeed(10) # Links schneller als rechts, d.h. eine Rechtskurve right.forward() # Mit backward() könnte eine Drehung auf Platz erreicht werden. # Die Motoren drehen sich jetzt Tools.delay(2000) # 2 Sekunden warten, damit sich der Roboter auch wirklich bewegt. # Motoren stoppen, Geschwindigkeit auf Null left.setSpeed(0) left.forward() right.setSpeed(0) right.forward() robot.exit() # Programm ordnungsgemäss beenden. ===== Challenge 1 ===== Der Roboter soll auf weissem Untergrund starten. Er soll so lange geradeaus fahren, bis der Helligkeitssensor auf auf dem Teppich ist. Bonuspunkte, wer den Roboter noch so manövrieren kann, dass der Lichtkegel des Helligkeitssensors am Schluss genau von der hell-dunkel Kante halbiert wird. **Wichtig: Speichern Sie Ihr Programm regelmässig!** Pseudo-Code: Motoren an Wiederholen: Lichtsensor auslesen Schleife verlassen (mit ''break''), wenn die Helligkeit klein genug Motoren aus Lichtsensor auslesen und anzeigen. Diesen Code verwenden Sie anstatt der Pause. while True: l = ls.getValue() print("Helligkeit=%d" % l) # Ausgabe auf dem Computer if True: # Hier die Bedingung mit der Helligkeit einbauen. break ===== Challenge 2 ===== Ziel ist es, dass der Roboter mit dem Helligkeitssensor einer hell-dunkel Kante folgt, z.B. entlang einer weissen Fläche auf dem Teppich, oder entlang der Bahn auf der Blache. Um die beiden Motoren etwas konfortabler steuern zu können, dürfen Sie gerne folgende Funktion verwenden, die Sie unmittelbar vor dem Kommentar ''Beginn des Programms'' kopieren. # Beispiele: # steuern(0,0) # stoppt die Motoren # steuern(20,-20) # rechts im Kreis drehen # steuern(40,40) # gerade aus # steuern(10,30) # Links-Kurve def steuern(links, rechts): left.setSpeed(int(abs(links))) if (links>0): left.forward() elif (links<0): left.backward() else: left.stop() right.setSpeed(int(abs(rechts))) if (rechts>0): right.forward() elif (rechts<0): right.backward() else: right.stop() Idee 1: In einer Endlos-Schleife jeweils die Helligkeit ermitteln und je nach Helligkeit mit der Funktion ''steuern'' eher nach links oder rechts steuern. Idee 2: Abschätzen, wie der Wert etwas später aussehen könnte und bereits darauf reagieren. Das kann ein hin- und herwackeln vermindern. ===== Aufräumen ===== * Roboter ausschalten (Escape, Escape, dann bestätigen). * Roboter an seinen Platz auf den Laptop mit gleicher Nummer. * Roboter an die Stromversorgung anschliessen. * Laptop ausschalten (Menu oben rechts) * Sich melden, vor dem Roboter warten, bis ich Sie verabschiede.