Package: python-ev3dev2
A Python3 library implementing an interface forev3devdevices,
letting you control motors, sensors, hardware buttons, LCD
displays and more from Python code.If you haven’t written code in Python before, you can certainly use this
library to help you learn the language!Getting StartedThis library runs onev3dev. Before continuing, make sure that you have set up
your EV3 or other ev3dev device as explained in theev3dev Getting Started guide. Make sure you have an ev3dev-stretch version
greater than2.2.0. You can check the kernel version by selecting
“About” in Brickman and scrolling down to the “kernel version”.
If you don’t have a compatible version,upgrade the kernel before continuing.UsageTo start out, you’ll need a way to work with Python. We recommend theev3dev Visual Studio Code extension. If you’re interested in using that,
check out ourPython + VSCode introduction tutorialand then come back
once you have that set up.Otherwise, you can can work with filesvia an SSH connectionwith an editor
such asnano, use the Python interactive REPL (typepython3), or roll
your own solution. If you don’t know how to do that, you are probably
better off choosing the recommended option above.The template for a Python scriptEvery Python program should have a few basic parts. Use this template
to get started:#!/usr/bin/env python3fromev3dev2.motorimportLargeMotor,OUTPUT_A,OUTPUT_B,SpeedPercent,MoveTankfromev3dev2.sensorimportINPUT_1fromev3dev2.sensor.legoimportTouchSensorfromev3dev2.ledimportLeds# TODO: Add code hereThe first line should be included in every Python program you write
for ev3dev. It allows you to run this program from Brickman, the graphical
menu that you see on the device screen. The other lines are import statements
which give you access to the library functionality. You will need to add
additional classes to the import list if you want to use other types of devices
or additional utilities.You should use the.pyextension for your file, e.g.my-file.py.If you encounter an error such as/usr/bin/env: 'python3\r': No such file or directory,
you must switch your editor’s “line endings” setting for the file from
“CRLF” to just “LF”. This is usually in the status bar at the bottom.
For help, seeour FAQ page.Important: Make your script executable (non-Visual Studio Code only)To be able to run your Python file,your program must be executable. If
you are using theev3dev Visual Studio Code extension, you can skip this
step, as it will be automatically performed when you download your code to the
brick.To mark a program as executable from the command line (often an SSH session),
runchmod +xmy-file.py.You can now runmy-file.pyvia the Brickman File Browser or you can run it
from the command line by preceding the file name with./:./my-file.pyControlling the LEDs with a touch sensorThis code will turn the LEDs red whenever the touch sensor is pressed, and
back to green when it’s released. Plug a touch sensor into any sensor port
before trying this out.ts=TouchSensor()leds=Leds()print("Press the touch sensor to change the LED color!")whileTrue:ifts.is_pressed:leds.set_color("LEFT","GREEN")leds.set_color("RIGHT","GREEN")else:leds.set_color("LEFT","RED")leds.set_color("RIGHT","RED")If you’d like to use a sensor on a specific port, specify the port like this:ts=TouchSensor(INPUT_1)Heads-up:If you are using a BrickPi instead of an EV3, you will need to manually configure the sensor. See the example here:https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.pyRunning a single motorThis will run a LEGO Large Motor at 75% of maximum speed for 5 rotations.m=LargeMotor(OUTPUT_A)m.on_for_rotations(SpeedPercent(75),5)You can also run a motor for a number of degrees, an amount of time, or simply
start it and let it run until you tell it to stop. Additionally, other units
are also available. See the following pages for more information:http://python-ev3dev.readthedocs.io/en/ev3dev-stretch/motors.html#ev3dev.motor.Motor.on_for_degreeshttp://python-ev3dev.readthedocs.io/en/ev3dev-stretch/motors.html#unitsDriving with two motorsThe simplest drive control style is with theMoveTankclass:tank_drive=MoveTank(OUTPUT_A,OUTPUT_B)# drive in a turn for 5 rotations of the outer motor# the first two parameters can be unit classes or percentages.tank_drive.on_for_rotations(SpeedPercent(50),SpeedPercent(75),10)# drive in a different turn for 3 secondstank_drive.on_for_seconds(SpeedPercent(60),SpeedPercent(30),3)There are alsoMoveSteeringandMoveJoystickclasses which provide
different styles of control. See the following pages for more information:http://python-ev3dev.readthedocs.io/en/ev3dev-stretch/motors.html#multiple-motor-groupshttp://python-ev3dev.readthedocs.io/en/ev3dev-stretch/motors.html#unitsUsing text-to-speechIf you want to make your robot speak, you can use theSound.speakmethod:fromev3dev2.soundimportSoundsound=Sound()sound.speak('Welcome to the E V 3 dev project!')More Demo CodeThere are several demo programs that you can run to get acquainted with
this language binding. The programs are availableat this GitHub site.You can also copy and run the programs in theutilsdirectory to
understand some of the code constructs to use the EV3 motors, sensors,
LCD console, buttons, sound, and LEDs.We also highly recommendev3python.comwhere one of our community
members, @ndward, has put together a great website with detailed guides
on using this library which are targeted at beginners. If you are just
getting started with programming, we highly recommend that you check
it out atev3python.com!Using MicropythonNormal Python too slow? ReviewMicropythonto see if it supports the
features your project needs.Library DocumentationClass documentation for this library can be found onour Read the Docs page. You can always go there to get
information on how you can use this library’s functionality.Frequently-Asked QuestionsExperiencing an odd error or unsure of how to do something that seems
simple? Check our ourFAQto see if there’s an existing answer.