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.
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.
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 |
|
Optionnel. Unité de vitesse :
|
# 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 |
|---|---|
|
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 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 |
|---|---|
|
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 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 |
|---|---|
|
Optionnel. Mode d’arrêt du moteur ou du groupe de moteurs :
|
# 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 |
|---|---|
|
La valeur de position à définir pour le moteur ou le groupe de moteurs. Cela peut être un entier |
|
Facultatif. L’unité de position : |
# 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 |
|---|---|
|
La vitesse de rotation du moteur ou du groupe de moteurs. |
|
Facultatif. Unité de vitesse :
|
# 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 d’arrêt du moteur ou du groupe de moteurs :
|
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 |
|---|---|
|
Couple maximal admissible pour le moteur ou le groupe de moteurs. |
|
Optionnel. Unité de couple :
|
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_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 :
|
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 |
|---|---|
|
En option. L’unité permettant de ramener la position du moteur ou du groupe de moteurs à : |
# 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 |
|---|---|
|
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 mesure à renvoyer :
|
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 |
|---|---|
|
Facultatif. Unité de puissance à renvoyer :
|
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 |
|---|---|
|
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(units)
Paramètres |
Description |
|---|---|
|
Facultatif. Unité de rendement à renvoyer :
|
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 |
|---|---|
|
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.
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 |
|---|---|
|
Le port intelligent auquel le moteur est connecté est écrit sous la forme |
|
Optionnel. Rapport de réduction du moteur :
|
|
Optionnel. Indique si le sens de rotation du moteur est inversé :
|
# 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 |
|---|---|
|
The names of previously created |
# 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)