Skip to content

Latest commit

 

History

History
138 lines (105 loc) · 2.93 KB

motor.md

File metadata and controls

138 lines (105 loc) · 2.93 KB
sidebar_position
1

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