[ev3dev × Python] Capteur tactile

Cet article s'adresse à tous ceux qui souhaitent travailler avec ev3 en Python. Cette fois, je souhaite effectuer diverses opérations à l'aide du capteur tactile.

table des matières

  1. Quoi préparer
  2. Programme de capteur tactile

0. Quoi préparer

◯ ev3 (réservoir) et capteur tactile ◯ PC (code VS) ◯ bluetooth ◯ microSD ◯ Material (Il est recommandé de continuer en regardant ceci.)

1. Programme du capteur tactile (Document p.33)

1-0. Programme pour appuyer sur le capteur tactile

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 : Un programme qui émet un son chaque fois que le capteur tactile (port 1) est enfoncé et le voyant devient jaune chaque fois que le capteur tactile (port 2) est enfoncé.

Point : ʻSi condition: Processus 1` ** Si la condition est vraie, traiter 1 **

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

** Point **: Voici comment cela fonctionne par rapport à scratch ↓ スクリーンショット 2020-06-19 10.11.20.png

1-1. Programmez "Si, sinon"

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 : Un programme qui fait tourner le moteur M lorsque le capteur tactile (port 1) est enfoncé et s'arrête lorsqu'il est relâché.

Point : ʻSi condition: Processus 1 else: Processus 2`

** Si la condition est vraie, effectuez le processus 1, Si faux, traiter 2 ** Programme

** Point **: Voici comment cela fonctionne par rapport à scratch ↓ スクリーンショット 2020-06-19 10.14.50.png

1-2. Programmes qui font ~ lorsque le bouton n'est pas enfoncé

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)  

** Point **: Un programme qui va droit, émet un son lorsque le capteur tactile est enfoncé, recule un peu, puis se retourne pendant 2 secondes.

Point : while not ~: Processus 1

** Continuez le processus 1 sans faire ~ ** Programme

1-3. Programme lié au mouvement alternatif et à la pression longue

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

** Point **: programme qui change le sens de rotation lorsque le capteur tactile est heurté. Appuyez et maintenez pendant 2 secondes ou plus pour terminer le programme.

wait_for_pressed(timeout_ms=None, sleep_ms=10) → Attendez jusqu'à ce que vous appuyiez sur. wait_for_released(timeout_ms=None, sleep_ms=10) → Attendez d'être libéré. wait_for_bump(timeout_ms=None, sleep_ms=10) → Attendez que le bouton soit heurté (enfoncé et relâché). Le délai entre le pressage et le relâchement peut être défini avec le premier argument

** Point **: sinon ts_1.wait_for_bump (2000): À propos. sinon Appuyez et relâchez le capteur tactile dans les 2 secondes:

= si Ne relâchez pas le capteur tactile dans les 2 secondes après avoir appuyé dessus

= si Si vous maintenez enfoncé le capteur tactile pendant 2 secondes ou plus

1-4. Programme à faire lorsque le capteur tactile est enfoncé en même temps

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

** Point **: Un programme qui émet un son lorsque les deux capteurs tactiles sont enfoncés en même temps.

** Point **: expression conditionnelle de l'instruction if

◯ Lorsque la condition 1 est vraie ** et ** la condition 2 est vraie, le traitement est effectué.

ʻSi la condition 1 et la condition 2: Processus 1`

◯ La condition 1 est vraie ** ou ** Lorsque la condition 2 est vraie, le traitement est effectué.

ʻSi la condition 1 ou la condition 2: Processus 1`

◯ Processus lorsque la condition 1 n'est pas vraie **

Si ce n'est pas la condition 1: Processus 1

** Point **: Voici comment cela fonctionne par rapport à scratch ↓ スクリーンショット 2020-06-19 16.58.59.png

1-5. Programme pour faire fonctionner le contrôleur radio avec deux capteurs tactiles ①

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

** Point **: Un programme qui utilise le capteur tactile (1) pour déplacer le moteur L (A) et le capteur tactile (2) pour déplacer le moteur L (B).

** Point **: Voici comment cela fonctionne par rapport à scratch ↓ スクリーンショット 2020-06-19 16.59.05.png

1-6. Programme pour faire fonctionner le contrôleur radio avec deux capteurs tactiles ②

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

** Point **: programme qui avance avec le capteur tactile (1) et recule avec le capteur tactile (2).

** Point **: Voici comment cela fonctionne par rapport à scratch ↓ スクリーンショット 2020-06-19 16.58.41.png

1-7. Programme pour faire fonctionner le contrôleur radio avec deux capteurs tactiles ③

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 : Appuyez sur les deux capteurs tactiles: vers l'avant Appuyer uniquement sur le capteur tactile 1: aller vers l'avant Appuyez uniquement sur le capteur tactile 2: avancez vers la droite N'appuyez pas sur les deux capteurs tactiles: arrêtez

** Point **: Vous pouvez régler le degré de courbure du réservoir lorsqu'une seule touche tactile est enfoncée.

** Point **: Voici comment cela fonctionne par rapport à scratch ↓ スクリーンショット 2020-06-19 16.59.13.png

1-8. Programme de commutation manuel et automatique

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 : Lorsqu'il n'y a pas d'obstacles à moins de 20 cm, vous pouvez utiliser manuellement le contrôleur radio. Cependant, si l'obstacle est à moins de 20 cm, il s'agit d'un programme qui s'échappe automatiquement en arrière jusqu'à ce que la distance à l'obstacle soit supérieure à 30 cm pour éviter une urgence.

** Point **: Ce mécanisme (même contenu) par rapport à scratch ↓ スクリーンショット 2020-06-19 16.59.25.png

** Point **: ** Répéter jusqu'à ** et ** Répéter entre **

** Répéter jusqu'à **: Répéter jusqu'à ce que la condition ne soit plus vraie ** Répéter pendant ~ **: Répéter tant que la condition est vraie

finalement

Merci pour la lecture! !! La prochaine fois, j'aimerais écrire sur les capteurs de couleur!

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

[ev3dev × Python] Capteur tactile
[ev3dev × Python] Capteur à ultrasons
[ev3dev × Python] Capteur gyroscopique
[ev3dev × Python] Capteur de couleur
Touchez MySQL depuis Python 3
Python débutant touche Pytorch (3)
Python débutant touche Pytorch (1)
Python débutant touche Pytorch (2)
[ev3dev × Python] Construction de l'environnement de développement ev3dev
[ev3dev × Python] Commande de moteur unique
Touchez Apache Beam avec Python
Toucher les objets Python d'Elixir
J'ai essayé de toucher Python (installation)
Python
[ev3dev × Python] Affichage, voix, contrôle LED
Récupérer les frappes de / dev / input (python evdev)
Touchez des robots virtuels avec le SDK Python de Pepper
J'ai essayé de toucher Python (syntaxe de base)
[ev3dev × Python] Contrôle SSH (opération à distance avec clavier)
Explication API pour toucher mastodonte de python
Touchez AWS avec Serverless Framework et Python