πŸ”Œ Как ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ EV3 Π½Π° Python: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ инструкции 🐍

Как ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ EV3 Π½Π° Python?

Для программирования EV3 Π½Π° Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ev3dev2. Π­Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая прСдоставляСт доступ ΠΊ функциям ΠΈ возмоТностям EV3.


from ev3dev2.motor import OUTPUT_A, OUTPUT_B, LargeMotor

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра ΠΌΠΎΡ‚ΠΎΡ€Π°
motor = LargeMotor(OUTPUT_A)

# ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΌΠΎΡ‚ΠΎΡ€Π°
motor.on_for_rotations(speed=50, rotations=2)

# ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΌΠΎΡ‚ΠΎΡ€Π°
motor.stop()
    

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создаСм экзСмпляр ΠΌΠΎΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LargeMotor ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΡ‚ΠΎΡ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΏΠΎΡ€Ρ‚Ρƒ OUTPUT_A. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ on_for_rotations, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΌΠΎΡ‚ΠΎΡ€ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ количСством ΠΎΠ±ΠΎΡ€ΠΎΡ‚ΠΎΠ². НаконСц, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ stop для остановки ΠΌΠΎΡ‚ΠΎΡ€Π°.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ EV3 Π½Π° Python ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ возмоТности для создания ΠΈ управлСния Ρ€ΠΎΠ±ΠΎΡ‚Π°ΠΌΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим основныС аспСкты программирования EV3 Π½Π° Python ΠΈ прСдоставим Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ.

Установка ΠΈ настройка

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ LEGO MINDSTORMS EV3 MicroPython Π½Π° ваш EV3-Π±Π»ΠΎΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ установкС Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ LEGO. Установка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ простой ΠΈ прямолинСйной, ΠΈ послС Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° Python.

ΠžΡΠ½ΠΎΠ²Ρ‹ EV3 Π½Π° Python

Одним ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… элСмСнтов программирования EV3 Π½Π° Python являСтся использованиС модуля ev3dev2. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт API для взаимодСйствия с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ EV3, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΡ‚ΠΎΡ€Ρ‹, Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚.Π΄. Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

from ev3dev2 import ev3

Π Π°Π±ΠΎΡ‚Π° с ΠΌΠΎΡ‚ΠΎΡ€Π°ΠΌΠΈ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΡ‚ΠΎΡ€Π°ΠΌΠΈ EV3 являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ². Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΌΠΎΡ‚ΠΎΡ€ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π½Π° 2 сСкунды с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ:

motor = ev3.LargeMotor('outA')
motor.run_direct(duty_cycle_sp=100)
ev3.wait(ev3.TimeSeconds(2))
motor.stop()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ LargeMotor с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° 'outA'. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ run_direct() для запуска ΠΌΠΎΡ‚ΠΎΡ€Π° с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ. ΠœΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ 2 сСкунды с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ wait() ΠΈ Π·Π°Ρ‚Π΅ΠΌ останавливаСм ΠΌΠΎΡ‚ΠΎΡ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° stop().

Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ

EV3 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сСнсора прикосновСния:

touch_sensor = ev3.TouchSensor('in1')
while not touch_sensor.is_pressed:
    ev3.wait(ev3.TimeMilliseconds(100))
ev3.stop()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ TouchSensor с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° 'in1'. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» while для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π½Π°ΠΆΠ°Ρ‚Π° Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π° сСнсорС прикосновСния. Если ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° останавливаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° stop().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ "Π‘Π»Π΅Π΄ΡƒΠΉ Π·Π° Π»ΠΈΠ½ΠΈΠ΅ΠΉ"

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая позволяСт Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π»ΠΈΠ½ΠΈΠ΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Ρ†Π²Π΅Ρ‚Π° ΠΈ Π΄Π²ΡƒΡ… ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ². Π’ΠΎΡ‚ ΠΊΠΎΠ΄:

from ev3dev2 import ev3
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveTank

color_sensor = ColorSensor()
tank = MoveTank(OUTPUT_A, OUTPUT_B)

while True:
    if color_sensor.reflected_light_intensity < 30:  # Если Ρ†Π²Π΅Ρ‚ Π±Π»ΠΈΠΆΠ΅ ΠΊ Ρ‡Π΅Ρ€Π½ΠΎΠΌΡƒ, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ
        tank.on(left_speed=50, right_speed=0)
    else:  # Π˜Π½Π°Ρ‡Π΅ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Π»Π΅Π²ΠΎ
        tank.on(left_speed=0, right_speed=50)

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ†Π²Π΅Ρ‚Π° для опрСдСлСния Ρ†Π²Π΅Ρ‚Π° Π½Π° Π»ΠΈΠ½ΠΈΠΈ. Если Ρ†Π²Π΅Ρ‚ Π±Π»ΠΈΠΆΠ΅ ΠΊ Ρ‡Π΅Ρ€Π½ΠΎΠΌΡƒ, ΠΌΡ‹ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π²ΠΏΡ€Π°Π²ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° on() ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° MoveTank. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π²Π»Π΅Π²ΠΎ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся Π² бСсконСчном Ρ†ΠΈΠΊΠ»Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ остановлСна.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли основы программирования EV3 Π½Π° Python ΠΈ прСдоставили Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠΎΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ программирования EV3 Π½Π° Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для своих Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ².

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ² Lego Mindstorms EV3 Π½Π° языкС Python

НачинаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ EV3 Π½Π° Python

Настройка программирования Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LEGO EV3

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½ pip: подробная инструкция с эмодзи πŸπŸ’»

πŸ”Ž Какой язык программирования быстрСС: Python ΠΈΠ»ΠΈ Java? πŸš€

πŸ” Как вывСсти ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Ρ„Π°ΠΉΠ» ΠΏΠΈΡ‚ΠΎΠ½? ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова! πŸ’»

πŸ”Œ Как ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ EV3 Π½Π° Python: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ инструкции 🐍

πŸ” Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ±Π΅Π΄Ρƒ Π² крСстиках-Π½ΠΎΠ»ΠΈΠΊΠ°Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python?

πŸ” 10 совСтов ΠΏΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅?

πŸ” Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ функция randint Π² Python?