当前位置: 代码迷 >> 综合 >> 如何使用Python编程和控制Arduino
  详细解决方案

如何使用Python编程和控制Arduino

热度:49   发布时间:2024-02-28 00:36:56.0

Python已经风靡编码世界。随着这种新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们酿造家用自制电子产品的方式。如果你能用Python编程Arduino,那会不会很棒? 没有比结合两件很酷的东西更好的感觉了。遗憾的是,用Python直接编写Arduino是不可能的,因为主板无法选择语言的板载解释。但是,可以使用Python程序直接控制USB。 本文将向您展示如何使用Python程序从命令行编程和控制Arduino UNO(尽管任何Arduino兼容板可以在这里工作)。本教程是为Windows 10编写的,但也适用于Mac和Linux。您甚至可以使用此工作流程直接从Raspberry Pi控制Arduino ,获得终极双重DIY体验。 设置你的Arduino for Python 对于今天的项目,我们将使用Arduino Uno以及Python的pyFirmata接口。您可以使用几乎任何与Arduino兼容的板,但在撰写本文时,只有Arduino Uno,Mega,Due和Nano都支持pyFfirmata接口。如果你已经是Python专家,你可以添加自己的板支持到pyFirmata - 如果你这样做,请务必更新他们的GitHub! 如果您还没有,请安装Arduino IDE。如果您对微控制器世界全新,那么我们的Arduino初学者指南将帮助您完成所有工作。 连接您的Arduino板,然后打开IDE。确保在“ 工具”菜单中选择了正确的板和端口。加载StandardFirmata示例草图并将其上载到电路板。只要通过USB连接到计算机,这将允许您直接控制Arduino。如果草图上传到您的电路板没有任何错误,您可以继续前进。 Python和命令行控制 我们将使用Python 3.4来控制我们的Arduino,因为您要安装的模块将其指定为最新的兼容版本。在此之前的任何版本都应该可以正常工作,并且已经报告了更高版本的工作。您可以从Python Software Foundation站点下载适用于Windows 10的Python 3.4 。如果您想运行多个版本的Python,我们的Python虚拟环境指南将能够为您提供帮助。 安装Python后,我们希望将其添加到系统的PATH变量中。这将让我们直接从命令行运行Python代码,而无需在其安装的目录中。您可以通过打开控制面板,搜索环境并单击编辑系统环境变量来执行此操作。在窗口底部选择Environment Variables。这会打开这个窗口: 如果您已在列表中看到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之前希望LED闪烁的次数。这是一个简短的程序,你可以在这里下载,如果你想直接进入它,但让我们分解它。 首先,您需要从pyFirmata模块以及标准Python Time模块导入所需的内容。 from pyfirmata import Arduino, utilimport time 现在你想要设置Arduino板。本文假设您使用的是Arduino Uno板,但支持其他几个Arduino板。有关板支持的详细信息,请参阅pyFirmata github。 检查您在Arduino IDE中使用的COM端口,并将其作为变量板输入到您的代码中。 board=Arduino("COM3") 现在,您将设置用户提示。那些熟悉Python的人会认出这里的一切。使用输入功能将问题打印到屏幕上,并将答案存储为变量。一旦用户提供了号码,程序将报告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变量转换为此处的整数,因为来自用户的输入将自动存储为字符串。在这个简单的演示中,我们假设用户将输入一个数值。任何其他条目,如'8'将引发错误。 保存脚本,然后打开命令提示符。 闪烁的灯光和其他启示 一切准备就绪,您需要做的就是导航到脚本所在的位置并运行它。通过键入cd [脚本目录的路径],然后键入python blink.py来完成此操作。 一切顺利,您的程序将在Arduino初始化时稍微延迟,提示您输入一个数字,然后使用板载LED闪烁多次。 程序输出应如下所示: 只要您在选择的闪烁次数后按Enter键,Arduino就会执行您的订单。 小起点 这个项目是Python和Arduino板之间沟通的准备开始。这种方法与将脚本上传到Arduino本身的常用工作流程截然不同,但它开启了一种全新的平台工作方式,特别是如果您喜欢Python编程语言。 如果您在家中使用Linux服务器,这种与Arduino板通信的方法可以将该服务器扩展为完全成熟的DIY家庭自动化系统。通过将控制微控制器的Python脚本与DIY自动化电路相结合,您的NAS存储盒可以采用一整套新的有用功能。 为了使它成为最终的DIY体验,为什么不建立自己的NAS盒并使用它来控制你的设备呢?想象一下,在Plex服务器上按下播放并让灯自动关闭会有多酷! 特权中心|随便|

  相关解决方案