[ev3dev × Python] Steuerung mehrerer Motoren

Dieser Artikel richtet sich an alle, die mit ev3 in Python arbeiten möchten. Dieses Mal möchte ich mehrere Motoren steuern, um den Tank (Auto) anzutreiben.

Inhaltsverzeichnis

  1. Was ist vorzubereiten?
  2. Tank
  3. Lenkung
  4. Programmbeispiel
  5. Informationen zur Programmausführung

0. Was ist vorzubereiten?

◯ ev3 (Tank) ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ Material (Es wird empfohlen, fortzufahren, während Sie dies ansehen.)

1. Tank

1-0. Grundlegendes Tankprogramm (Dokument S.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’>)

** Punkt **: Geben Sie die Drehzahl jedes Motors ein, um die Fahrtrichtung zu bestimmen.

** Punkt **: Wenn mit MINDSTORMS programmiert, sieht es wie folgt aus. スクリーンショット 2020-06-16 10.42.35.png

2. Lenkung

2-0. Grundlegendes Lenkprogramm (Dokument S.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’>)

** Punkt **: Nur für Panzer (Autos). Bild in der Nähe des Betriebs.

** Punkt **: Der Biegungsgrad kann direkt durch einen Zahlenwert bestimmt werden.

** Punkt **: ** Lenkungsnummer **

0 <Lenkwert <= 100: Nach rechts drehen. Bei 100 drehen (sofort rechts abbiegen). Lenkwert = 0: Geradeaus fahren -100 <= Lenknummer <0: Nach links drehen. Bei -100 drehen (sofort links abbiegen)

** Punkt **: Wenn mit MINDSTORMS programmiert, sieht es wie folgt aus. スクリーンショット 2020-06-16 9.03.53.png

3. Programmbeispiel

3-0. Ein Programm, das den Lenkwert um 10 erhöht.

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()

** Punkt **: Erhöhen Sie i um 10 im Bereich von 0 <= i <101 Mit anderen Worten

  1. Runde (i = 0): Das Auto fährt geradeaus Zweite Schleife (i = 10): Das Auto biegt ein wenig nach rechts ab  :
  2. Schleife (i = 100): Das Auto dreht sich vor Ort im Uhrzeigersinn.

** Punkt **: Für Schleifen ist dieser Artikel leicht zu verstehen.

3-1. Ein Programm, das die Fahrtrichtung zufällig bestimmt

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()

** Punkt **: Bestimmen Sie die Fahrtrichtung alle 2 Sekunden nach dem Zufallsprinzip

Point : random.randint(min,max) Extrahieren Sie zufällig int-Werte (ganzzahlige Werte) aus dem angegebenen Bereich (min ~ max).

** Punkt **: Für zufällige Funktionen ist dieser Artikel leicht zu verstehen.

3-2. Ein Programm, das die Drehzahl des Motors anhand einer Liste ändert

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()

** Punkt **: Nehmen Sie die Zahlen vom Anfang der Liste und stellen Sie sie auf die Drehzahl jedes Motors ein.

Point : sleep() Funktion zum Warten auf die im Argument angegebene Anzahl von Sekunden

** Punkt **: Für die Liste ist dieser Artikel leicht zu verstehen.

3-3. Ein Programm, das die Drehzahl eines Motors durch Kombinieren einer Liste und einer Zufallsfunktion ändert.

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()

** Punkt **: Wählen Sie zufällig eine Zahl aus der Liste aus und stellen Sie sie 8 Mal auf die Drehzahl eines Motors (Port A) ein

Point : random.choice() Es nimmt ein Objekt mit mehreren Elementen wie einer Liste oder einer Zeichenfolge als Argument und gibt zufällig ein Element aus diesen aus (gibt es aus).

** Punkt **: Zufällig ist dieser Artikel ebenfalls leicht zu verstehen.

4. Informationen zur Programmausführung

Wenn Sie vergessen, wie es geht, [zuvor geschriebener Artikel](https://qiita.com/masterkeaton12/items/938457911b0f3f25e161#4%E6%96%B0%E8%A6%8F%E3%83%95%E3 Siehe% 82% A9% E3% 83% AB% E3% 83% 80% E3% 81% AE% E4% BD% 9C% E6% 88% 90)!

Schließlich

Danke fürs Lesen! !! Nächstes Mal werde ich über Displays, Sounds und Lichter schreiben!

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

[ev3dev × Python] Steuerung mehrerer Motoren
Installieren Sie mehrere Versionen von Python
[ev3dev × Python] Einzelmotorsteuerung
[ev3dev × Python] Anzeige, Sprache, LED-Steuerung
[Python] Kapitel 05-02 Steuerungssyntax (Kombination von Bedingungen)
[ev3dev × Python] SSH-Steuerung (Fernbedienung mit Tastatur)
Python-Grundlagen ①
Grundlagen von Python ①
Kopie von Python
Installieren Sie Python Control
Einführung von Python
[Python of Hikari-] Kapitel 05-06 Steuerungssyntax (Grundlagen der Einschlussnotation)
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
Lassen Sie uns EV3-Motoren und -Sensoren mit Python steuern
[Python] Operation der Aufzählung
Liste der Python-Module
Mehrfachvererbung von Klassen
[ev3dev × Python] Ultraschallsensor
[Python of Hikari-] Kapitel 05-08 Steuerungssyntax (während Anweisung - eine weitere iterative Syntax-)
Vereinheitlichung der Python-Umgebung
Kopie mehrerer Listen
Kopie der Python-Einstellungen
[Python] Erstellen Sie mehrere Verzeichnisse
Grundlagen der Python-Scraping-Grundlagen
[Python] Verhalten von Argmax
Verwendung von Python-Einheimischen ()
der Zen von Python
[ev3dev × Python] Berührungssensor
Installieren von Python 3.3 rc1
[ev3dev × Python] Kreiselsensor
Python-Steuerungssyntax (Denkmal)
# 4 [Python] Grundlagen der Funktionen
[Ev3dev] Lassen Sie uns den Mechanismus der LCD-Steuerung (Bildschirmsteuerung) verstehen
Grundkenntnisse in Python
Nüchterne Trivia von Python3
Zusammenfassung der Python-Argumente
[ev3dev × Python] Farbsensor
Grundlagen von Python: Ausgabe
[Python of Hikari-] Kapitel 05-05 Steuerungssyntax (für Anweisungs-Mehrfachschleifen-)
Installation von matplotlib (Python 3.3.2)
Anwendung von Python 3 vars
Verschiedene Verarbeitung von Python
Versionsverwaltung von Node, Ruby und Python mit anyenv
Verwenden mehrerer Versionen von Python unter Mac OS X (2) Verwendung
[Hikari-Python] Kapitel 05-10 Steuerungssyntax (Unterbrechung und Fortsetzung der iterativen Verarbeitung)
[Hikari-Python] Kapitel 05-04 Steuerungssyntax (für die Verwendung von Bereichsfunktionen durch Anweisungen)
[Python of Hikari-] Kapitel 05-07 Steuerungssyntax (bedingte Verzweigung der Einschlussnotation)
Summe mehrerer Numpy-Arrays (Summe)
[Python] Richtige Verwendung der Karte
Auf dem Weg zum Ruhestand von Python2
Zusammenfassung der Python-Dateivorgänge
[ev3dev × Python] Intelligente Blockschaltfläche
Zusammenfassung der Python3-Listenoperationen
Python - Schneller Start der Protokollierung
Empfehlung der binpacking Bibliothek von Python
[Python-Tutorial] Kontrollstruktur-Tool
Fangen Sie mehrere Arten von Ausnahmen ab
[Python] Wert des Funktionsobjekts (?)