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.
◯ ev3 (Tank) und Berührungssensor ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ Material (Es wird empfohlen, fortzufahren, während Sie dies ansehen.)
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 ↓
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 ↓
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
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
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 ↓
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 ↓
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 ↓
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 ↓
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 ↓
** 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
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