[ev3dev × Python] Bouton de blocage intelligent

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

table des matières

  1. Quoi préparer
  2. Programme de bouton de bloc intelligent

0. Quoi préparer

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

1. Programme de bouton de blocage intelligent (Document p.42)

1-0. Un programme qui démarre lorsqu'un bouton spécifique est enfoncé

button00.py


#!/usr/bin/env python3
from ev3dev2.button import Button
from ev3dev2.sound import Sound

btn = Button()
snd = Sound()

while True:
    if btn.left:
        snd.beep()

** Point **: Un programme qui émet un son chaque fois que le bouton gauche est enfoncé

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

** Point **: type de bouton ・ Haut: bouton supérieur ・ Bas: bouton inférieur ・ Droite: bouton droit ・ Gauche: bouton gauche ・ Entrée: bouton central ・ Retour arrière: bouton supérieur gauche

1-1. Un programme qui démarre lorsque vous appuyez sur n'importe quel bouton

button01.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent
from ev3dev2.button import Button
from ev3dev2.sound import Sound

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)
btn = Button()
snd = Sound()

snd.beep()
while True:
    steering_drive.on(0,SpeedPercent(50))
    
    if btn.any():
        steering_drive.stop()
        exit()

** Point **: Un programme qui s'arrête de s'exécuter et arrête le programme lorsqu'une touche est enfoncée

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

1-2. Programmes dont le contenu de traitement diffère selon que vous appuyez ou non sur la touche ①

button02.py


#!/usr/bin/env python3
from ev3dev2.button import Button
from ev3dev2.sound import Sound
from ev3dev2.display import Display

btn = Button()
snd = Sound()
dsp = Display()

while True:
    dsp.update()
    
    if btn.any():
        dsp.clear()
        snd.beep()
    else:
        dsp.text_pixels('push the button!',True,0,52,font = 'charB' + '18')

** Point **: Lorsque vous appuyez sur n'importe quel bouton, vous entendrez un son, sinon vous verrez un message à l'écran indiquant que vous devez appuyer sur le bouton.

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

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

Point : clear() Réinitialiser l'affichage de l'écran update() Reflète l'affichage de sortie à l'écran. Sans cette fonction, il ne peut pas du tout être affiché à l'écran.

Point : text_pixels(text, clear_screen=True, x=0, y=0, text_color=’black’, font=None) Le texte commence aux coordonnées en pixels (x, y). L'écran de ev3 mesure 178x128 pixels, • Le coin supérieur gauche de l'écran est (0, 0) • Le centre de l'écran est (89, 64)

Point : font↓ fonts.png

1-3. Programmes dont le contenu de traitement diffère selon que la touche est enfoncée ou non ②

button03.py


#!/usr/bin/env python3
from ev3dev2.button import Button
from ev3dev2.sound import Sound
from ev3dev2.display import Display

btn = Button()
snd = Sound()
dsp = Display()

while True:
    dsp.update()
    
    if btn.any():
        dsp.clear()
        button_name = btn.buttons_pressed
        dsp.text_pixels(str(button_name) + ' is pressed!',True,0,52,font = 'charB' + '10')
        snd.beep()
    else:
        dsp.text_pixels('push the button!',True,0,52,font = 'charB' + '18')

** Point **: Lorsque vous appuyez sur n'importe quel bouton, vous entendrez un son et le bouton appuyé sera affiché, et si vous n'appuyez pas dessus, le message «Veuillez appuyer sur le bouton» s'affichera à l'écran.

Point : buttons_pressed Renvoie une liste des noms des boutons sur lesquels vous appuyez

Point : str() Renvoie l'argument (liste dans ce cas) sous forme de caractère

ev3dev-2020-06-18-10-55-19.png

ev3dev-2020-06-18-10-51-08.png

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

button04.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent
from ev3dev2.button import Button
from ev3dev2.sound import Sound

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)
btn = Button()
snd = Sound()

snd.beep()
while not btn.any():
    steering_drive.on(100,SpeedPercent(40))
snd.beep()
exit()   

** Point **: Un programme qui continue de tourner sur place jusqu'à ce que vous appuyiez sur n'importe quel bouton.

Point : while not ~: Processus 1

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

Point : exit() Fin du programme

1 à 5. Un programme qui attend que le bouton soit enfoncé / relâché / heurté.

button05.py


#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent
from ev3dev2.button import Button
from ev3dev2.sound import Sound

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)
btn = Button()
snd = Sound()

btn.wait_for_bump('enter')
steering_drive.on_for_degrees(0,SpeedPercent(60),1080)
snd.beep()
exit()   

** Point **: Un programme qui attend jusqu'à ce que vous appuyiez sur le bouton central et s'exécute lorsque vous appuyez dessus.

Point : wait_for_bump(buttons, timeout_ms=None) → Attendez que le bouton soit heurté (enfoncé et relâché). Un délai entre la pression et la libération peut être défini avec le deuxième argument wait_for_pressed(buttons, timeout_ms=None) → Attendez jusqu'à ce que vous appuyiez sur. wait_for_released(buttons, timeout_ms=None) → Attendez d'être libéré.

Point : exit() Fin du programme

1-6. Un programme qui attend que les boutons soient enfoncés en même temps

button06.py


#!/usr/bin/env python3
from ev3dev2.button import Button
from ev3dev2.sound import Sound

btn = Button()
snd = Sound()

while True:
    btn.wait_for_pressed(['right','left','down'])
    snd.beep()

    if btn.up:
        exit()
  

** Point **: Un programme qui émet un son lorsque les boutons droit et gauche sont enfoncés en même temps. Si vous appuyez sur le bouton ci-dessus, le programme se terminera.

Point : 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é). Un délai entre la pression et la libération peut être défini avec le premier argument

Point : Puisque vous pouvez faire les boutons sur lesquels vous voulez appuyer en même temps que les éléments de la liste, Si vous voulez attendre d'appuyer sur trois en même temps btn.wait_for_pressed['left','right','down']

finalement

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

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] Bouton de blocage intelligent
[ev3dev × Python] Capteur à ultrasons
[ev3dev × Python] Capteur tactile
[ev3dev × Python] Capteur gyroscopique
[ev3dev × Python] Capteur de couleur
[ev3dev × Python] Construction de l'environnement de développement ev3dev
[ev3dev × Python] Commande de moteur unique
[Python] La pierre d'achoppement de l'importation
[ev3dev × Python] Affichage, voix, contrôle LED