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: intMotor.LEFTMotor.RIGHTMotor.ALLspeed: int[-255, 255]Werte von
-255bis255. Ein negativer Wert lässt den Motor in die gegengesetzte Richtung drehen.dir: intoptional
Direction.FORWARDDirection.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
motoroptional
Motor.LEFTMotor.RIGHTMotor.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
motorMotor.LEFTMotor.RIGHTcalibrationListe 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, [])