Moteur#
Introduction#
Motors and motor groups control how parts of a robot move. A Motor controls one configured IQ Smart Motor, while a MotorGroup controls multiple configured IQ 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 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.
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écifiée.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_velocity— Indique à un moteur ou à un groupe de moteurs à quelle vitesse tourner.set_max_torque— Définit la force avec laquelle un moteur ou un groupe de moteurs est autorisé à pousser pendant la rotation.set_position— Modifie la position actuelle du moteur ou du groupe de moteurs à une nouvelle valeur.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_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.
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.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.direction— Renvoie le sens de rotation du moteur ou du groupe de moteurs.power— Renvoie la puissance utilisée par le moteur ou le groupe de moteurs.torque— Renvoie la quantité de couple utilisée 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.
Motor— Crée un moteur.MotorGroup— Crée un groupe 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 |
|---|---|
|
Sens de rotation du moteur ou du groupe de moteurs : |
|
Facultatif. La vitesse de rotation de 0 % à 100 % lors de l’utilisation |
|
Facultatif. Unité de vitesse :
|
# Spin the motor forward, 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 |
|---|---|
|
Sens de rotation du moteur ou du groupe de moteurs : |
|
La distance parcourue par le moteur ou le groupe de moteurs. Cela peut être un entier |
|
Facultatif. L’unité de distance : |
|
Facultatif. La vitesse de rotation de 0 % à 100 % lors de l’utilisation |
|
Facultatif. Unité de vitesse :
|
|
Facultatif.
|
# Spin the motor forward, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)
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.
Par exemple, si le moteur ou le groupe de moteurs démarre à 0 degré et atteint une position de 720 degrés, il effectuera deux tours dans le sens horaire. S’il atteint ensuite une position de 360 degrés, il effectuera un tour dans le sens antihoraire, car 360 est inférieur à 720.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
Paramètres |
Description |
|---|---|
|
La valeur de position vers laquelle le moteur ou le groupe de moteurs tournera. Cela peut être un entier |
|
L’unité de position : |
|
Facultatif. La vitesse de rotation de 0 % à 100 % lors de l’utilisation |
|
Facultatif. Unité de vitesse :
|
|
Facultatif.
|
# Spin the motor forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)
stop#
stop empêche un moteur ou un groupe de moteurs de tourner.
Usage:
motor_1.stop(mode)
Paramètres |
Description |
|---|---|
|
Optionnel. Mode d’arrêt du moteur ou du groupe de moteurs :
|
# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)
Mutateurs#
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 |
|---|---|
|
La vitesse de rotation de 0 % à 100 % lors de l’utilisation |
|
Facultatif. Unité de vitesse :
|
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)
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 |
|---|---|
|
Le couple maximal que le moteur ou le groupe de moteurs peut utiliser. Cela peut être un entier |
|
Unité de couple :
|
# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)
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 |
|---|---|
|
La valeur de position à définir pour le moteur ou le groupe de moteurs. Cela peut être un entier |
|
L’unité de position : |
# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)
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 d’arrêt du moteur ou du groupe de moteurs :
|
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()
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 |
|---|---|
|
Le temps pendant lequel le moteur ou le groupe de moteurs peut tenter de terminer un mouvement. Cela peut être un entier positif |
|
Facultatif. Unité de temps :
|
# Set a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)
# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)
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 |
|---|---|
|
Inversion du sens de rotation du moteur :
|
# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)
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. |
# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()
# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)
Getters#
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 |
|---|---|
|
En option. L’unité permettant de ramener la position du moteur ou du groupe de moteurs à : |
# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())
velocity#
La vitesse velocity indique la vitesse de rotation du moteur ou du groupe de moteurs.
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 |
|---|---|
|
Facultatif. Unité de vitesse à renvoyer :
|
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 |
|---|---|
|
Facultatif. Unité de courant à renvoyer :
|
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. |
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. |
direction#
direction renvoie le sens de rotation actuel d’un moteur ou d’un groupe de moteurs.
FORWARDREVERSE
Usage:
motor_1.direction()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
power#
La puissance power le moteur ou le groupe de moteurs en watts. La puissance représente la vitesse à laquelle le moteur ou le groupe de moteurs consomme de 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()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
torque#
Le couple indique la force avec laquelle un moteur ou un groupe de moteurs se tord, pousse ou tire pendant sa rotation.
La valeur torque du couple indique la quantité de couple utilisée par le moteur ou le groupe de moteurs.
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 |
|---|---|
|
Unité de couple à renvoyer :
|
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()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
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 motopropulseur chauffe pendant son fonctionnement. Pour un fonctionnement optimal, le moteur doit maintenir sa température en dessous de 55 degrés Celsius.
Si le moteur ou le groupe motopropulseur surchauffe, il réduira son courant maximal pour se protéger. À 70 degrés Celsius, 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 |
|---|---|
|
Facultatif. Unité de température à renvoyer :
|
count#
count renvoie le nombre de moteurs dans un groupe de moteurs.
Note: This method will only work with a motor group and not a motor.
Usage:
motor_group_1.count()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
get_timeout#
get_timeout renvoie le délai d’attente actuel du moteur ou du groupe de moteurs en millisecondes.
Note: This method will only work with a motor and not a motor group.
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_1 = Motor(smartport, gears, reverse)
Paramètre |
Description |
|---|---|
|
Le port intelligent auquel le moteur est connecté est écrit sous la forme |
|
Optionnel. Rapport de transmission du moteur :
|
|
Optionnel. Indique si le sens de rotation du moteur est inversé :
|
# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)
Motor Group#
MotorGroup crée un groupe de moteurs.
Usage:
motor_group_1 = MotorGroup(motors)
Paramètre |
Description |
|---|---|
|
The names of previously created |
# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)
# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)