Moteur et groupe moteur#

Introduction#

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.

Chaque moteur ou groupe de moteurs est configuré dans la fenêtre « Périphériques ». Selon la version, les noms des moteurs et des groupes de moteurs peuvent varier. Cette page utilise motor_1 et « motor_group_1 comme exemples. Remplacez-les par les noms que vous avez configurés.

Un moteur VEX EXP montrant le sens de rotation avant indiqué par un signe plus et une flèche indiquant qu'il tourne vers la gauche, ou dans le sens antihoraire. Un moteur VEX EXP montrant le sens inverse indiqué par un signe moins et une flèche indiquant qu'il tourne vers la droite, ou dans le sens horaire.

Par défaut, la position FORWARD fait tourner le moteur dans le sens antihoraire, et la position REVERSE le fait tourner dans le sens horaire. Si le sens de rotation d’un moteur est inversé, ces directions seront inversées.

Il existe plusieurs façons de programmer les moteurs et les groupes de moteurs. Vous trouverez ci-dessous la liste de toutes les méthodes de programmation des moteurs et des groupes de moteurs :

Actions — Arrêter et faire tourner les moteurs et les groupes de moteurs.

  • spin — Fait tourner un moteur ou un groupe de moteurs en avant ou en arrière indéfiniment.

  • spin_for — Fait tourner un moteur ou un groupe de moteurs sur une distance spécifique.

  • spin_to_position — Fait tourner un moteur ou un groupe de moteurs vers une position spécifique.

  • stop — Empêche un moteur ou un groupe de moteurs de tourner.

Modificateurs — Ajustez les paramètres du moteur et du groupe de moteurs.

  • set_position — Modifie la position actuelle du moteur ou du groupe de moteurs à une nouvelle valeur.

  • set_velocity — Indique à un moteur ou à un groupe de moteurs à quelle vitesse tourner.

  • set_stopping — Définit comment un moteur ou un groupe de moteurs s’arrêtera de bouger : en freinant, en roue libre ou en maintenant.

  • set_max_torque — Définit la force avec laquelle un moteur ou un groupe de moteurs est autorisé à pousser pendant la rotation.

  • set_timeout — Définit le temps pendant lequel un moteur ou un groupe de moteurs essaiera de terminer un mouvement.

  • set_reversed — Modifie si le sens de rotation d’un moteur est inversé.

  • reset_position — Change la position actuelle d’un moteur ou d’un groupe de moteurs à 0.

Getters — Vérifiez l’état du moteur et du groupe de moteurs.

  • is_done — Renvoie si le moteur ou le groupe de moteurs a fini de bouger, sous forme de valeur booléenne.

  • is_spinning — Renvoie si le moteur ou le groupe de moteurs tourne, sous forme de valeur booléenne.

  • position — Renvoie la position actuelle du moteur ou du groupe de moteurs.

  • velocity — Renvoie la vitesse de rotation du moteur ou du groupe de moteurs.

  • current — Renvoie la quantité de courant électrique utilisée par le moteur ou le groupe de moteurs.

  • power — Renvoie la puissance utilisée par le moteur ou le groupe de moteurs.

  • torque — Renvoie le couple utilisé par le moteur ou le groupe de moteurs.

  • efficiency — Renvoie l’efficacité avec laquelle le moteur ou le groupe de moteurs utilise la puissance.

  • temperature — Renvoie la température du moteur ou du groupe de moteurs.

  • count — Renvoie le nombre de moteurs dans un groupe de moteurs.

  • get_timeout — Renvoie la durée de temporisation actuelle du moteur ou du groupe de moteurs.

Constructeurs — Initialisation et configuration manuelles des moteurs et des groupes de moteurs.

Actes#

spin#

La commande spin fait tourner un moteur ou un groupe de moteurs en marche avant ou arrière en continu. Le moteur ou le groupe de moteurs continuera de tourner jusqu’à ce qu’une autre action lui soit donnée, comme un changement de sens de rotation ou un arrêt.

Usage:
motor_1.spin(direction, velocity, units)

Paramètres

Description

direction

Sens de rotation du moteur ou du groupe de moteurs : FORWARD ou REVERSE.

velocity

Facultatif. La vitesse de rotation, de 0 % à 100 %, lors de l’utilisation PERCENTIl peut s’agir d’un integer ou d’un nombre décimal (float).
Si VOLT est utilisé en units, cette valeur peut être comprise entre -12,0 et 12,0. Une valeur négative fait tourner dans le sens inverse de celui indiqué direction.

units

Optionnel. Unité de vitesse :

  • PERCENT
  • RPM (par défaut) — Rotations par minute
  • VelocityUnits.DPS — Degrés par seconde
  • VOLT — Tension

# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

La fonction spin_for fait tourner un moteur ou un groupe de moteurs sur une distance spécifique. Cette distance est relative à la position actuelle du moteur ou du groupe de moteurs. Le programme attendra la fin de la rotation avant d’exécuter la ligne de code suivante.

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

Paramètres

Description

direction

Sens de rotation du moteur ou du groupe de moteurs : FORWARD ou REVERSE.

angle

La distance parcourue par le moteur ou le groupe de moteurs. Cela peut être un entier integer ou un nombre décimal (float).

units

Facultatif. L’unité de distance : DEGREES (par défaut) ou TURNS.

velocity

Facultatif. La vitesse de rotation de 0 % à 100 % lors de l’utilisation PERCENTCela peut être un entier integer ou un nombre décimal (float).

units_v

Facultatif. Unité de vitesse :

  • PERCENT
  • RPM (par défaut) — Rotations par minute

wait

Facultatif.

  • wait=True (par défaut) — Le projet attend que le moteur ou le groupe de moteurs ait fini de tourner avant d’exécuter la ligne de code suivante.
  • wait=False — La ligne de code suivante s’exécute immédiatement.

# 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 fait tourner un moteur ou un groupe de moteurs vers une position spécifique.

A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. At the beginning of a project, the motor or motor group position is set to 0 degrees. The motor or motor group position can also be set using the set_position method.

Les valeurs de position sont absolues. Cela signifie que le sens de rotation dépend de la position actuelle du moteur ou du groupe de moteurs.

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

Paramètres

Description

rotation

La valeur de position vers laquelle le moteur ou le groupe de moteurs tournera. Cela peut être un entier integer ou un nombre décimal (float).

units

L’unité de position : DEGREES ou TURNS.

velocity

Facultatif. La vitesse de rotation de 0 % à 100 % lors de l’utilisation PERCENTCela peut être un entier integer ou un nombre décimal (float).

units_v

Facultatif. Unité de vitesse :

  • PERCENT
  • RPM — Rotations par minute
  • VelocityUnits.DPS — Degrés par seconde

wait

Facultatif.

  • wait=True (par défaut) — Le projet attend que le moteur ou le groupe de moteurs ait fini de tourner avant d’exécuter la ligne de code suivante.
  • wait=False — La ligne de code suivante s’exécute immédiatement.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

stop#

stop empêche un moteur ou un groupe de moteurs de tourner.

Usage:
motor_1.stop(mode)

Paramètres

Description

mode

Optionnel. Mode d’arrêt du moteur ou du groupe de moteurs :

  • BRAKE — Arrêt immédiat.
  • COAST — Ralentissement jusqu’à l’arrêt.
  • HOLD — Arrêt immédiat et maintien de la position du moteur.

# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

Mutateurs#

set_position#

A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. set_position changes the motor or motor group’s current position to a new value.

Par exemple, si un moteur ou un groupe de moteurs a pivoté de 180 degrés, le fait de le positionner à 0 degré le ramènera à sa position initiale. Le moteur ou le groupe de moteurs pourra ensuite pivoter selon cette nouvelle valeur.

Usage:
motor_1.set_position(position, units)

Paramètres

Description

position

La valeur de position à définir pour le moteur ou le groupe de moteurs. Cela peut être un entier integer ou un nombre décimal (float).

units

Facultatif. L’unité de position : DEGREES (par défaut) ou TURNS.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

set_velocity#

La valeur set_velocity indique à un moteur ou à un groupe de moteurs sa vitesse de rotation. Un pourcentage plus élevé augmente la vitesse de rotation, tandis qu’un pourcentage plus faible la diminue.

Chaque projet commence par une vitesse de rotation de 50 % pour chaque moteur ou groupe de moteurs, par défaut.

Remarque : Une vitesse plus élevée fait tourner le moteur ou le groupe de moteurs plus vite, mais la précision peut être moindre. Une vitesse plus faible fait tourner le moteur ou le groupe de moteurs plus lentement, mais la précision peut être meilleure.

Usage:
motor_1.set_velocity(velocity, units)

Paramètres

Description

velocity

La vitesse de rotation du moteur ou du groupe de moteurs. PERCENT utilise des valeurs de 0 % à 100 %. RPM utilise des valeurs de 0 à 127. Cela peut être un integer ou un nombre décimal (float).

units

Facultatif. Unité de vitesse :

  • PERCENT
  • RPM (par défaut) — Rotations par minute
  • VelocityUnits.DPS — Degrés par seconde

# 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 définit comment un moteur ou un groupe de moteurs arrêtera de bouger : en freinant, en roue libre ou en maintenant.

Usage:
motor_1.set_stopping(mode)

Paramètres

Description

mode

Mode d’arrêt du moteur ou du groupe de moteurs :

  • BRAKE — Arrêt immédiat.
  • COAST — Ralentissement jusqu’à l’arrêt.
  • HOLD — Arrêt immédiat et maintien de la position du moteur.

set_max_torque#

Le couple indique la force avec laquelle un moteur ou un groupe de moteurs peut pousser ou tirer pendant sa rotation.

set_max_torque définit le couple maximal qu’un moteur ou un groupe de moteurs est autorisé à utiliser.

Un pourcentage plus élevé permet au moteur ou au groupe de moteurs de fournir une force plus importante, par exemple pour soulever un objet lourd. Un pourcentage plus faible limite la force que le moteur ou le groupe de moteurs peut fournir. Cela permet de protéger le robot si le moteur ou le groupe de moteurs se bloque ou atteint sa limite de course.

Chaque projet commence avec le couple de chaque moteur ou groupe de moteurs réglé par défaut à 50 %.

Usage:
motor_1.set_max_torque(value, units)

Paramètres

Description

value

Couple maximal admissible pour le moteur ou le groupe de moteurs. PERCENT utilise des entiers de 0 % à 100 %. TorqueUnits.NM, utilisez un nombre flottant de 0,0 à 2,1 (newtons-mètres). TorqueUnits.INLB, utilisez un nombre flottant de 0,0 à 22,0 (pouces-livres).

units

Optionnel. Unité de couple :

  • PERCENT
  • TorqueUnits.NM (par défaut) — Newton-mètres
  • TorqueUnits.INLB — Pouce-livre
  • CurrentUnits.AMP

set_timeout#

La valeur set_timeout définit le délai maximal pendant lequel un moteur ou un groupe de moteurs tente de terminer un mouvement. Si le moteur ou le groupe de moteurs ne parvient pas à terminer dans ce délai, il interrompt ses tentatives et passe à la ligne de code suivante. Ceci évite le blocage du moteur ou du groupe de moteurs lors d’un mouvement.

Usage:
motor_1.set_timeout(value, units)

Paramètres

Description

value

Le temps pendant lequel le moteur ou le groupe de moteurs peut tenter de terminer un mouvement. Cela peut être un entier positif integer ou un nombre décimal (float).

units

Facultatif. Unité de temps :

  • SECONDS
  • MSEC (par défaut) — Millisecondes

set_reversed#

set_reversed modifie si le sens de rotation d’un moteur est inversé. Cette méthode fonctionne de la même manière que de définir le paramètre reverse sur True lors de la construction d’un Motor.

Note: This method will only work with a motor and not a motor group.

Usage:
motor_1.set_reversed(value)

Paramètres

Description

value

Inversion du sens de rotation du moteur :

  • True — Inverse le sens de rotation du moteur.
  • False — Rétablit le sens de rotation par défaut du moteur.

reset_position#

La commande reset_position modifie la position actuelle du moteur ou du groupe de moteurs à 0.

Usage:
motor_1.reset_position()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

Getters#

is_done#

La fonction is_done renvoie is_done indiquant si le moteur ou le groupe de moteurs a terminé son mouvement (valeur booléenne). Cette information peut servir à synchroniser d’autres actions en fonction du mouvement du moteur.

  • True — Le moteur ou le groupe de moteurs a terminé son mouvement.

  • False — Le moteur ou le groupe de moteurs est toujours en mouvement.

Cette méthode fonctionne en collaboration avec les méthodes Motion suivantes qui ont le paramètre wait : spin_for et spin_to_position.

Usage:
motor_1.is_done()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# 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#

La fonction is_spinning (valeur booléenne is_spinning indique si le moteur ou le groupe de moteurs est en rotation. Cette information peut être utilisée pour contrôler la synchronisation d’autres actions en fonction du mouvement du moteur.

  • True — Le moteur ou le groupe de moteurs tourne.

  • False — Le moteur ou le groupe moteur ne tourne pas.

Cette méthode fonctionne en collaboration avec les méthodes Motion suivantes qui ont le paramètre wait : spin_for et spin_to_position.

Usage:
motor_1.is_spinning()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# 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#

A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. position returns the motor or motor group’s current position.

Au début d’un projet, la position du moteur ou du groupe de moteurs est initialement fixée à 0 degré. Si le moteur ou le groupe de moteurs effectue une rotation complète dans un sens, sa position sera de 360 ​​degrés, soit un tour. S’il effectue une rotation dans l’autre sens, sa position sera négative.

Usage:
motor_1.position(units)

Paramètres

Description

units

En option. L’unité permettant de ramener la position du moteur ou du groupe de moteurs à : DEGREES (par défaut) ou TURNS.

# 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#

La vitesse velocity renvoie la vitesse de rotation du moteur ou du groupe de moteurs, en pourcentage de -100 % à 100 % ou en tours par minute de -127 tr/min à 127 tr/min.

Une valeur positive indique que le moteur ou le groupe de moteurs tourne dans le sens horaire. Une valeur négative indique qu’il tourne dans le sens antihoraire.

Usage:
motor_1.velocity(units)

Paramètres

Description

units

Facultatif. Unité de vitesse à renvoyer :

  • PERCENT
  • RPM (par défaut) — Tours par minute
  • VelocityUnits.DPS — Degrés par seconde

current#

La fonction current renvoie la quantité de courant électrique utilisée par le moteur ou le groupe de moteurs, mesurée en ampères de 0,0 à 1,2 A. Le courant est la quantité d’électricité qui traverse le moteur ou le groupe de moteurs.

Une intensité plus élevée signifie que le moteur ou le groupe de moteurs consomme davantage de courant électrique. Cela peut se produire lorsque le moteur ou le groupe de moteurs soulève une charge lourde, exerce une pression sur un objet ou tente de se dégager après un blocage.

Ce dispositif permet de vérifier si le moteur ou le groupe de moteurs peine lors d’un mouvement. Si le courant reste élevé, le moteur risque de chauffer ou de consommer moins d’énergie.

Usage:
motor_1.current(units)

Paramètres

Description

units

Facultatif. Unité de mesure à renvoyer :

  • CurrentUnits.AMP (par défaut) — Ampères

power#

La puissance power indique la puissance utilisée par le moteur ou le groupe de moteurs, mesurée en watts (de 0,0 à 11,0 W). La puissance indique la vitesse à laquelle le moteur ou le groupe de moteurs utilise l’énergie.

Une valeur de puissance plus élevée signifie que le moteur ou le groupe de moteurs consomme de l’énergie plus rapidement. Cela peut se produire lorsque le moteur ou le groupe de moteurs soulève une charge lourde, exerce une pression sur un objet ou tente de se dégager après un blocage.

On peut utiliser cette fonction pour comparer les mouvements ou vérifier si le moteur ou le groupe de moteurs peine. Si la puissance reste élevée, le moteur risque de chauffer ou de consommer moins d’énergie.

Usage:
motor_1.power(units)

Paramètres

Description

units

Facultatif. Unité de puissance à renvoyer :

  • PowerUnits.WATT (par défaut) — Watt

torque#

Le couple indique la force avec laquelle un moteur ou un groupe de moteurs se tord, pousse ou tire pendant sa rotation.

torque renvoie la quantité de couple utilisée par le moteur ou le groupe de moteurs, mesurée en pouces-livres (InLb) de 0,0 à 22,0 ou en newtons-mètres (Nm) de 0,0 à 2,1.

Une valeur de couple plus élevée signifie que le moteur ou le groupe de moteurs exerce une force de poussée ou de traction plus importante. Cela peut se produire lorsque le moteur ou le groupe de moteurs soulève une charge lourde, exerce une pression sur un objet ou tente de se dégager d’un blocage.

Cela peut servir à vérifier si le moteur ou le groupe de moteurs peine ou à comparer la force de poussée nécessaire pour différents mouvements.

Pour régler le couple d’un moteur ou d’un groupe de moteurs, utilisez set_max_torque.

Usage:
motor_1.torque(units)

Paramètres

Description

units

Unité de couple à renvoyer :

  • TorqueUnits.NM (par défaut) — Newton-mètres
  • TorqueUnits.INLB — Pouce-livre

efficiency#

efficiency indique l’efficacité avec laquelle le moteur ou le groupe de moteurs utilise la puissance, en pourcentage de 0 % à 100 %.

Le rendement indique la part de la puissance du moteur ou du groupe de moteurs réellement utilisée pour le mouvement. Un rendement élevé signifie qu’une plus grande partie de la puissance est mise à contribution. Un rendement faible peut s’expliquer par un effort important du moteur ou du groupe de moteurs, mais un faible déplacement, par exemple s’il est bloqué ou s’il appuie sur un obstacle.

Cela peut servir à comparer des mouvements ou à vérifier si le moteur ou le groupe de moteurs gaspille de l’énergie au lieu de l’utiliser pour le mouvement.

Usage:
motor_1.efficiency(units)

Paramètres

Description

units

Facultatif. Unité de rendement à renvoyer :

  • PERCENT (par défaut)

temperature#

La fonction temperature renvoie la température du moteur ou du groupe de moteurs.

La température du moteur indique son niveau de chaleur. Une température plus élevée signifie que le moteur ou le groupe de moteurs chauffe pendant son fonctionnement. Pour un fonctionnement optimal, le moteur doit rester en dessous de 55 °C.

Si le moteur ou le groupe de moteurs surchauffe, il réduira son courant maximal pour se protéger. À 70 °C, le moteur s’arrêtera jusqu’à son refroidissement.

Cela peut servir à vérifier si le moteur ou le groupe de moteurs chauffe excessivement lors de mouvements répétés, de longs fonctionnements ou lorsqu’il exerce une pression contre un objet.

Usage:
motor_1.temperature(units)

Paramètres

Description

units

Facultatif. Unité de température à renvoyer :

  • TemperatureUnits.CELSIUS (par défaut)
  • TemperatureUnits.FAHRENHEIT
  • PERCENT

count#

count renvoie le nombre de moteurs dans un groupe de moteurs.

Note: This method will only work with a motor group.

Usage:
motor_group_1.count()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

get_timeout#

get_timeout renvoie le timeout actuel du moteur ou du groupe de moteurs en millisecondes.

Usage:
motor_1.get_timeout()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

Constructeurs#

Les constructeurs sont utilisés pour créer manuellement des objets Motor et MotorGroup en dehors de la fenêtre Devices.

Motor#

Motor crée un moteur.

Usage:
Motor(port, gears, reverse)

Paramètre

Description

port

Le port intelligent auquel le moteur est connecté est écrit sous la forme Ports.PORTx, où x est le numéro du port.

gears

Optionnel. Rapport de réduction du moteur :

  • GearSetting.RATIO_18_1 (par défaut) — Rapport 18:1
  • GearSetting.RATIO_36_1 — Rapport 36:
  • GearSetting.RATIO_6_1 — Rapport 6:1

reverse

Optionnel. Indique si le sens de rotation du moteur est inversé :

  • True — Fait tourner FORWARD dans le sens horaire.
  • FORWARD (par défaut) — Fait tourner False dans le sens antihoraire.

# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)

"""
Create a motor with the following values:
- In Port 1
- 36:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_36_1, True)

MotorGroup#

MotorGroup crée un groupe de moteurs.

Usage:
MotorGroup(motors)

Paramètre

Description

motors

The names of previously created Motor objects to put in the motor group, separated by commas (,). Up to 12 Motor objects can be added to the group.

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