Zum Hauptinhalt springen
Version: Next

Motor

Für die Steuerung der Motoren gibt es die Funktionen motor_run und motor_stop.

API

Für die Motorsteuerung können folgende Konstanten benutzt werden

class Motor:
LEFT = 0
RIGHT = 1
ALL = 2

class Direction:
FORWARD = 0
BACKWARD = 1

motor_run(motor, speed)

Lässt den Motor mit der angegebenen Geschwindigkeit laufen.

Parameter

motor: int

Motor.LEFT

Motor.RIGHT

Motor.ALL

speed: int[-255, 255]

Werte von -255 bis 255. Ein negativer Wert lässt den Motor in die gegengesetzte Richtung drehen.

dir: int

optional

Direction.FORWARD

Direction.BACKWARD

Beispiel

# den linke Motor mit 100% vorwärts drehen lassen
motor_run(Motor.LEFT, 255)
# den rechten Motor rückwärts mit 50% drehen lassen
motor_run(Motor.RIGHT, 128, Direction.BACKWARD)
# oder äquivalent
motor_run(Motor.RIGHT, -128)

# beide Motoren vorwärts drehen mit 100%
motor_run(Motor.ALL, 255)

motor_stop()

Stoppt beide Motoren (oder optional den angegebenen Motor)

Parameter

motor

optional

Motor.LEFT

Motor.RIGHT

Motor.ALL

Beispiel

# stoppt beide Motoren
motor_stop()
# stoppt den linken Motor
motor_stop(Motor.LEFT)

motor_calibration(motor, calibration)

Die Motoren des Maqueen Plus V2.0 sind nicht perfekt gleich. Mit dieser Funktion kann eine Kalibration mit den Geschwindigkeiten gesetzt werden.

Parameter

motor

Motor.LEFT

Motor.RIGHT

calibration

Liste von Tupeln mit Geschwindigkeit und dem Korrekturfaktor. Die Geschwindigkeit muss zwischen 0 und 255 liegen. Der Korrekturfaktor ist ein Wert > 0. Der Korrekturfaktor wird linear interpoliert.

Die Kalibration kann durch das "Geradeausfahren lassen" des Maqueens eruiert werden:

from maqueen import *

motor_calibration(Motor.LEFT, [(25, 1.3)])

motor_run(Motor.ALL, 25)

Der Faktor 1.3 kann angepasst werden, bis der Maqueen geradeaus fährt.

Beispiel

Am besten wird ein zweiter Messpunkt bei Geschwindigkeit 200 eruiert und die Kalibration mit diesen beiden Punkten gesetzt:

motor_calibration(Motor.LEFT, [(25, 1.3), (200, 1.2)])

Allenfalls kann auch ein dritter (oder mehr) Messpunkt gesetzt werden. Die Korrekturfaktoren werden linear interpoliert.


motor_calibration(
Motor.LEFT,
[
(25, 1.3),
(50, 1.2),
(100, 1.4),
(200, 1.0)
]
)

motor_run(Motor.ALL, 75) # => Korrekturfaktor ist 1.3

Kalibration zurücksetzen

Die Kalibration kann zurückgesetzt werden, indem eine leere Liste übergeben wird:

# Kalibration zurücksetzen
motor_calibration(Motor.LEFT, [])
motor_calibration(Motor.RIGHT, [])

motor_get_calibration(motor)

Gibt eine Kopie der aktuellen Kalibration für den angegebenen Motor zurück.

Parameter

motor

Motor.LEFT

Motor.RIGHT

Beispiel

motor_get_calibration(Motor.LEFT) # => [(25, 1.3), (200, 1.2)]