[ev3dev × Python] Berührungssensor

Dieser Artikel richtet sich an alle, die mit ev3 in Python arbeiten möchten. Dieses Mal möchte ich verschiedene Operationen mit dem Berührungssensor ausführen.

Inhaltsverzeichnis

  1. Was ist vorzubereiten?
  2. Berühren Sie das Sensorprogramm

0. Was vorzubereiten?

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

1. Sensorprogramm berühren (Dokument S.33)

1-0. Programm zum Drücken des Berührungssensors

touchsensor00.py


#!/usr/bin/env python3
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1,INPUT_2
from ev3dev2.sound import Sound
from ev3dev2.led import Leds

ts_1 = TouchSensor(INPUT_1)
ts_2 = TouchSensor(INPUT_2)
snd = Sound()
led = Leds()

while True:
    if ts_1.is_pressed:
        snd.beep()
    if ts_2.is_pressed:
        led.set_color("LEFT","YELLOW")
        led.set_color("RIGHT","YELLOW")

Point : Ein Programm, das bei jedem Drücken des Berührungssensors (Port 1) einen Ton ausgibt und bei jedem Drücken des Berührungssensors (Port 2) gelb leuchtet.

Point : if Bedingung: Prozess 1 ** Wenn die Bedingung erfüllt ist, verarbeiten Sie 1 **

Point : is_pressed A boolean indicating whether the current touch sensor is being pressed.

** Punkt **: So funktioniert es im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 10.11.20.png

1-1. Programm "Wenn, wenn nicht"

touchsensor01.py


#!/usr/bin/env python3
from ev3dev2.motor import MediumMotor,OUTPUT_A
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1

M_A = MediumMotor(OUTPUT_A)
ts_1 = TouchSensor(INPUT_1)

while True:
    if ts_1.is_pressed:
        M_A.on(100)
    else:
        M_A.stop()

Point : Ein Programm, das den M-Motor dreht, wenn der Berührungssensor (Port 1) gedrückt wird, und stoppt, wenn er losgelassen wird.

Point : if Bedingung: Prozess 1 else: Prozess 2

** Wenn die Bedingung erfüllt ist, führen Sie Prozess 1 aus. Wenn falsch, Prozess 2 ** Programm

** Punkt **: So funktioniert es im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 10.14.50.png

1-2. Programme, die ~ ausführen, während die Taste nicht gedrückt wird

touchsensor02.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1
from ev3dev2.sound import Sound

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)
ts_1 = TouchSensor(INPUT_1)
snd = Sound()

while True:
    while not ts_1.is_pressed:
        steering_drive.on(0,SpeedPercent(40))
    snd.beep()
    steering_drive.on_for_seconds(0,SpeedPercent(-10),1)  
    steering_drive.on_for_seconds(100,SpeedPercent(40),2)  

** Punkt **: Ein Programm, das gerade läuft, beim Drücken des Berührungssensors ein Geräusch macht, sich ein wenig zurückbewegt und sich dann 2 Sekunden lang umdreht.

Point : while not ~: Prozess 1

** Setzen Sie Prozess 1 fort, ohne ~ ** Programm

1-3. Programm in Bezug auf Hin- und Herbewegung und langes Drücken

touchsensor03.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,MediumMotor
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1

M_A = MediumMotor(OUTPUT_A)
ts_1 = TouchSensor(INPUT_1)

while True:
    ts_1.wait_for_bump()
    M_A.on(50)
    ts_1.wait_for_bump()
    M_A.on(-50)

    if not ts_1.wait_for_bump(2000):
        exit()
    

** Punkt **: Ein Programm, das die Drehrichtung ändert, wenn der Berührungssensor gestoßen wird. Halten Sie die Taste mindestens 2 Sekunden lang gedrückt, um das Programm zu beenden.

wait_for_pressed(timeout_ms=None, sleep_ms=10) → Warten Sie, bis gedrückt wird. wait_for_released(timeout_ms=None, sleep_ms=10) → Warten Sie bis zur Freigabe. wait_for_bump(timeout_ms=None, sleep_ms=10) → Warten Sie, bis die Taste gedrückt wird (gedrückt und losgelassen). Das Zeitlimit vom Drücken bis zum Freigeben kann mit dem ersten Argument festgelegt werden

** Punkt **: wenn nicht ts_1.wait_for_bump (2000): Ungefähr. falls nicht Drücken Sie den Berührungssensor innerhalb von 2 Sekunden und lassen Sie ihn los:

= wenn Lassen Sie den Berührungssensor nicht innerhalb von 2 Sekunden nach dem Drücken los

= if Wenn Sie den Berührungssensor mindestens 2 Sekunden lang gedrückt halten

1-4. Programm, das ausgeführt werden soll, wenn gleichzeitig der Berührungssensor gedrückt wird

touchsensor04.py


#!/usr/bin/env python3
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1,INPUT_2
from ev3dev2.sound import Sound

ts_1 = TouchSensor(INPUT_1)
ts_2 = TouchSensor(INPUT_2)
snd = Sound()

while True:
    if ts_1.is_pressed and ts_2.is_pressed:
        snd.beep()

** Punkt **: Ein Programm, das ein Geräusch macht, wenn beide Berührungssensoren gleichzeitig gedrückt werden.

** Punkt **: Bedingter Ausdruck der if-Anweisung

◯ Wenn Bedingung 1 wahr ist ** und ** Bedingung 2 wahr ist, wird die Verarbeitung durchgeführt.

wenn Bedingung 1 und Bedingung 2: Prozess 1

◯ Bedingung 1 ist wahr ** oder ** Wenn Bedingung 2 wahr ist, wird die Verarbeitung durchgeführt.

wenn Bedingung 1 oder Bedingung 2: Prozess 1

◯ Prozess, wenn Bedingung 1 nicht erfüllt ist **

wenn nicht Bedingung 1: Prozess 1

** Punkt **: So funktioniert es im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 16.58.59.png

1-5 Programm zur Bedienung der Funksteuerung mit zwei Berührungssensoren ①

touchsensor05.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,LargeMotor
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1,INPUT_2

L_A = LargeMotor(OUTPUT_A)
L_B = LargeMotor(OUTPUT_B)
ts_1 = TouchSensor(INPUT_1)
ts_2 = TouchSensor(INPUT_2)

while True:
    if ts_1.is_pressed:
        L_A.on(50)
    else:
        L_A.stop()

    if ts_2.is_pressed:
        L_B.on(50)
    else:
        L_B.stop()

** Punkt **: Ein Programm, das den L-Motor (A) mit dem Berührungssensor (1) und den L-Motor (B) mit dem Berührungssensor (2) bewegt.

** Punkt **: So funktioniert es im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 16.59.05.png

1-6 Programm zur Bedienung der Funksteuerung mit zwei Berührungssensoren ②

touchsensor06.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1,INPUT_2

tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
ts_1 = TouchSensor(INPUT_1)
ts_2 = TouchSensor(INPUT_2)

while True:
    if ts_1.is_pressed:
        tank_drive.on(50,50)
    else:
        if ts_2.is_pressed:
            tank_drive.on(-50,-50)
        else:
            tank_drive.stop()

** Punkt **: Ein Programm, das sich mit dem Berührungssensor (1) vorwärts und mit dem Berührungssensor (2) rückwärts bewegt.

** Punkt **: So funktioniert es im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 16.58.41.png

1-7. Programm zur Bedienung der Funksteuerung mit zwei Berührungssensoren ③

touchsensor07.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.sensor import INPUT_1,INPUT_2

tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
ts_1 = TouchSensor(INPUT_1)
ts_2 = TouchSensor(INPUT_2)

while True:
    if ts_1.is_pressed:
        if ts_2.is_pressed:
            tank_drive.on(100,100)
        else:
            tank_drive.on(40,100)
    else:
        if ts_2.is_pressed:
            tank_drive.on(100,40)
        else:
            tank_drive.stop()

Point : Drücken Sie beide Berührungssensoren: vorwärts Drücken Sie nur den Berührungssensor 1: Gehen Sie nach links vorwärts Drücken Sie nur den Berührungssensor 2: Gehen Sie vorwärts nach rechts Drücken Sie nicht beide Berührungssensoren: Stopp

** Punkt **: Sie können den Biegungsgrad des Tanks einstellen, wenn nur ein Berührungssensor gedrückt wird.

** Punkt **: So funktioniert es im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 16.59.13.png

1-8. Manuelles und automatisches Schaltprogramm

touchsensor08.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from ev3dev2.sensor.lego import TouchSensor,UltrasonicSensor
from ev3dev2.sensor import INPUT_1,INPUT_2,INPUT_3


tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
us = UltrasonicSensor(INPUT_3)
ts_1 = TouchSensor(INPUT_1)
ts_2 = TouchSensor(INPUT_2)


while True:
    while us.distance_centimeters > 20:
        if ts_1.is_pressed:
            if ts_2.is_pressed:
                tank_drive.on(100,100)
            else:
                tank_drive.on(40,100)
        else:
            if ts_2.is_pressed:
                tank_drive.on(100,40)
            else:
                tank_drive.stop()
    while us.distance_centimeters < 30:
        tank_drive.on(-80,-80)

Point : Wenn sich keine Hindernisse näher als 20 cm befinden, können Sie den Funkcontroller manuell bedienen. Wenn das Hindernis jedoch näher als 20 cm ist, wird das Programm automatisch nach hinten verschoben, bis der Abstand zum Hindernis zur Vermeidung von Notfällen mehr als 30 cm beträgt.

** Punkt **: Dieser Mechanismus (gleicher Inhalt) im Vergleich zu Scratch ↓ スクリーンショット 2020-06-19 16.59.25.png

** Punkt **: ** Wiederholen bis ** und ** Wiederholen zwischen **

** Wiederholen bis **: Wiederholen, bis die Bedingung nicht mehr erfüllt ist ** Wiederholen, während ~ **: Wiederholen, während die Bedingung erfüllt ist

Schließlich

Danke fürs Lesen! !! Nächstes Mal möchte ich über Farbsensoren 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] Berührungssensor
[ev3dev × Python] Ultraschallsensor
[ev3dev × Python] Kreiselsensor
[ev3dev × Python] Farbsensor
Berühren Sie MySQL in Python 3
Python-Anfänger berührt Pytorch (3)
Python-Anfänger berührt Pytorch (1)
Python-Anfänger berührt Pytorch (2)
[ev3dev × Python] Aufbau einer ev3dev-Entwicklungsumgebung
[ev3dev × Python] Einzelmotorsteuerung
Berühren Sie Apache Beam mit Python
Berühren Sie Python-Objekte in Elixir
Ich habe versucht, Python zu berühren (Installation)
Python
[ev3dev × Python] Anzeige, Sprache, LED-Steuerung
Holen Sie sich Tastenanschläge von / dev / input (python evdev)
Berühren Sie einen virtuellen Roboter mit Peppers Python SDK
Ich habe versucht, Python zu berühren (grundlegende Syntax)
[ev3dev × Python] SSH-Steuerung (Fernbedienung mit Tastatur)
API-Erklärung zum Berühren von Mastodon aus Python
Berühren Sie AWS mit Serverless Framework und Python