Ev3 python примеры программ

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

License

ev3dev/ev3dev-lang-python-demo

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

This folder contains several demo programs that you can use to help you in developing your own code. Brief descriptions of each demo are provided below; you can access the full source code and some more detailed information on each by opening the respective folders above.

To install these on your EV3, use git to clone the ev3dev-lang-python-demo repository from github. Your EV3 will need Internet connectivty in order to clone the repository from github.

$ sudo apt-get install git $ git clone https://github.com/ev3dev/ev3dev-lang-python-demo.git 

There are two ways to run a program. You can run a program from the command line or from the brickman interface.

Note that for both running from the command line and running from Brickman the program must be marked as an executable and the first line of the program must be #!/usr/bin/env python3 . To mark a program as executable run chmod +x PROGRAM_NAME.py . All of the demo programs are already marked as executable and already have #!/usr/bin/env python3 so you should be fine, we only mention it so you know to do these things when writing your own programs.

To run one of the demo programs from the command line, cd to the directory and run the program via ./PROGRAM_NAME.py . Example:

$ cd ~/ev3dev-lang-python-demo/robots/R3PTAR/ $ ./r3ptar.py 

To run one of the demo programs from Brickman, select the program in the File Browser.

Laurens Valk’s BALANC3R — This robot uses the gyro sensor to balance on two wheels. Use the IR remote to control BALANC3R

  • http://www.lego.com/en-us/mindstorms/build-a-robot/ev3d4
  • EV3D4RemoteControl — Use the IR remote to control EV3D4
  • EV3D4WebControl — Use a web interface to control EV3D4. There is a desktop version and a mobile version, both support touchscreen so you can drive via your smartphone. The web server will listen on port 8000 so go to http://x.x.x.x:8000/

A basic example of Object Oriented programming where there is a base TRACK3R class with child classes for the various permutations of TRACK3R

  • http://www.lego.com/en-us/mindstorms/build-a-robot/track3r
  • TRACK3R.py
  • TRACK3RWithBallShooter
  • TRACK3RWithClaw
  • TRACK3RWithSpinner

The LEGO Mindstorms EV3 Comparison project sports a few other robot programs in addition. Its comparison table also lists programs created for other platforms than ev3dev.

Источник

Программируем роботов на Python

Приветствую тебя, мой друг. На этой странице ты сможешь найти примеры скриптов на языке Python для управления своим роботом, просто бери их и адаптируй под свой проект. Также ты сможешь найти здесь ряд команд для командной стоки в Linux. Они тебе пригодятся, так как наши роботы используют именно эту операционную систему.

Дисплей

Вывод картинки на экран блока EV3:

from ev3dev.ev3 import * from PIL import Image lcd = Screen() logo = Image.open('kartinka.jpg') lcd.image.paste(logo, (0,0)) lcd.update() 

Вывод текста на экран блока EV3:

from ev3dev.ev3 import * from time import sleep lcd = Screen() lcd.draw.text((40,80),'# D.V.O.R.I.K') lcd.update() sleep(3)
Кнопки блока EV3

Выход из программы при нажатии на любую кнопку:

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep btn = Button() while True: if btn.any(): Sound.beep().wait() exit() else: sleep(0.01) 

Ультразвуковой датчик ( Ultrasonic Sensor )

Программа выводит расстояние от ультразвукового датчика до препятствия на экран дисплея. Прекращение программы осуществляется нажатием на кнопку датчика касания.

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep us = UltrasonicSensor() ts = TouchSensor() lcd = Screen() us.mode='US-DIST-CM' units = us.units while not ts.value(): distance = us.value()/10 lcd.draw.text((40,80), str(distance)) lcd.update() sleep(0.1) lcd.clear() if distance < 60: Leds.set_color(Leds.LEFT, Leds.RED) Leds.set_color(Leds.RIGHT, Leds.GREEN) else: Leds.set_color(Leds.RIGHT, Leds.RED) Leds.set_color(Leds.LEFT, Leds.GREEN) Sound.beep() Leds.set_color(Leds.LEFT, Leds.GREEN) Leds.set_color(Leds.RIGHT, Leds.GREEN) 

Датчик касания EV3 (touch sensor)

Следующий скрипт заставляет зажигаться красным цветом левый светодиод блока EV3 при нажатии на датчик касания, подключенный к порту №1

#!/usr/bin/env python3 from ev3dev.ev3 import * ts1 = TouchSensor('in1') while True: if ts1.value()==1: Leds.set_color(Leds.LEFT, Leds.RED) else: Leds.set_color(Leds.LEFT, Leds.GREEN) 

Теперь давайте напишем скрипт который выполняет выход из цикла по нажатию на датчик касания:

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep ts = TouchSensor() while not ts.value(): Leds.set_color(Leds.LEFT, Leds.RED) sleep(0.2) Leds.set_color(Leds.LEFT, Leds.GREEN) sleep(0.2)

Гироскопический датчик (Gyro Sensor)

Гироскопический датчик предназначен для измерения угла вращения робота или скорости вращения. Сверху на корпусе датчика нанесены две стрелки, обозначающие плоскость, в которой работает датчик. Поэтому важно правильно установить датчик на робота. Также для более точного измерения крепление гироскопического датчика должно исключать его подвижность относительно корпуса робота. Даже во время прямолинейного движения робота гироскопический датчик может накапливать погрешность измерения угла и скорости вращения, поэтому непосредственно перед измерением следует осуществить сброс в 0 текущего показания датчика. Вращение робота против часовой стрелки формирует отрицательные значения измерений, а вращение по часовой стрелке — положительные.

Приведенный ниже скрипт выполняет измерение угла наклона датчика и выводит результат на дисплей EV3. Завершение программы происходит при нажатии на датчик касания:

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep gy = GyroSensor() # объявляем гироскопический датчик ts = TouchSensor() # объявляем датчик касания lcd = Screen() # объявляем экран блока EV3 gy.mode='GYRO-ANG' # переводим датчик в режим измерения угла units = gy.units # настройка единиц измерения угла while not ts.value(): # запускаем цикл, пока не нажат датчик касания angle = gy.value() #создаём переменную,в которой данные с датчик lcd.draw.text((40,80), str(angle)) lcd.update() sleep(0.5)

Датчик цвета (Color sensor)

Датчик цвета может работать в трех различных режимах:

В режиме «Цвет» датчик может определить цвет поднесенного к нему предмета

В режиме «Яркость отраженного света» датчик направляет световой луч на близко расположенный предмет и по отраженному пучку определяет яркость предмета;

в режиме «Яркость внешнего освещения» датчик может определить — насколько ярко освещено пространство вокруг.

В следующем скрипте датчик цвета излучает свет и измеряет интенсивность отраженного света, возвращая дважды в секунду значение, которое находится между 0 и 100. Для достижения наилучших результатов поместите датчик примерно в 3 мм от отражающей поверхности. Запустив скрипт мы получим значение около 80 с обычной белой бумагой и около 5 с черной поверхностью.

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep # объявляем датчик цвета cl = ColorSensor() # переводим его в режим измерения яркости отраженного цвета cl.mode='COL-REFLECT' # объявляем экран EV3 lcd = Screen() while True: lcd.clear #очищаем экран lcd.draw.text((40,80), str(cl.value()) #вносим на экран показание с датчика lcd.update() #активируем запись на экране sleep(0.5) # ждем полсекунды

Чтобы перевести датчик цвета в режим измерения яркости внешнего освещения достаточно в скрипте поменять строчку:

следующий скрипт — это пример работы датчика цвета в режиме определения цвета поднесённого к нему предмета. Для достижения максимальной точности предмет необходимо подносить на расстояние от 3 до 6 мм:

#!/usr/bin/env python3 # so that script can be run from Brickman from ev3dev.ev3 import * from time import sleep # объявляем датчик цвета и датчик касания cl = ColorSensor() ts = TouchSensor() # переводим датчик цвета в режим определения цвета cl.mode='COL-COLOR' colors=('unknown','black','blue','green','yellow','red','white','brown') while not ts.value(): #цикл выполняется пока не нажмём на датчик касания Sound.speak(colors[cl.value()]).wait() #произносим цвет из массива colors sleep(1)

Большой мотор (large motor)

Программа запускает большой мотор, который подключен к порту «B», на максимальную скорость. Вал мотора провернется на 360 градусов и резко остановится (не накатом!). После остановки мотора через 5 секунд, выполнится выход из программы.

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep m = LargeMotor('outB') m.run_to_rel_pos(position_sp=360, speed_sp=1000, stop_action="hold") sleep(5)

Следующий скрипт запускает мотор в обратную сторону со скоростью 75% от максимальной. Мотор запустится не на количество оборотов, а на время, в нашем случае это 5 секунд. И так как в нашем коде нет команды stop_action=»hold» , то наш мотор остановится накатом.

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep m = LargeMotor('outB') m.run_timed(time_sp=5000, speed_sp=-750) sleep(4) 

Следующий скрипт запустит большой мотор на постоянную работу. Остановка мотора в данном случае происходит по команде m.stop(stop_action=» coast «)

#!/usr/bin/env python3 # So program can be run from Brickman from ev3dev.ev3 import * from time import sleep m = LargeMotor('outB') m.run_forever(speed_sp=900) sleep(5) m.stop(stop_action="coast") sleep(5)

Средний мотор (Medium motor)

Для работы со средним мотором можно смело пользоваться скриптами из примеров для большого мотора, за одним маленьким исключением: вместо объявления переменной LargeMotor (большой мотор), мы объявляем MediumMotor(средний мотор).

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep m = MediumMotor('outD') m.run_timed(time_sp=1000, speed_sp=650) sleep(4)

Звуки (Sound)

Следующий скрипт воспроизводит звуковой файл «music.mp3», который находится по тому же адресу, что и скрипт:

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep Sound.play('music.mp3').wait() sleep(4)

Следующий скрипт воспроизводит звук определенной тональности и частоты:

from ev3dev.ev3 import * Sound.tone(1500, 2000).wait()

Следующий скрипт воспроизведёт текст, который вы укажите в кавычках второй строки:

from ev3dev.ev3 import * Sound.speak('STUDIA ZNANIY DVORIK').wait()

обратите внимание, что в кавычках можно писать не только текст, но и цифры, их блок EV3 прочитает на английском языке.

Также, вместо текста и цифр можно указать имя переменной, в этом случае EV3 произнесет значение переменной, которое хранится в ней в данный момент:

from ev3dev.ev3 import * i=10 Sound.speak(i).wait() 

Рандом (Random)

Рассмотрим использование модуля Random на примере с запуском мотора. Скрипт заставит мотор сделать случайное число оборотов в диапазоне от 1 до 10:

#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep import random oborot=random.randint(1,10) m = LargeMotor('outB') m.run_to_rel_pos(position_sp=360*oborot, speed_sp=1000, stop_action="hold") sleep(10)

Источник

Читайте также:  Authentication method in java
Оцените статью