Dieser Artikel richtet sich an alle, die mit ev3 in Python arbeiten möchten. Dieses Mal möchte ich die Tastatur zur Fernbedienung verwenden. Insbesondere ist es so, als würde man die Taste w drücken, um vorwärts zu kommen.
◯ ev3 (Tank) + M Motor ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ Material (Es wird empfohlen, fortzufahren, während Sie dies ansehen.) ◯ Referenzseite: SSH Control
1.SSH Control
sshcontrol.py
#!/usr/bin/env python3
#Importieren Sie nur das, was Sie brauchen
import termios, tty, sys
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,OUTPUT_C,MoveTank,MediumMotor
#Instanzgenerierung
tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
m_c = MediumMotor(OUTPUT_C)
#Definieren Sie eine Funktion, um die gedrückte Taste zu erhalten
def getch():
#Holen Sie sich den Standard-Deskriptor für Eingabedateien
fd = sys.stdin.fileno()
#Abrufen der Terminalattribute des Dateideskriptors
old_settings = termios.tcgetattr(fd)
#Machen Sie es unnötig, die Eingabetaste zu drücken
tty.setcbreak(fd)
#Empfangen Sie Zeichen, die auf der Tastatur eingegeben wurden
ch = sys.stdin.read(1)
#Stellen Sie die Terminalattribute des Dateideskriptors wieder her
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
#ch(character =In diesem Fall die gedrückte Taste)Gib es zurück
return ch
#==============================================
#Definieren Sie die Funktion, die den M-Motor antreibt
def fire():
m_c.on(80)
#==============================================
#Definieren Sie eine Funktion für den Tank, um sich vorwärts zu bewegen
def forward():
tank_drive.on(80,80)
#==============================================
#Definieren Sie eine Funktion für den Tank, um sich rückwärts zu bewegen
def back():
tank_drive.on(-80,-80)
#==============================================
#Definieren Sie eine Funktion für den Tank, um nach links abzubiegen
def left():
tank_drive.on(80,50)
#==============================================
#Definieren Sie eine Funktion für den Tank, um nach rechts abzubiegen
def right():
tank_drive.on(50,80)
#==============================================
#Definieren Sie eine Funktion, die alle Motoren stoppt
def stop():
tank_drive.stop()
m_c.stop()
#==============================================
#Endlosschleife
while True:
#getch()Ersetzen Sie den zurückgegebenen Wert durch
k = getch()
#k(Taste gedrückt)Anzeigen
print(k)
#Bestimmen Sie die Bewegung, die der gedrückten Taste entspricht
if k == 'w':
forward()
if k == 's':
back()
if k == 'd':
right()
if k == 'a':
left()
if k == 'f':
fire()
#Wenn die gedrückte Taste die Leertaste ist
if k == ' ':
stop()
if k == 'q':
exit()
** Punkt **: Ein Programm, das die gedrückte Taste erfasst und mit SSH fernbedient
** Punkt **: Programmausführung
Klicken Sie mit grünem Licht mit der rechten Maustaste auf ev3dev und drücken Sie Open SSH Terminal.
Geben Sie "ssh robot @ ev3dev.local" ein.
Sie werden nach einem Passwort gefragt, geben Sie also "maker" ein.
Geben Sie "pwd" ein, um das aktuelle Verzeichnis anzuzeigen. (Aktueller Aufenthaltsort)
Wechseln Sie mit cd directory
in das Verzeichnis, in dem Ihr Programm existiert! (Verzeichnis ist ein Ordner)
Geben Sie nach dem Verschieben "python3 program name.py" ein und drücken Sie die Eingabetaste.
Der Bildschirm des intelligenten Blocks ändert sich nicht, kann aber ausgeführt werden.
Ich denke, es gab viele Wörter, die ich dieses Mal nicht verstanden habe, deshalb werde ich sie kurz erklären.
◯SSH : Ein Mechanismus, um über ein Netzwerk eine Verbindung zu anderen Computern (hauptsächlich Servern) herzustellen und diese remote zu betreiben. Während der Kommunikation werden die verarbeiteten Informationen verschlüsselt.
◯ ** Termios-Modul **: Low Level Terminal Control Interface.
· ** Terminal **: Der Teil, der für die Eingabe und den Empfang von Informationen verantwortlich ist. Ein Gerät, das die Eingabe / Ausgabe und Kommunikation mit dem Hauptcomputer ausführt.
·Schnittstelle Ein gemeinsamer Teil, der verschiedene Arten von Dingen verbindet.
◯ ** tty Modul **: Eine Reihe praktischer Funktionen für allgemeine Terminalsteuerungsvorgänge.
・ ** tty **: Abkürzung, die ein beliebiges Textterminal bedeutet. Bezieht sich auf ** Terminalemulator ** usw. über ein Pseudoendgerät in einem Fenstersystem.
・ ** Textterminal **: Eingabe- / Ausgabegerät zur Eingabe und Anzeige von Text (Zeichenkette)
· ** Terminal-Emulator **: Software, die als Terminal funktioniert.
・ ** Funktionen **: Eine Sammlung von Funktionen
◯ ** Dateideskriptor **: Dateideskriptor, fd. Eine der Datei zugewiesene Markierung (Pfad zu) zur Identifizierung der Datei
·Datei : Was kann Daten als Byte-String lesen und schreiben
・ ** Byte-Zeichenfolge **: Eine Bytezeichenfolge ist ein Datensatz, in dem 1-Byte-Daten, die aus einem beliebigen Bitmuster bestehen, ohne ein bestimmtes Format oder eine bestimmte Bedeutung wie Zeichen oder Zahlen angeordnet sind.
· ** Bitmuster **: Eine Kombination aus "0" - und "1" -Bits. Dies ist die kleinste Einheit, die ein Computer verarbeiten kann.
·Teilzeitstelle : Es wird mit "B" abgekürzt. Dies ist eine Einheit, die die Informationsmenge auf einem Computer ausdrückt. Ein Byte besteht aus acht Einheiten, die als Bits bezeichnet werden und 0 oder 1 darstellen. Es wird für Speicher- und Festplattenkapazität, Mindestanweisungscode für Programme usw. verwendet.
◯ ** sys Modul **: Modul zur Verarbeitung von Informationen zu Python-Interpreten und zur Ausführungsumgebung
· ** Modul **: (Python) Eine Datei, die Code zusammenfasst.
・ ** Python-Standardbibliothek **: Eine Sammlung von Modulen. Offiziell Standard Library Tutorial
· ** Dolmetscher **: Software, die funktioniert, während der Quellcode Zeile für Zeile gelesen und in Anweisungen konvertiert wird, die vom Computer ausgeführt werden können. Die Verarbeitungsgeschwindigkeit ist nicht schnell, da das Programm zeilenweise verarbeitet wird.
◯stdin : Standardeingabe über die Tastatur. Standardeingabe. Sie können auf der Tastatur eingegebene Zeichen empfangen. fd = 0
◯fileno : = file-number = file.No 0,1,2.. Funktion zum Abrufen des Dateideskriptors (fd) eines Dateiobjekts Gibt einen Integer-Dateideskriptor zurück Diesmal, Dateiobjekt = auf der Tastatur eingegebene Zeichen
◯tcgetattr(fd) : Gibt eine Liste zurück, die die Terminalattribute des Dateideskriptors fd enthält.
・ Tc = Endcomputer = Endcomputer ・ Get = get ・ Attr = Attribut = Attribut
◯setbreak() : Ermöglicht die Eingabe von Zeichen ohne Drücken der Eingabetaste. Im Gegenteil, ohne dies ist es nicht möglich, mit einem Zeichen einzugeben.
◯read() : Datei lesen
◯termios.tcsetattr(fd, when, attributes) : Extrahieren Sie die Terminalattribute des Dateideskriptors fd aus den Attributen und legen Sie sie fest. Attribute (= Attribute) ist eine Liste, die tcgetattr () zurückgibt. Das Argument wann bestimmt, wann sich ein Attribut ändert: -TCSANOW nimmt sofort Änderungen vor. -TCSADRAIN nimmt Änderungen vor, nachdem alle aktuell in der Warteschlange befindlichen Ausgaben übertragen wurden. -TCSAFLUSH überträgt alle aktuell in die Warteschlange gestellten Ausgaben, ignoriert alle in die Warteschlange gestellten Eingaben und nimmt dann Änderungen vor.
Referenzartikel: Tastenanschläge in Python erkennen (ohne Eingabe) Was ist Standardeingabe / Standardausgabe? Mac Terminal-Befehlsliste (Basic) TERMIOS
Danke fürs Lesen! !!
Ich möchte einen besseren Artikel machen ◯ Das ist leichter zu verstehen ◯ Das ist schwer zu verstehen ◯ Das ist falsch ◯ Ich möchte, dass Sie hier mehr erklären Wir freuen uns über Ihre Meinungen und Vorschläge.
Recommended Posts