跳至主要内容

ev3dev的v2.x Python语言绑定

项目描述

https://travis-ci.org/ev3dev/ev3dev-lang-python.svg?branch=ev3dev-stretch Documentation Status Chat at https://gitter.im/ev3dev/chat

这是一个Python3库,实现了ev3dev设备的接口,让您可以从Python代码中控制电机、传感器、硬件按钮、LCD显示屏等。

如果您之前没有编写过Python代码,您当然可以使用这个库来帮助您学习这门语言!

入门

此库运行在ev3dev上。在继续之前,请确保您已按照ev3dev入门指南中所述设置您的EV3或其他ev3dev设备。确保您有大于2.2.0的ev3dev-stretch版本。您可以通过在Brickman中选择“关于”并向下滚动到“内核版本”来检查内核版本。如果您没有兼容的版本,请在继续之前升级内核

用法

首先,您需要一种使用Python的方式。我们推荐使用ev3dev Visual Studio Code扩展。如果您对此感兴趣,请查看我们的Python + VSCode入门教程,设置完成后请返回。

否则,您可以通过SSH连接(例如nano编辑器)来处理文件,或者使用Python交互式REPL(输入python3),或者自己构建解决方案。如果您不知道如何操作,可能最好选择上面推荐的方案。

Python脚本的模板

每个Python程序都应该有一些基本部分。使用此模板开始

#!/usr/bin/env python3
from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_B, SpeedPercent, MoveTank
from ev3dev2.sensor import INPUT_1
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.led import Leds

# TODO: Add code here

第一条应该包含在您为ev3dev编写的每个Python程序中。它允许您从设备屏幕上看到的图形菜单Brickman运行此程序。其他行是导入语句,它提供了对库功能的访问。如果您想使用其他类型的设备或额外的实用程序,需要向导入列表中添加额外的类。

您应该为您的文件使用.py扩展名,例如my-file.py

如果您遇到类似于/usr/bin/env: 'python3\r': No such file or directory的错误,您必须将编辑器的“行结束”设置从“CRLF”更改为仅“LF”。这通常在状态栏的底部。有关帮助,请参阅我们的常见问题解答页面

重要:使脚本可执行(仅限非Visual Studio Code)

为了能够运行您的Python文件,您的程序必须可执行。如果您正在使用ev3dev Visual Studio Code扩展,您可以跳过此步骤,因为它将在您将代码下载到砖块时自动执行。

要从命令行(通常是SSH会话)将程序标记为可执行,请运行 chmod +x my-file.py

现在,您可以通过Brickman文件浏览器运行my-file.py,或者通过在文件名前加./来从命令行运行它:./my-file.py

使用触摸传感器控制LED灯

此代码会在触摸传感器被按下时将LED灯变为红色,并在释放时变回绿色。在尝试此操作之前,请将触摸传感器插入任何传感器端口。

ts = TouchSensor()
leds = Leds()

print("Press the touch sensor to change the LED color!")

while True:
    if ts.is_pressed:
        leds.set_color("LEFT", "GREEN")
        leds.set_color("RIGHT", "GREEN")
    else:
        leds.set_color("LEFT", "RED")
        leds.set_color("RIGHT", "RED")

如果您想在特定的端口上使用传感器,请指定端口如下

ts = TouchSensor(INPUT_1)

注意:如果您使用的是BrickPi而不是EV3,您需要手动配置传感器。请参阅以下示例:[https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py](https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py)

运行单个电机

这将使LEGO大电机以最大速度的75%旋转5圈。

m = LargeMotor(OUTPUT_A)
m.on_for_rotations(SpeedPercent(75), 5)

您还可以让电机旋转一定角度、运行一定时间,或者简单地启动它,直到您告诉它停止。此外,还提供了其他单位。有关更多信息,请参阅以下页面

使用两个电机驱动

最简单的驱动控制方式是使用MoveTank

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 seconds
tank_drive.on_for_seconds(SpeedPercent(60), SpeedPercent(30), 3)

还有 MoveSteeringMoveJoystick 类,它们提供了不同的控制风格。有关更多信息,请参阅以下页面

使用语音合成

如果您想让机器人说话,可以使用 Sound.speak 方法

from ev3dev2.sound import Sound

sound = Sound()
sound.speak('Welcome to the E V 3 dev project!')

更多演示代码

有几个演示程序可以帮助您熟悉这种语言绑定。这些程序可在以下GitHub网站上找到:https://github.com/ev3dev/ev3dev-lang-python-demo

您还可以复制并运行 utils 目录中的程序,以了解如何使用EV3电机、传感器、LCD控制台、按钮、声音和LED。

我们还强烈推荐访问 ev3python.com,我们的社区成员 @ndward 已经创建了一个包含使用此库的详细指南的网站,这些指南针对初学者。如果您刚开始编程,我们强烈建议您访问 ev3python.com

使用Micropython

普通的Python太慢?请查看 Micropython,看看它是否支持您项目所需的特性。

库文档

此库的类文档可以在 我们的Read the Docs页面 上找到。您始终可以前往那里获取有关如何使用此库功能的信息。

常见问题解答

遇到奇怪的错误或不确定如何做看似简单的事情?请查看我们的 FAQ,看看是否有现成的答案。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

python-ev3dev2-2.1.0.post1.tar.gz (77.8 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面