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
bis255
. 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)]