0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用Python编程和控制Arduino

454398 来源:网络整理 作者:网络整理 2019-11-28 17:52 次阅读

Python席卷了编码世界。除了这种新语言的兴起之外,DIY电子产品领域也蓬勃发展。 Arduino和Raspberry Pi公司的开发板和单板计算机已经改变了人们创建家用自酿电子产品的方式。如果可以用Python编程Arduino会很棒吗?

没有比结合两个很棒的东西更好的感觉了。可悲的是,不可能用Python直接对Arduino进行编程,因为开发板上没有用于语言解释的选项。但是,可以使用Python程序直接控制USB

本文将向您展示如何设置Arduino UNO(尽管任何Arduino兼容板都可以在这里工作),以便通过该程序进行编程和控制使用Python程序的命令行。本教程是针对Windows 10编写的,但也适用于Mac和Linux。您甚至可以使用此工作流程直接从Raspberry Pi控制Arduino,以获得终极的双向DIY体验。

为Python设置Arduino

对于今天的项目,我们将使用Arduino Uno,以及适用于Python的pyFirmata接口。尽管在编写pyFfirmata接口仅支持Arduino Uno,Mega,Due和Nano时,您几乎可以使用任何与Arduino兼容的板。如果您已经是Python专家,则可以在pyFirmata中添加自己的主板支持-如果需要,请确保更新其GitHub!

尚未安装Arduino IDE。如果您不熟悉微控制器,那么我们的Arduino初学者指南将帮助您完成一切。

连接Arduino板并打开IDE。确保在工具菜单中选择了正确的板卡和端口。加载 StandardFirmata 示例草图并将其上传到电路板上。只要您通过USB将Arduino连接到计算机,就可以直接控制Arduino。只要将草图上传到板上没有任何错误,您就可以继续。

Python和命令行控制

我们将使用Python 3.4来控制Arduino,因为您将要安装的模块将其指定为最新的兼容版本。在此之前的任何版本都应该可以正常工作,并且据报导更高的版本可以工作。您可以从Python Software Foundation网站下载适用于Windows 10的Python 3.4。如果您想运行多个版本的Python,我们的Python虚拟环境指南将可以为您提供帮助。

一旦您安装了Python,我们希望将其添加到系统的PATH变量中。这样一来,我们就可以直接从命令行运行Python代码,而无需进入安装目录。您可以通过打开控制面板,搜索环境,然后点击编辑系统环境变量。在窗口底部,选择环境变量。这将打开此窗口:

如果您已经在列表中看到 PATH ,请单击“编辑”,然后添加您的 Python 和 Python/Scripts 目录。如果您没有PATH变量,请单击“新建”并添加它。请注意,此处将Python直接安装在 C: 中。如果您将其安装在其他位置,则需要对其进行修改以反映这一点。单击“确定”返回窗口链,您几乎已经准备好使用Python控制Arduino!

神奇的润滑脂

您将需要完成最后一个难题让Python与我们的Arduino很好地对话。这以称为 pyFirmata 的Python接口的形式出现。 Tino de Bruijn创建的该界面可以从github下载,尽管您可以直接在命令行中输入以下内容来安装它:

pip install pyfirmata

一切正常,它应该安装并如下所示:

如果失败,请继续将Python添加到环境变量部分,并确保您已经为您的Python目录提供了正确的路径。

使它发生

现在一切都已设置完毕,您可以为Arduino创建一个Python程序来对其进行测试。打开您选择的IDE。今天我们将使用Eclipse,但您可以轻松地使用任何文本编辑器,甚至是云中的IDE。

创建一个新脚本并将其保存为 blink.py 。打破传统的标准LED闪烁程序,您将要创建一个程序,该程序会提示用户在LED闪烁之前希望其闪烁的次数。这是一个简短的程序,如果您想直接使用它,可以在这里下载,但让我们对其进行分解。

首先,您需要从 pyFirmata 模块,以及标准的Python Time 模块。

from pyfirmata import Arduino, util

import time

现在,您将要设置Arduino开发板。本文假设您正在使用 Arduino Uno 板,尽管还支持其他几个Arduino板。请参阅pyFirmata github,以获取有关主板支持的详细信息

检查Arduino IDE中使用的COM端口,并将其作为变量 board 输入到您的代码中。

p》 board = Arduino(“COM3”)

现在,您将设置用户提示。那些熟悉Python的人会在这里识别所有内容。使用 input 功能将问题打印到屏幕上,并将答案存储为变量。用户提供一个数字后,程序将报告LED闪烁多少次。

loopTimes = input(‘How many times would you like the LED to blink: ’)

print(“Blinking ” + loopTimes + “ times.”)

要使LED闪烁适当的次数,请使用 for循环。如果您是Python的新手,请注意缩进,因为与其他语言不同,空格是语法的一部分。请注意,插针13是Arduino Uno的板载LED,如果您的电路板不同,则需要对其进行修改。

for x in range(int(loopTimes)):

board.digital[13].write(1)

time.sleep(0.2)

board.digital[13].write(0)

time.sleep(0.2)

您将投射 loopTimes 变量为整数,因为来自用户的输入将自动存储为字符串。在这个简单的演示中,我们假设用户将输入一个数值。其他任何项(例如“八”)都将引发错误。

保存脚本,并打开命令提示符。

闪烁灯和其他启示

一切准备就绪,您需要做的就是导航到脚本所在的位置并运行它。通过键入 cd [脚本目录的路径] ,然后键入 python blink.py 。

一切正常,您的程序将以Arduino初始化时会稍有延迟,提示您输入一个数字,然后使用板载LED闪烁多次。

程序输出应如下所示:

在选定的眨眼次数后,一旦按Enter键,Arduino应该执行您的命令。

小开始

该项目是在Python和Arduino板之间进行通信的准系统。这种方法与通常的将脚本上传到Arduino本身的工作流程完全不同,但是它为使用该平台开辟了一种全新的方式,尤其是在您喜欢Python编程语言的情况下。

如果您使用在家中使用Linux服务器,这种与Arduino板通信的方法可以将该服务器扩展为成熟的DIY家庭自动化系统。通过将控制微控制器的Python脚本与DIY自动化电路相结合,您的NAS存储盒可以承担一套全新的有用功能。

要使其具有终极的DIY体验,为什么不建造自己的NAS盒并用它来控制您的电器吗?想象一下在Plex服务器上按播放并自动关闭灯光会多么酷!

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184830
收藏 人收藏

    评论

    相关推荐

    教你一招,简化仪器Python编程控制

    许多行业的工程师都使用自动化来扩展其测试仪器的功能,而大多是选择免费的编程语言——Python来完成。作为适用于自动化的主要编程语言,Python具备许多显著优势
    的头像 发表于 03-15 14:31 387次阅读
    教你一招,简化仪器<b class='flag-5'>Python</b><b class='flag-5'>编程控制</b>!

    Python编程语言属于什么语言

    Python编程语言属于高级编程语言中的一种。它是一种通用、面向对象、解释型编程语言。Python由Guido van Rossum于198
    的头像 发表于 11-22 14:31 640次阅读

    python窗口图形界面编程

    Python是一种功能强大而又简单易用的编程语言,支持多种编程范式,包括面向过程、面向对象和函数式编程。除了用于开发各种类型的应用程序和网络服务,P
    的头像 发表于 11-22 14:23 550次阅读

    Arduino音乐代码怎样添加?

    Arduino音乐代码怎样添加
    发表于 10-30 08:26

    如何使用Python和PinPong库控制Arduino

    Python程序员在编程Arduino时面临的第一个挑战是语言不同。Arduino IDE使用的是受C和C++启发的语言。实际上,像Arduino
    的头像 发表于 10-13 10:59 445次阅读
    如何使用<b class='flag-5'>Python</b>和PinPong库<b class='flag-5'>控制</b><b class='flag-5'>Arduino</b>

    树莓派Python编程指南分享

    树莓派python编程指南
    发表于 10-07 08:43

    Python编程实用指南

    Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过 Python 编程,我们能够解决现实生活中的很多任务。本书是一本面向实践的 Python
    发表于 09-27 06:21

    Python编程学习笔记(5)

    编程时经常需要检查一系列条件,并据此决定采取什么措施。在Python中,if 语句让你能够检查程序的当前状态,并据此采取相应的措施。
    发表于 09-20 16:19 360次阅读

    Python的面向对象编程详解

    一般编程可分为面向过程编程,和面向对象编程Python的面向对象编程,与Java的面向对象很像。之所以需要面向对象
    发表于 09-04 16:35 268次阅读
    <b class='flag-5'>Python</b>的面向对象<b class='flag-5'>编程</b>详解

    2023年受欢迎8款编程语言排名:Python 第二

    根据DevJobsScanner发布的报告,2023年度(从2022年1月到2023年5月)需求量最大的编程语言数据显示,JavaScript、Python和Java仍然是职场上备受欢迎的编程语言。
    的头像 发表于 07-28 17:57 4541次阅读

    使用arduinopython改造的Chrome Dino游戏

    电子发烧友网站提供《使用arduinopython改造的Chrome Dino游戏.zip》资料免费下载
    发表于 07-05 14:43 0次下载
    使用<b class='flag-5'>arduino</b>和<b class='flag-5'>python</b>改造的Chrome Dino游戏

    使用XOD可视化编程语言对Arduino Uno进行编程控制步进电机

    电子发烧友网站提供《使用XOD可视化编程语言对Arduino Uno进行编程控制步进电机.zip》资料免费下载
    发表于 06-27 14:20 0次下载
    使用XOD可视化<b class='flag-5'>编程</b>语言对<b class='flag-5'>Arduino</b> Uno进行<b class='flag-5'>编程</b>以<b class='flag-5'>控制</b>步进电机

    Python3与Arduino通信

    电子发烧友网站提供《Python3与Arduino通信.zip》资料免费下载
    发表于 06-26 14:39 0次下载
    <b class='flag-5'>Python</b>3与<b class='flag-5'>Arduino</b>通信

    Python编程实战(源代码)

    [源代码]Python编程实战 妙趣横生的项目之旅
    发表于 06-06 17:49 1次下载

    编译草图python选项错误怎么处理?

    /.arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /home/wayne/.arduino15/pac
    发表于 06-02 06:37