Table of Contents

Schaufel verwenden

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.

Steuerung der Schaufel kennenlernen

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)

Wer Helligkeits- oder Abstandssensor mitverwenden will

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)