Antriebsstrang#

Einführung#

Der 123-Roboter verfügt über einen Zweiradantrieb, der ihm das Fahren und Wenden ermöglicht. Die Antriebsmethoden steuern die Bewegungen des Roboters.

Der Antriebsstrang kann Distanzen auf zwei Arten messen: Schritte und mm (Millimeter). Ein Schritt entspricht einem Kästchen auf einem 123-Feld.

Es gibt viele Möglichkeiten, den Antriebsstrang zu codieren. Nachfolgend finden Sie eine Liste aller Antriebsstrangmethoden:

Aktionen – Den Roboter bewegen und drehen.

  • drive — Bewegt den Roboter unendlich vorwärts oder rückwärts.

  • drive_for — Bewegt den Roboter vorwärts oder rückwärts über eine bestimmte Distanz.

  • drive_until — Bewegt den Roboter vorwärts oder rückwärts, bis er ein Objekt, einen Zusammenstoß oder eine Linie erkennt.

  • turn — Dreht den Roboter endlos nach links oder rechts.

  • turn_for — Dreht den Roboter um eine bestimmte Anzahl von Grad nach links oder rechts.

  • turn_to_heading — Dreht den Roboter in eine bestimmte Richtung zwischen -359 und 359 Grad.

  • stop — Stoppt die Bewegung des Roboters.

Mutatoren – Einstellungen des Antriebsstrangs anpassen.

  • set_timeout — Legt fest, wie lange der Roboter versucht, eine Bewegung abzuschließen.

  • set_heading — Ändert die aktuelle Fahrtrichtung des Roboters in eine neue Fahrtrichtung.

Getters – Bewegungsstatus prüfen.

  • is_stopped — Gibt als booleschen Wert zurück, ob der Roboter aufgehört hat, sich zu bewegen.

  • get_heading — Gibt die aktuelle Richtung des Roboters von 0 bis 359 Grad zurück.

Aktionen#

drive#

drive endlos. Der Roboter bewegt sich so lange, bis ihm eine andere Aktion zugewiesen wird, z. B. Drehen oder Anhalten.

Usage:
robot.drive(direction)

Parameter

Beschreibung

direction

Die Bewegungsrichtung des Roboters: FORWARD oder REVERSE.

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

drive_for#

drive_for bewegt den Roboter eine bestimmte Strecke vorwärts oder rückwärts. Das Projekt wartet, bis der Roboter die Bewegung abgeschlossen hat, bevor die nächste Codezeile ausgeführt wird.

Usage:
robot.drive_for(direction, distance, unit)

Parameter

Beschreibung

direction

Die Bewegungsrichtung des Roboters: FORWARD oder REVERSE.

distance

Die vom Roboter zurückgelegte Strecke. Dies kann eine ganze Zahl oder eine Dezimalzahl sein.

unit

Die Distanzeinheit: MM (Millimeter) oder STEPS (ein Quadrat auf einem 123-Feld).

# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)

drive_until#

drive_until bewegt den Roboter vorwärts oder rückwärts, bis er ein Objekt, einen Zusammenstoß oder eine Linie erkennt.

Usage:
robot.drive_until(direction)

Parameter

Beschreibung

direction

Die Bewegungsrichtung des Roboters: FORWARD oder REVERSE.

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

turn#

turn links oder rechts, und zwar endlos. Der Roboter dreht sich so lange, bis er eine andere Aktion erhält, z. B. Fahren oder Anhalten.

Usage:
robot.turn(direction)

Parameter

Beschreibung

direction

Die Richtung, in die sich der Roboter dreht: LEFT oder RIGHT.

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

Der Befehl turn_for dreht den Roboter um eine bestimmte Gradzahl nach links oder rechts. Das Projekt wartet, bis der Roboter die Drehung abgeschlossen hat, bevor die nächste Codezeile ausgeführt wird.

Usage:
robot.turn_for(direction, degrees)

Parameter

Beschreibung

direction

Die Richtung, in die sich der Roboter dreht: LEFT oder RIGHT.

degrees

Die Gradzahl, um die gedreht werden soll. Dies kann eine ganze Zahl oder eine Dezimalzahl sein.

# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)

turn_to_heading#

turn_to_heading dreht den Roboter in eine bestimmte Richtung zwischen -359 und 359 Grad. Der Roboter wählt dabei den kürzesten Weg, um die Zielrichtung zu erreichen.

Der Ausgangskurs beträgt 0 Grad.

Das Projekt wartet, bis der Roboter seine Drehung abgeschlossen hat, bevor die nächste Codezeile ausgeführt wird.

Usage:
robot.turn_to_heading(heading)

Parameter

Beschreibung

heading

Die Richtung, in die der Roboter zeigen sollte, von -359 bis 359 Grad.

# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)

stop#

stop stoppt die Bewegung des Roboters.

Usage:
robot.stop()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()

Mutatoren#

set_timeout#

set_timeout wird festgelegt, wie viele Sekunden der Roboter versucht, eine Bewegung abzuschließen. Gelingt ihm dies nicht, bricht er den Versuch ab und fährt mit der nächsten Codezeile fort. Dadurch wird verhindert, dass der Roboter bei einer Bewegung hängen bleibt.

Usage:
robot.set_timeout(time, unit)

Parameter

Beschreibung

time

Die Zeitspanne, die für eine Bewegung berücksichtigt werden muss. Dies kann eine ganze Zahl oder eine Dezimalzahl sein.

unit

Die Zeiteinheit: MSEC oder SECONDS.

# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)

set_heading#

set_heading ändert die aktuelle Richtung des Roboters auf einen neuen Richtungswert.

Wenn sich der Roboter beispielsweise nach rechts gedreht hat, wird durch Einstellen der Ausrichtung auf 0 Grad diese nach rechts gerichtete Position zum neuen 0-Grad-Wert.

Usage:
robot.set_heading(heading)

Parameter

Beschreibung

heading

Der für den Roboter einzustellende Kurswert in Grad.

# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)

Getter#

is_stopped#

is_stopped gibt einen Boolean zurück, der angibt, ob der Roboter aufgehört hat, sich zu bewegen.

  • True — Der Roboter ist angehalten.

  • False — Der Roboter bewegt sich noch.

Usage:
robot.is_stopped()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
    if robot.is_stopped():
        robot.led.glow(BLUE)
    else:
        robot.led.glow(GREEN)
    wait(0.05, SECONDS)

get_heading#

get_heading gibt die Richtung zurück, in die der Roboter aktuell blickt, als ganze Zahl von 0 bis 359 Grad.

Die Ausgangsrichtung des Roboters beträgt 0 Grad.

Usage:
robot.get_heading()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())