Motor und Motorgruppe#
Einführung#
Motors and motor groups control how parts of a robot move. A Motor controls one configured Smart Motor, while a MotorGroup controls multiple configured Smart Motors together so they move in tandem. Motors and motor groups can be used to raise an arm, turn a claw, spin a wheel, or move another part of a build. Two or four motors can work together as a drivetrain to move and turn the whole robot.
Jeder Motor bzw. jede Motorgruppe wird im Fenster „Geräte“ konfiguriert. Je nach Build können die Namen der Motoren und Motorgruppen variieren. Auf dieser Seite werden beispielsweise motor_1 und „ motor_group_1 verwendet. Ersetzen Sie diese bei Bedarf durch Ihre eigenen Namen.
Standardmäßig dreht sich der Motor bei der Einstellung FORWARD gegen den Uhrzeigersinn und REVERSE im Uhrzeigersinn. Wenn der Motor auf Rückwärtslauf eingestellt ist, werden diese Drehrichtungen vertauscht.
Es gibt viele Möglichkeiten, Motoren und Motorgruppen zu codieren. Nachfolgend finden Sie eine Liste aller Motor- und Motorgruppenmethoden:
Aktionen – Motoren und Motorgruppen anhalten und drehen.
spin— Dreht einen Motor oder eine Motorgruppe unendlich lange vorwärts oder rückwärts.spin_for— Lässt einen Motor oder eine Motorgruppe eine bestimmte Strecke rotieren.spin_to_position— Dreht einen Motor oder eine Motorgruppe in eine bestimmte Position.stop— Stoppt einen Motor oder eine Motorgruppe am Drehen.
Mutatoren – Einstellungen für Motoren und Motorgruppen anpassen.
set_position— Ändert die aktuelle Position des Motors oder der Motorgruppe auf einen neuen Wert.set_velocity— Gibt einem Motor oder einer Motorgruppe die gewünschte Drehgeschwindigkeit vor.set_stopping— Legt fest, wie ein Motor oder eine Motorgruppe die Bewegung stoppt: durch Bremsen, Auslaufen lassen oder Halten.set_max_torque— Legt fest, wie stark ein Motor oder eine Motorgruppe beim Drehen drücken darf.set_timeout— Legt fest, wie lange ein Motor oder eine Motorgruppe versucht, eine Bewegung abzuschließen.set_reversed— Ändert, ob die Drehrichtung eines Motors umgekehrt wird.reset_position— Ändert die aktuelle Position eines Motors oder einer Motorgruppe auf 0.
Getter – Motor- und Motorgruppenstatus prüfen.
is_done— Gibt als booleschen Wert zurück, ob der Motor oder die Motorgruppe die Bewegung beendet hat.is_spinning— Gibt als booleschen Wert zurück, ob sich der Motor oder die Motorgruppe dreht.position— Gibt die aktuelle Position des Motors oder der Motorgruppe zurück.velocity— Gibt zurück, wie schnell sich der Motor oder die Motorgruppe dreht.current— Gibt zurück, wie viel elektrischer Strom der Motor oder die Motorgruppe verbraucht.power— Gibt zurück, wie viel Leistung der Motor oder die Motorgruppe verbraucht.torque— Gibt zurück, wie viel Drehmoment der Motor oder die Motorgruppe verwendet.efficiency— Gibt zurück, wie effizient der Motor oder die Motorgruppe die Leistung nutzt.temperature— Gibt die Temperatur des Motors oder der Motorgruppe zurück.count— Gibt die Anzahl der Motoren in einer Motorgruppe zurück.get_timeout— Gibt die aktuelle Timeout-Dauer des Motors oder der Motorgruppe zurück.
Konstruktoren – Motoren und Motorgruppen manuell initialisieren und konfigurieren.
Motor— Erzeugt einen Motor.MotorGroup— Erstellt eine Motorgruppe.
Aktionen#
spin#
spin vorwärts oder rückwärts. Der Motor oder die Motorgruppe dreht sich so lange, bis eine andere Aktion ausgelöst wird, z. B. eine andere Drehrichtung oder ein Stopp.
Usage:
motor_1.spin(direction, velocity, units)
Parameter |
Beschreibung |
|---|---|
|
Die Drehrichtung des Motors oder der Motorgruppe: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Optional. Die Geschwindigkeitseinheit:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
spin_for#
spin_for lässt einen Motor oder eine Motorgruppe eine bestimmte Strecke drehen. Die Drehung bezieht sich auf die aktuelle Position des Motors bzw. der Motorgruppe. Das Projekt wartet, bis der Motor bzw. die Motorgruppe die Drehung abgeschlossen hat, bevor die nächste Codezeile ausgeführt wird.
Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)
Parameter |
Beschreibung |
|---|---|
|
Die Drehrichtung des Motors oder der Motorgruppe: |
|
Die Strecke, die der Motor oder die Motorgruppe zurücklegt. Dies kann eine ganze Zahl |
|
Optional. Die Entfernungseinheit: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Optional. Die Geschwindigkeitseinheit:
|
|
Optional.
|
# Spin the motor forward once, then reset
motor_1.spin_for(FORWARD, 90, DEGREES)
wait(1, SECONDS)
motor_1.spin_for(REVERSE, 90, DEGREES)
spin_to_position#
spin_to_position dreht einen Motor oder eine Motorgruppe in eine bestimmte Position.
Die Position eines Motors oder einer Motorgruppe gibt an, wie weit er sich gedreht hat, gemessen in DEGREES oder TURNS. Eine Umdrehung entspricht 360 Grad. Zu Beginn eines Projekts wird die Position des Motors oder der Motorgruppe auf 0 Grad eingestellt. Die Position kann auch mit der Methode set_position festgelegt werden.
Positionswerte sind absolut. Das bedeutet, dass die Drehrichtung von der aktuellen Position des Motors bzw. der Motorgruppe abhängt.
Wenn sich der Motor oder die Motorgruppe beispielsweise von 0 Grad auf eine Position von 720 Grad dreht, dreht er sich zwei Umdrehungen vorwärts. Dreht er sich anschließend auf eine Position von 360 Grad, dreht er sich eine Umdrehung rückwärts, da 360 kleiner als 720 ist.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
Parameter |
Beschreibung |
|---|---|
|
Der Positionswert, zu dem sich der Motor oder die Motorgruppe drehen soll. Dies kann eine ganze Zahl |
|
Die Positionseinheit: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Optional. Die Geschwindigkeitseinheit:
|
|
Optional.
|
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
stop#
stop stoppt einen Motor oder eine Motorgruppe am Drehen.
Usage:
motor_1.stop(mode)
Parameter |
Beschreibung |
|---|---|
|
Optional. So stoppt der Motor bzw. die Motorgruppe:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
Mutatoren#
set_position#
Die Position eines Motors oder einer Motorgruppe gibt an, wie weit er sich gedreht hat, gemessen in DEGREES oder TURNS. Eine Umdrehung entspricht 360 Grad. set_position wird die aktuelle Position des Motors oder der Motorgruppe auf einen neuen Wert gesetzt.
Wenn sich beispielsweise ein Motor oder eine Motorgruppe um 180 Grad gedreht hat, wird durch Einstellen der Position auf 0 Grad diese Position von 180 auf 0 Grad zurückgesetzt. Anschließend kann sich der Motor oder die Motorgruppe basierend auf diesem neuen Wert in verschiedene Positionen drehen.
Usage:
motor_1.set_position(position, units)
Parameter |
Beschreibung |
|---|---|
|
Der Positionswert, der für den Motor oder die Motorgruppe festgelegt werden soll. Dies kann eine ganze Zahl |
|
Optional. Die Positionseinheit: |
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
set_velocity#
Der Wert set_velocity gibt einem Motor oder einer Motorgruppe die Drehzahl vor. Ein höherer Prozentwert beschleunigt die Drehung, ein niedrigerer Prozentwert verlangsamt sie.
Jedes Projekt beginnt standardmäßig damit, dass jeder Motor bzw. jede Motorgruppe mit 50 % Drehzahl läuft.
Hinweis: Eine höhere Drehzahl lässt den Motor bzw. die Motorgruppe schneller rotieren, kann aber die Präzision verringern. Eine niedrigere Drehzahl lässt den Motor bzw. die Motorgruppe langsamer rotieren, kann aber die Präzision erhöhen.
Usage:
motor_1.set_velocity(velocity, units)
Parameter |
Beschreibung |
|---|---|
|
Die Drehzahl, mit der von 0 % bis 100 % gedreht werden soll, wenn |
|
Optional. Die Geschwindigkeitseinheit:
|
# Spin forward at the default velocity
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
set_stopping#
set_stopping legt fest, wie ein Motor oder eine Motorgruppe zum Stillstand kommt: durch Bremsen, Auslaufen oder Halten.
Usage:
motor_1.set_stopping(mode)
Parameter |
Beschreibung |
|---|---|
|
So stoppt der Motor bzw. die Motorgruppe:
|
Wird diese Methode nicht angewendet, verwendet der Motor beim Anhalten die Bremse BRAKE.
set_max_torque#
Das Drehmoment gibt an, wie stark ein Motor oder eine Motorengruppe beim Drehen drücken oder ziehen kann.
set_max_torque legt das maximale Drehmoment fest, das ein Motor oder eine Motorgruppe verwenden darf.
Ein höherer Prozentsatz ermöglicht es dem Motor oder der Motorgruppe, stärker zu drücken, beispielsweise beim Anheben eines schweren Gegenstands. Ein niedrigerer Prozentsatz begrenzt die maximale Schubkraft des Motors oder der Motorgruppe. Dies kann den Roboter schützen, falls der Motor oder die Motorgruppe blockiert oder an ihre maximale Bewegungsgrenze stößt.
Jedes Projekt beginnt standardmäßig damit, dass das Drehmoment jedes Motors bzw. jeder Motorgruppe auf 50 % eingestellt ist.
Usage:
motor_1.set_max_torque(value, units)
Parameter |
Beschreibung |
|---|---|
|
Das maximale Drehmoment, das der Motor oder die Motorgruppe verwenden kann. Dies kann eine ganze Zahl |
|
Optional. Drehmomenteinheit:
|
set_timeout#
set_timeout wird festgelegt, wie lange ein Motor oder eine Motorgruppe versucht, eine Bewegung abzuschließen. Gelingt dies nicht innerhalb dieser Zeit, wird der Versuch abgebrochen und die nächste Codezeile ausgeführt. Dadurch wird verhindert, dass der Motor oder die Motorgruppe bei einer Bewegung hängen bleibt.
Usage:
motor_1.set_timeout(value, units)
Parameter |
Beschreibung |
|---|---|
|
Die Zeitspanne, die der Motor oder die Motorgruppe versuchen kann, eine Bewegung abzuschließen. Dies kann eine positive ganze Zahl |
|
Optional. Zeiteinheit:
|
set_reversed#
set_reversed ändert, ob die Drehrichtung eines Motors umgekehrt wird. Diese Methode funktioniert genauso wie das Setzen des Parameters reverse auf True beim Erstellen eines Motor.
Hinweis: Diese Methode funktioniert nur mit einem einzelnen Motor, nicht jedoch mit einer Motorgruppe.
Usage:
motor_1.set_reversed(value)
Parameter |
Beschreibung |
|---|---|
|
Ob die Drehrichtung des Motors umgekehrt wird:
|
reset_position#
reset_position ändert die aktuelle Position des Motors oder der Motorgruppe auf 0.
Usage:
motor_1.reset_position()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
Getter#
is_done#
is_done gibt als booleschen Wert zurück, ob der Motor oder die Motorgruppe die Bewegung abgeschlossen hat. Dieser Wert kann verwendet werden, um den Zeitpunkt anderer Aktionen basierend auf der Motorbewegung zu steuern.
True— Der Motor bzw. die Motorgruppe hat ihre Bewegung beendet.False— Der Motor bzw. die Motorgruppe bewegt sich noch.
Diese Methode funktioniert zusammen mit den folgenden Bewegungsmethoden, die den Parameter wait haben: spin_for und spin_to_position.
Usage:
motor_1.is_done()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
if motor_1.is_done():
drivetrain.stop()
else:
drivetrain.drive(FORWARD)
is_spinning#
is_spinning is_spinning gibt als booleschen Wert zurück, ob sich der Motor oder die Motorgruppe dreht. Dieser Wert kann verwendet werden, um das Timing anderer Aktionen basierend auf der Motorbewegung zu steuern.
True— Der Motor bzw. die Motorgruppe dreht sich.False— Der Motor oder die Motorgruppe dreht sich nicht.
Diese Methode funktioniert zusammen mit den folgenden Bewegungsmethoden, die den Parameter wait haben: spin_for und spin_to_position.
Usage:
motor_1.is_spinning()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
if motor_1.is_spinning():
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
position#
Die Position eines Motors oder einer Motorgruppe gibt an, wie weit er sich gedreht hat, gemessen in DEGREES oder TURNS. Eine Umdrehung entspricht 360 Grad. position gibt die aktuelle Position des Motors oder der Motorgruppe zurück.
Zu Beginn eines Projekts wird die Position des Motors bzw. der Motorgruppe auf 0 Grad eingestellt. Dreht sich der Motor bzw. die Motorgruppe eine Umdrehung vorwärts, beträgt die Position 360 Grad bzw. eine Umdrehung. Dreht sich der Motor bzw. die Motorgruppe in die andere Richtung, ist die Position negativ.
Usage:
motor_1.position(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die Einheit soll die Motor- oder Motorgruppenposition in folgender Reihenfolge wiederherstellen: |
# Display the motor's position after spinning
brain.screen.print(motor_1.position())
brain.screen.next_row()
motor_1.spin(FORWARD)
wait(1, SECONDS)
brain.screen.print(motor_1.position())
motor_1.stop()
velocity#
velocity gibt an, wie schnell sich der Motor oder die Motorgruppe dreht, entweder als Prozentsatz von -100% bis 100% oder als Umdrehungen pro Minute von -127 U/min bis 127 U/min.
Ein positiver Wert bedeutet, dass sich der Motor oder die Motorgruppe vorwärts dreht. Ein negativer Wert bedeutet, dass sie sich rückwärts dreht.
Usage:
motor_1.velocity(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die zurückzugebende Geschwindigkeitseinheit:
|
current#
Der Wert current gibt an, wie viel Strom der Motor oder die Motorgruppe verbraucht, gemessen in Ampere von 0,0 bis 1,2 A. Stromstärke ist die Menge an Elektrizität, die durch den Motor oder die Motorgruppe fließt.
Ein höherer Stromwert bedeutet, dass der Motor oder die Motorgruppe mehr Strom verbraucht. Dies kann vorkommen, wenn der Motor oder die Motorgruppe etwas Schweres anhebt, gegen ein Hindernis drückt oder versucht, sich aus einer Blockade zu bewegen.
Dies kann genutzt werden, um zu überprüfen, ob der Motor oder die Motorgruppe während einer Bewegung überlastet ist. Bleibt der Stromfluss hoch, kann der Motor sich erwärmen oder weniger effizient arbeiten.
Usage:
motor_1.current(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die zurückzugebende Einheit:
|
power#
Die Anzeige power gibt an, wie viel Leistung der Motor oder die Motorgruppe verbraucht, gemessen in Watt von 0,0 bis 22,0 W. Die Anzeige „Power“ zeigt, wie schnell der Motor oder die Motorgruppe Energie verbraucht.
Ein höherer Leistungswert bedeutet, dass der Motor oder die Motorgruppe mehr Energie verbraucht. Dies kann vorkommen, wenn der Motor oder die Motorgruppe etwas Schweres anhebt, gegen ein Hindernis drückt oder versucht, sich aus einer Blockade zu bewegen.
Dies kann genutzt werden, um Bewegungen zu vergleichen oder zu überprüfen, ob der Motor oder die Motorgruppe überlastet ist. Bei anhaltend hoher Leistung kann der Motor wärmer werden oder Energie weniger effizient nutzen.
Usage:
motor_1.power(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die zurückzugebende Leistungseinheit:
|
torque#
Das Drehmoment gibt an, wie stark ein Motor oder eine Motorengruppe beim Drehen verdreht, drückt oder zieht.
torque gibt an, wie viel Drehmoment der Motor oder die Motorgruppe verwendet, gemessen in Inch-Pfund (InLb) von 0,0 bis 22,0 oder Newtonmeter (Nm) von 0,0 bis 2,1.
Ein höherer Drehmomentwert bedeutet, dass der Motor oder die Motorgruppe stärker drückt oder zieht. Dies kann vorkommen, wenn der Motor oder die Motorgruppe etwas Schweres anhebt, gegen ein Hindernis drückt oder versucht, sich aus einer Blockade zu befreien.
Dies kann genutzt werden, um zu überprüfen, ob der Motor oder die Motorgruppe Schwierigkeiten hat, oder um zu vergleichen, wie viel Kraftaufwand für verschiedene Bewegungen erforderlich ist.
Um das Drehmoment eines Motors oder einer Motorgruppe einzustellen, verwenden Sie set_max_torque.
Usage:
motor_1.torque(units)
Parameter |
Beschreibung |
|---|---|
|
Die zurückzugebende Drehmomenteinheit:
|
efficiency#
efficiency gibt an, wie effizient der Motor oder die Motorgruppe die Leistung nutzt, als Prozentsatz von 0% bis 100%.
Der Wirkungsgrad gibt an, wie viel der Leistung des Motors oder der Motorgruppe für die Bewegung genutzt wird. Ein höherer Wirkungsgrad bedeutet, dass mehr Leistung des Motors oder der Motorgruppe für die Bewegung verwendet wird. Ein niedriger Wirkungsgrad kann auftreten, wenn der Motor oder die Motorgruppe stark beansprucht wird, sich aber kaum bewegt, beispielsweise wenn sie blockiert ist oder gegen ein Hindernis stößt.
Dies kann genutzt werden, um Bewegungen zu vergleichen oder zu überprüfen, ob der Motor oder die Motorgruppe Energie verschwendet, anstatt sie für Bewegungen zu nutzen.
Usage:
motor_1.efficiency(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die zurückzugebende Effizienzeinheit:
|
temperature#
temperature gibt die Temperatur des Motors oder der Motorgruppe zurück.
Die Motortemperatur gibt an, wie warm der Motor bzw. die Motorgruppe ist. Eine höhere Temperatur bedeutet, dass sich der Motor bzw. die Motorgruppe während des Betriebs erwärmt. Um die volle Leistung zu gewährleisten, sollte der Motor unter 55 °C bleiben.
Wenn der Motor oder die Motorgruppe zu heiß wird, reduziert sie zum Selbstschutz ihren maximalen Strom. Bei 70 °C schaltet sich der Motor ab, bis er abgekühlt ist.
Dies kann verwendet werden, um zu überprüfen, ob der Motor oder die Motorgruppe bei wiederholten Bewegungen, langen Läufen oder beim Drücken gegen ein Objekt zu heiß wird.
Usage:
motor_1.temperature(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die zurückzugebende Temperatureinheit:
|
count#
count gibt die Anzahl der Motoren in einer Motorgruppe zurück.
Hinweis: Diese Methode funktioniert nur mit einer Motorgruppe.
Usage:
motor_group_1.count()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
get_timeout#
get_timeout gibt den aktuellen timeout des Motors oder der Motorgruppe in Millisekunden zurück.
Usage:
motor_1.get_timeout()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
Konstruktoren#
Konstruktoren werden verwendet, um manuell Motor und MotorGroup -Objekte außerhalb des Gerätefensters zu erstellen.
Motor#
Motor erzeugt einen Motor.
Usage:
Motor(port, gears, reverse)
Parameter |
Beschreibung |
|---|---|
|
Der Smart Port, an den der Motor angeschlossen ist, wird als |
|
Optional. Übersetzungsverhältnis des Motors:
|
|
Optional. Legt fest, ob die Drehrichtung des Motors umgekehrt wird:
|
# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)
"""
Create a motor with the following values:
- In Port 1
- 2:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_2_1, True)
MotorGroup#
MotorGroup erstellt eine Motorgruppe.
Usage:
MotorGroup(motors)
Parameter |
Beschreibung |
|---|---|
|
Die Namen der zuvor erstellten |
# Create the Motors
motor_1 = Motor(Ports.PORT1)
motor_2 = Motor(Ports.PORT2)
# Create a Motor Group
motor_group_1 = MotorGroup(motor_1, motor_2)