Cet article s'adresse à tous ceux qui souhaitent travailler avec ev3 en Python. Cette fois, j'aimerais utiliser le clavier pour la télécommande. Plus précisément, c'est comme appuyer sur la touche w pour avancer.
◯ ev3 (réservoir) + moteur M ◯ PC (code VS) ◯ bluetooth ◯ microSD ◯ Material (Il est recommandé de continuer en regardant ceci.) ◯ Site de référence: SSH Control
1.SSH Control
sshcontrol.py
#!/usr/bin/env python3
#Importez uniquement ce dont vous avez besoin
import termios, tty, sys
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,OUTPUT_C,MoveTank,MediumMotor
#Génération d'instance
tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
m_c = MediumMotor(OUTPUT_C)
#Définir une fonction pour obtenir la touche enfoncée
def getch():
#Obtenir un descripteur de fichier d'entrée standard
fd = sys.stdin.fileno()
#Obtenir les attributs de terminal du descripteur de fichier
old_settings = termios.tcgetattr(fd)
#Évitez d'appuyer sur la touche Entrée
tty.setcbreak(fd)
#Recevoir les caractères tapés sur le clavier
ch = sys.stdin.read(1)
#Restaurer les attributs de terminal du descripteur de fichier
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
#ch(character =Dans ce cas, la touche enfoncée)rends le
return ch
#==============================================
#Définir la fonction qui entraîne le moteur M
def fire():
m_c.on(80)
#==============================================
#Définir une fonction pour que le réservoir avance
def forward():
tank_drive.on(80,80)
#==============================================
#Définir une fonction pour que le réservoir recule
def back():
tank_drive.on(-80,-80)
#==============================================
#Définir une fonction pour que le réservoir tourne à gauche
def left():
tank_drive.on(80,50)
#==============================================
#Définir une fonction pour que le réservoir tourne à droite
def right():
tank_drive.on(50,80)
#==============================================
#Définir une fonction qui arrête tous les moteurs
def stop():
tank_drive.stop()
m_c.stop()
#==============================================
#boucle infinie
while True:
#getch()Remplacez la valeur renvoyée par
k = getch()
#k(Touche enfoncée)Afficher
print(k)
#Déterminer le mouvement correspondant à la touche enfoncée
if k == 'w':
forward()
if k == 's':
back()
if k == 'd':
right()
if k == 'a':
left()
if k == 'f':
fire()
#Si la touche enfoncée est la touche d'espace
if k == ' ':
stop()
if k == 'q':
exit()
** Point **: Un programme qui acquiert la touche enfoncée et la commande à distance avec SSH
** Point **: exécution du programme
Cliquez avec le bouton droit sur ev3dev avec le voyant vert allumé et appuyez sur Ouvrir le terminal SSH.
Entrez ssh robot @ ev3dev.local
.
Un mot de passe vous sera demandé, alors entrez maker
.
Tapez pwd
pour voir le répertoire courant. (Localisation actuelle)
Utilisez cd directory
pour vous déplacer vers le répertoire où votre programme existe! (Le répertoire est un dossier)
Une fois déplacé, tapez nom du programme python3.py
et appuyez sur Entrée.
L'écran du bloc intelligent ne change pas, mais il peut être exécuté.
Je pense qu'il y avait beaucoup de mots que je n'ai pas compris cette fois, alors je vais les expliquer brièvement.
◯SSH : Un mécanisme pour se connecter à d'autres ordinateurs (principalement des serveurs) via un réseau et les faire fonctionner à distance. Lors de la communication, les informations traitées sont cryptées.
◯ ** module termios **: Interface de contrôle de terminal de bas niveau.
· ** Terminal **: La partie qui gère l'entrée et la sortie des informations. Un périphérique qui effectue une entrée / sortie et une communication avec l'ordinateur principal.
·interface Une partie commune qui relie différents types de choses.
◯ ** module tty **: Un ensemble de fonctions pratiques pour les opérations générales de contrôle du terminal.
・ ** tty **: Abréviation qui signifie n'importe quel terminal texte. Fait référence à ** émulateur de terminal ** etc. via un pseudo dispositif de terminal dans un système de fenêtre.
・ ** Terminal texte **: Dispositif d'entrée / sortie pour la saisie et l'affichage de texte (chaîne de caractères)
・ ** Émulateur de terminal **: Logiciel qui fonctionne comme un terminal.
· ** Les fonctions **: Une collection de fonctions
◯ ** Descripteur de fichier **: Descripteur de fichier, fd. Une marque attribuée au fichier (chemin d'accès) pour identifier le fichier
·Fichier : Que peut lire et écrire des données sous forme de chaîne d'octets
・ ** Chaîne d'octets **: Une chaîne d'octets est un ensemble de données dans lequel des données à 1 octet constituées d'un motif de bits arbitraire sont organisées sans format ni signification spécifiques tels que des caractères ou des nombres.
・ ** Motif de bits **: Une combinaison de bits «0» et «1», qui est la plus petite unité qu'un ordinateur peut gérer.
·Travail à temps partiel : Il est abrégé en «B», qui est une unité qui exprime la quantité d'informations sur un ordinateur. Un octet est composé de huit unités appelées bits qui représentent 0 ou 1. Il est utilisé pour la mémoire et la capacité du disque, le code d'instruction minimum pour les programmes, etc.
◯ ** module sys **: Module de gestion des informations sur les interpréteurs Python et l'environnement d'exécution
· ** module **: (Python) Un fichier qui résume le code.
・ ** Bibliothèque standard Python **: Une collection de modules. Officiel Tutoriel de la bibliothèque standard
・ ** Interprète **: Logiciel qui fonctionne en lisant le code source ligne par ligne et en le convertissant en instructions pouvant être exécutées par un ordinateur. La vitesse de traitement n'est pas rapide car le programme est traité ligne par ligne.
◯stdin : Entrée standard depuis le clavier. entrée standard. Vous pouvez recevoir des caractères saisis au clavier. fd = 0
◯fileno : = file-number = file.No 0,1,2.. Fonction pour obtenir le descripteur de fichier (fd) d'un objet fichier Renvoie un descripteur de fichier entier Cette fois, Objet fichier = caractères tapés sur le clavier
◯tcgetattr(fd) : Renvoie une liste contenant les attributs de terminal du descripteur de fichier fd.
・ Tc = ordinateur terminal = ordinateur terminal ・ Obtenir = obtenir ・ Attr = attribut = attribut
◯setbreak() : Vous permet de saisir des caractères sans appuyer sur la touche Entrée. Au contraire, sans cela, il n'est pas possible de saisir avec un seul caractère.
◯read() : Lire le fichier
◯termios.tcsetattr(fd, when, attributes) : Extrayez les attributs de terminal du descripteur de fichier fd des attributs et définissez-les. attributes (= attributes) est une liste renvoyée par tcgetattr (). L'argument quand détermine quand un attribut change: -TCSANOW effectue des changements immédiats. -TCSADRAIN effectue des modifications après avoir transféré toute la sortie actuellement en file d'attente. · TCSAFLUSH transfère toutes les sorties actuellement en file d'attente, ignore toutes les entrées en file d'attente, puis effectue des modifications.
Article de référence: Détecter les frappes en Python (sans Entrée) Qu'est-ce qu'une entrée standard / une sortie standard? Liste des commandes du terminal Mac (basique) TERMIOS
Merci pour la lecture! !!
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