[ev3dev × Python] Intelligente Blockschaltfläche

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

Inhaltsverzeichnis

  1. Was ist vorzubereiten?
  2. Intelligentes Blocktastenprogramm

0. Was ist vorzubereiten?

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

1. Intelligentes Blocktastenprogramm (Dokument S.42)

1-0. Ein Programm, das startet, wenn eine bestimmte Taste gedrückt wird

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

** Punkt **: Ein Programm, das bei jedem Drücken der linken Taste einen Ton ausgibt

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

** Punkt **: Schaltflächentyp ・ Nach oben: Obere Taste ・ Nach unten: Untere Taste ・ Rechts: Rechte Taste ・ Links: Linke Taste ・ Enter: Center-Taste ・ Rücktaste: Schaltfläche oben links

1-1. Ein Programm, das gestartet wird, wenn Sie eine beliebige Taste drücken

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

** Punkt **: Ein Programm, das nicht mehr ausgeführt wird und das Programm stoppt, wenn eine Taste gedrückt wird

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

1-2. Programme, deren Verarbeitungsinhalt unterschiedlich ist, je nachdem, ob die Taste gedrückt wird oder nicht ①

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

** Punkt **: Wenn Sie eine beliebige Taste drücken, hören Sie einen Ton. Andernfalls wird auf dem Bildschirm eine Meldung angezeigt, dass Sie die Taste drücken sollten.

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

Point : clear() Setzen Sie die Bildschirmanzeige zurück update() Reflektieren Sie die Unoutput-Anzeige auf dem Bildschirm. Ohne diese Funktion kann es überhaupt nicht auf dem Bildschirm angezeigt werden.

Point : text_pixels(text, clear_screen=True, x=0, y=0, text_color=’black’, font=None) Der Text beginnt bei den pixelbasierten Koordinaten (x, y). Der Bildschirm von ev3 ist 178x128 Pixel, • Die obere linke Ecke des Bildschirms ist (0, 0). • Die Mitte des Bildschirms ist (89, 64)

Point : font↓ fonts.png

1-3. Programme, deren Verarbeitungsinhalt unterschiedlich ist, je nachdem, ob die Taste gedrückt wird oder nicht ②

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

** Punkt **: Wenn Sie eine beliebige Taste drücken, hören Sie einen Ton und die gedrückte Taste wird angezeigt. Wenn Sie sie nicht drücken, wird die Meldung "Bitte drücken Sie die Taste" auf dem Bildschirm angezeigt.

Point : buttons_pressed Gibt eine Liste der Namen der Tasten zurück, die gedrückt werden

Point : str() Gibt das Argument (in diesem Fall die Liste) als Zeichen zurück

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

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

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

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

** Punkt **: Ein Programm, das sich an Ort und Stelle dreht, bis Sie eine beliebige Taste drücken.

Point : while not ~: Prozess 1

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

Point : exit() Programmende

1-5. Ein Programm, das wartet, bis die Taste gedrückt / losgelassen / gestoßen wird.

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

** Punkt **: Ein Programm, das wartet, bis Sie die mittlere Taste drücken, und ausgeführt wird, wenn es gedrückt wird.

Point : wait_for_bump(buttons, timeout_ms=None) → Warten Sie, bis die Taste gedrückt wird (gedrückt und losgelassen). Mit dem zweiten Argument kann ein Zeitlimit vom Drücken bis zum Freigeben festgelegt werden wait_for_pressed(buttons, timeout_ms=None) → Warten Sie, bis gedrückt wird. wait_for_released(buttons, timeout_ms=None) → Warten Sie bis zur Freigabe.

Point : exit() Programmende

1-6. Ein Programm, das wartet, bis die Tasten gleichzeitig gedrückt werden

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

** Punkt **: Ein Programm, das einen Ton erzeugt, wenn gleichzeitig die rechte und die linke Taste gedrückt werden. Wenn die obige Taste gedrückt wird, wird das Programm beendet.

Point : 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). Mit dem ersten Argument kann ein Zeitlimit vom Drücken bis zum Freigeben festgelegt werden

Point : Da Sie die Schaltflächen, die Sie drücken möchten, gleichzeitig mit den Elementen der Liste erstellen können, Wenn Sie warten möchten, bis Sie drei gleichzeitig drücken btn.wait_for_pressed['left','right','down']

Schließlich

Danke fürs Lesen! !! Nächstes Mal möchte ich über Berührungssensoren 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] Intelligente Blockschaltfläche
[ev3dev × Python] Ultraschallsensor
[ev3dev × Python] Berührungssensor
[ev3dev × Python] Kreiselsensor
[ev3dev × Python] Farbsensor
[ev3dev × Python] Aufbau einer ev3dev-Entwicklungsumgebung
[ev3dev × Python] Einzelmotorsteuerung
[Python] Der Stolperstein des Imports
[ev3dev × Python] Anzeige, Sprache, LED-Steuerung