[ev3dev × Python] Contrôle de plusieurs moteurs

Cet article s'adresse à tous ceux qui souhaitent travailler avec ev3 en Python. Cette fois, je voudrais contrôler plusieurs moteurs pour faire fonctionner le réservoir (voiture).

table des matières

  1. Quoi préparer
  2. Réservoir
  3. Direction
  4. Exemple de programme
  5. À propos de l'exécution du programme

0. Quoi préparer

◯ ev3 (réservoir) ◯ PC (code VS) ◯ bluetooth ◯ microSD ◯ Material (Il est recommandé de continuer en regardant ceci.)

1. Réservoir

1-0. Programme de base du réservoir (Document p.26)

tank00.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_B, OUTPUT_C, MoveTank

tank_drive = MoveTank(OUTPUT_B,OUTPUT_C)

tank_drive.on_for_rotations(80,-30,6)

Point : class ev3dev2.motor.MoveTank(left_motor_port, right_motor_port, desc=None, motor_class=<class ’ev3dev2.motor.LargeMotor’>)

** Point **: Entrez la vitesse de chaque moteur pour déterminer le sens de déplacement.

** Point **: Lorsqu'il est programmé avec MINDSTORMS, cela ressemble à ce qui suit. スクリーンショット 2020-06-16 10.42.35.png

2. Direction

2-0. Programme de pilotage de base (Document p.29)

steering00.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveSteering, SpeedPercent

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)

steering_drive.on_for_rotations(-10,SpeedPercent(75),5)

Point : class ev3dev2.motor.MoveSteering(left_motor_port, right_motor_port, desc=None, motor_class=<class ’ev3dev2.motor.LargeMotor’>)

** Point **: Pour les citernes (voitures) uniquement. Image proche pour manipuler l'opération.

** Point **: Le degré de flexion peut être directement déterminé par une valeur numérique.

** Point **: ** Numéro de direction **

0 <Valeur de direction <= 100: tourner vers la droite. Tourner à 100 (tourner à droite sur place). Valeur de direction = 0: aller tout droit -100 <= Numéro de direction <0: tourner vers la gauche. Tourner à -100 (tourner à gauche sur place)

** Point **: Lorsqu'il est programmé avec MINDSTORMS, cela ressemble à ce qui suit. スクリーンショット 2020-06-16 9.03.53.png

3. Exemple de programme

3-0. Un programme qui augmente la valeur de direction de 10.

example00.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)

for i in range(0,101,10):
    steering_drive.on_for_seconds(i,SpeedPercent(75),1)
steering_drive.stop()

** Point **: Augmentez i de 10 dans la plage de 0 <= i <101 En d'autres termes 1ère boucle (i = 0): la voiture va tout droit Deuxième boucle (i = 10): la voiture tourne un peu à droite  : 11ème boucle (i = 100): La voiture tourne sur place dans le sens des aiguilles d'une montre.

** Point **: Pour les boucles, cet article est facile à comprendre.

3-1. Un programme qui détermine aléatoirement le sens de la marche

example01.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent
import random

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)

for i in range(10):
    num = random.randint(-100,100)
    print(num)
    steering_drive.on_for_seconds(num,SpeedPercent(75),2)
steering_drive.stop()

** Point **: déterminez aléatoirement la direction du déplacement toutes les 2 secondes

Point : random.randint(min,max) Extrayez au hasard les valeurs int (valeurs entières) de la plage spécifiée (min ~ max).

** Point **: Pour les fonctions aléatoires, cet article est facile à comprendre.

3-2. Un programme qui modifie la vitesse de rotation du moteur à l'aide d'une liste

example02.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from time import sleep

tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
speed_list = [-90,30,-10,80,10]

for i in speed_list:
    sleep(1)
    tank_drive.on_for_rotations(i,i,2)
tank_drive.stop()

** Point **: prenez les nombres du haut de la liste et réglez-les sur la vitesse de chaque moteur.

Point : sleep() Fonction pour attendre le nombre de secondes spécifié par l'argument

** Point **: Pour la liste, cet article est facile à comprendre.

3-3 Un programme qui change la vitesse de rotation d'un moteur en combinant une liste et une fonction aléatoire.

example03.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from time import sleep
import random

tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
speed_list = [-90,30,-10,80,0]

for i in speed_list:
    sleep(1)
    num = random.choice(speed_list)
    tank_drive.on_for_rotations(num,0,2)
tank_drive.stop()

** Point **: choisissez au hasard un nombre dans la liste et réglez-le 8 fois sur la vitesse d'un moteur (port A)

Point : random.choice() Il prend un objet avec plusieurs éléments tels qu'une liste ou une chaîne de caractères comme argument, et renvoie (produit) un élément au hasard parmi eux.

** Point **: Pour le hasard, cet article est également facile à comprendre.

4. À propos de l'exécution du programme

Si vous oubliez comment faire, [article précédemment écrit](https://qiita.com/masterkeaton12/items/938457911b0f3f25e161#4%E6%96%B0%E8%A6%8F%E3%83%95%E3 Voir% 82% A9% E3% 83% AB% E3% 83% 80% E3% 81% AE% E4% BD% 9C% E6% 88% 90)!

finalement

Merci pour la lecture! !! La prochaine fois, j'écrirai sur les écrans, les sons et les lumières!

Je veux faire un meilleur article ◯ C'est plus facile à comprendre ◯ C'est difficile à comprendre ◯ C'est faux ◯ Je veux que vous expliquiez plus ici Nous apprécions vos opinions et suggestions.

Recommended Posts

[ev3dev × Python] Contrôle de plusieurs moteurs
Installer plusieurs versions de Python
[ev3dev × Python] Commande de moteur unique
[ev3dev × Python] Affichage, voix, contrôle LED
[Python] Chapitre 05-02 Syntaxe de contrôle (combinaison de conditions)
[ev3dev × Python] Contrôle SSH (opération à distance avec clavier)
Les bases de Python ①
Bases de python ①
Copie de python
Installer le contrôle Python
Introduction de Python
[Python of Hikari-] Chapitre 05-06 Syntaxe de contrôle (base de la notation d'inclusion)
Utiliser plusieurs versions de l'environnement python avec pyenv
Contrôlons les moteurs et capteurs EV3 avec Python
[Python] Opération d'énumération
Liste des modules python
Héritage multiple de classes
[ev3dev × Python] Capteur à ultrasons
[Python of Hikari-] Chapitre 05-08 Syntaxe de contrôle (tandis que l'instruction-une autre syntaxe itérative-)
Unification de l'environnement Python
Copie de plusieurs listes
Copie des préférences python
[Python] Créer plusieurs répertoires
Principes de base du grattage Python
[python] comportement d'argmax
Utilisation des locaux Python ()
le zen de Python
[ev3dev × Python] Capteur tactile
Installation de Python 3.3 rc1
[ev3dev × Python] Capteur gyroscopique
Syntaxe de contrôle Python (mémoire)
# 4 [python] Bases des fonctions
[Ev3dev] Comprenons le mécanisme de contrôle LCD (écran)
Connaissance de base de Python
Anecdotes sobres de python3
Résumé des arguments Python
[ev3dev × Python] Capteur de couleur
Bases de python: sortie
[Python of Hikari-] Chapitre 05-05 Syntaxe de contrôle (pour instructions-boucles multiples-)
Installation de matplotlib (Python 3.3.2)
Application de Python 3 vars
Divers traitements de Python
Gestion des versions de Node, Ruby et Python avec anyenv
Utilisation de plusieurs versions de Python sur Mac OS X (2) Utilisation
[Hikari-Python] Chapitre 05-10 Syntaxe de contrôle (interruption et poursuite du traitement itératif)
[Hikari-Python] Chapitre 05-04 Syntaxe de contrôle (pour l'utilisation des instructions de la fonction range-)
[Python of Hikari-] Chapitre 05-07 Syntaxe de contrôle (branchement conditionnel de la notation d'inclusion)
Somme de plusieurs tableaux numpy (somme)
[Python] Utilisation correcte de la carte
Vers la retraite de Python2
résumé lié à l'opération de fichier python
[ev3dev × Python] Bouton de blocage intelligent
Résumé des opérations de liste Python3
Python - Démarrage rapide de la journalisation
Recommandation de la bibliothèque binpacking de python
[Tutoriel Python] Outil de structure de contrôle
Attrapez plusieurs types d'exceptions
[python] Valeur de l'objet fonction (?)