Vorbereitung: Stift auf zwei Klötze legen, Roboter in Startposition. Zwei weitere Klötze aufstellen. Dort soll der Stift am Ende liegen.
Ziel: Der Roboter hebt den Stift auf und legt ihn auf die anderen beiden Klötze.
Neues Projekt öffnen, folgenden Code ausprobieren.
################### # Sachen bewegen # ################### ev3.speaker.say(text="Hello, I'll move a stick.") links = Motor(Port.A) rechts = Motor(Port.B) licht = ColorSensor(Port.S3) ultraschall = UltrasonicSensor(Port.S2) heber = Motor(Port.C) # Sind die Motoren und Sensoren richtig verkabelt? robot = DriveBase(links, rechts, wheel_diameter=55.5, axle_track=104) # Einige Befehle, um die Schaufel/den Heber kennenzulernen. # Motor laufen lassen, bis er blockiert (= stalled). heber.run_until_stalled(20) # aktuelle Winkelposition als 0 Grad definieren heber.reset_angle(0) # Heber mit Geschwindigkeit 20 Grad/Sekunde auf Winkel -135 Grad einstellen. heber.run_target(20, -135) # 100 Millisekunden vorwärts fahren. robot.straight(100)
Zum Beispiel: Roboter fährt geradeaus, bis er das weisse Papier verlässt/oder bis er 30 cm vor der Wand steht. Dann dreht er sich um 90 Grad nach rechts. Nun ist er in der Startposition zum Stiftaufheben (vorige Aufgabe verwenden).
# Ermittle mit Hilfe der folgenden Schleife die Werte # für Weiss = Papier und Schwarz = Teppich und trage sie # unten ansstelle der Nullen ein. # Die Schleife wird aktuell nicht ausgeführt, wegen False. while False: r = licht.reflection() print(r) wait(100) # Wartezeit in Millisekunden schwarz = 0 weiss = 0 # Hier folgt ein "Rasenmäher-Programm". # Wegen False wird die Schleife ebenfalls nicht ausgeführt. while False: # Begin driving forward at 200 millimeters per second. robot.drive(200, 0) # Wait until an obstacle is detected. This is done by repeatedly # doing nothing (waiting for 10 milliseconds) while the measured # distance is still greater than 300 mm. while ultraschall.distance() > 300: wait(10) # Drive backward for 300 millimeters. robot.straight(-300) # Turn around by 120 degrees robot.turn(120)