sidebar_position |
---|
1 |
Für die Steuerung der Motoren gibt es die Funktionen motor_run
und motor_stop
.
Für die Motorsteuerung können folgende Konstanten benutzt werden
class Motor:
LEFT = 0
RIGHT = 1
ALL = 2
class Direction:
FORWARD = 0
BACKWARD = 1
Lässt den Motor mit der angegebenen Geschwindigkeit laufen.
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
# 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)
Stoppt beide Motoren (oder optional den angegebenen Motor)
motor
: optional
: Motor.LEFT
: Motor.RIGHT
: Motor.ALL
# stoppt beide Motoren
motor_stop()
# stoppt den linken Motor
motor_stop(Motor.LEFT)
Die Motoren des Maqueen Plus V2.0 sind nicht perfekt gleich. Mit dieser Funktion kann eine Kalibration mit den Geschwindigkeiten gesetzt werden.
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.
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
Die Kalibration kann zurückgesetzt werden, indem eine leere Liste übergeben wird:
# Kalibration zurücksetzen
motor_calibration(Motor.LEFT, [])
motor_calibration(Motor.RIGHT, [])
Gibt eine Kopie der aktuellen Kalibration für den angegebenen Motor zurück.
motor
: Motor.LEFT
: Motor.RIGHT
motor_get_calibration(Motor.LEFT) # => [(25, 1.3), (200, 1.2)]