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
    +关注

    关注

    57

    文章

    4857

    浏览量

    89583
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195966
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文了解Mojo编程语言

    Mojo 是一种由 Modular AI 公司开发的编程语言,旨在将 Python 的易用性与 C 语言的高性能相结合,特别适合人工智能(AI)、高性能计算(HPC)和系统级编程场景。以下是关于
    发表于 11-07 05:59

    技能+1!如何在树莓派上使用C++控制GPIO?

    和PiGPIO等库,C++可用于编程控制树莓派的GPIO引脚。它提供了更好的性能和控制能力,非常适合对速度和精度要求较高的硬件项目。在树莓派社区中,关于“Python
    的头像 发表于 08-06 15:33 3573次阅读
    技能+1!如何在树莓派上使用C++<b class='flag-5'>控制</b>GPIO?

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富的库和资源而被
    的头像 发表于 07-24 15:32 642次阅读
    C++ 与 <b class='flag-5'>Python</b>:树莓派上哪种语言更优?

    【BPI-CanMV-K230D-Zero开发板体验】+灯效控制Python编程

    ,在学习Python编程的基础上通过GPIO来实现LED灯的控制。 在开发板上,仅有的2个可供GPIO控制的器件是RGB_LED和按键,其中RGB_LED的电路如图1所示。 但要点亮W
    发表于 06-27 17:33

    Arduino与LabVIEW联合编程指南

    Arduino编程并与LabVIEW上位机结合实现设备的远程控制与数据采集。
    发表于 06-19 15:54 1次下载

    跟老齐学Python:从入门到精通

    本帖最后由 yuu_cool 于 2025-6-3 16:52 编辑 本资料是面向编程零基础读者的Python 入门教程,内容涵盖了Python 的基础知识和初步应用。以比较轻快的风格,向零基
    发表于 06-03 16:10

    免费分享Arduino入门+进阶(全套例程+书籍)

    创意,比如控制灯光、传感器、电机等。以下是Arduino入门+进阶学习资料1.Arduino编程语言说明(相关文件可在下文扫码领取)2.Arduin
    的头像 发表于 05-22 11:40 783次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    的发展,在Arduino出现以前,虽然也有很多公司在推广一些简单易用的可编程控制器,但是由于开发平台种类繁多,而且使用这些控制器基本上都需要对电子技术、数字逻辑、寄存器等内容进行多方面的了解和学习,才能
    发表于 05-13 09:28

    python入门圣经-高清电子书(建议下载)

    此资料内容是一本针对所有层次的Python 读者而作的Python 入门电子书。 全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumP
    发表于 04-10 16:53

    零基础入门:如何在树莓派上编写和运行Python程序?

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1524次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b>程序?

    DLP6500能否用Python编程进行开发,是否有API接口?

    本人第一次接触DLP的开发板,想知道DLP6500这款板子能否用Python编程进行开发,是否有API接口?
    发表于 02-28 06:58

    请问DLP6540怎样编程

    请问DLP6540怎样编程怎样通过那个DLP composer来新建工程,配置各项参数,有参考资料教程之类的么,谢谢
    发表于 02-21 06:49

    手把手带你入门AWStudio运动控制编程

    导读面对一台ZMC600E运动控制器与多台伺服电机,我们该怎样让它工作起来?本文带你了解PLCOPen,并详细讲解如何使用AWStudio控制电机运动。在自动化领域,运动控制是一件很复
    的头像 发表于 02-10 11:38 1094次阅读
    手把手带你入门AWStudio运动<b class='flag-5'>控制</b><b class='flag-5'>编程</b>

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过Python接口提供了对Triton语言和编译器的访问,使得用户可以在
    的头像 发表于 12-24 17:33 1458次阅读

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2817次阅读