如何用python编程和控制arduino

不幸的是,不可能直接用Python编程Arduino,但是您可以使用Python程序控制它。下面是方法。...

Python风靡了编码界。随着这门新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们生产家用电子产品的方式。如果你能用Python编程一个Arduino,那不是很棒吗?

control-arduino-python

没有比把两件很酷的事情结合起来更好的感觉了。遗憾的是,用Python直接编写一个Arduino是不可能的,因为董事会没有选择在板上解释语言。但是,可以使用Python程序直接控制USB。

本文将向您展示如何使用Python程序从命令行设置一个Arduino UNO(尽管任何与Arduino兼容的板都可以在这里工作)。本教程是为Windows10编写的,但也适用于Mac和Linux。你甚至可以使用这个工作流程直接从树莓皮控制一个Arduino,获得最终的双重DIY体验。

为python设置arduino

在今天的项目中,我们将使用Arduino Uno以及Python的pyFirmata接口。您几乎可以使用任何与Arduino兼容的板来实现这一点,尽管在编写本文时,pyFfirmata接口仅支持Arduino Uno、Mega、Due和Nano。如果您已经是Python大师,您可以将自己的board支持添加到pyFirmata——如果您这样做,请确保更新他们的GitHub!

program and control arduino with python

如果您还没有安装Arduino IDE。如果你对微控制器世界是完全陌生的,我们的初学者指南Arduino将帮助你把一切都做好。

连接Arduino板,打开IDE。确保在“工具”菜单中选择了正确的板和端口。加载StandardFirmata示例草图并将其上载到电路板。这将允许您直接控制Arduino,只要它通过USB连接到计算机。如果草图上传到你的董事会没有任何错误,你准备好继续。

python和命令行控件

我们将使用Python3.4来控制Arduino,因为您将要安装的模块将此指定为最新的兼容版本。在此之前的任何版本都应该可以正常工作,并且已报告更高版本可以工作。您可以从Python软件基金会网站下载python3.4forwindows10。如果您想运行多个版本的Python,我们的Python虚拟环境指南将能够帮助您。

一旦安装了Python,我们就要将它添加到系统的PATH变量中。这将允许我们直接从命令行运行Python代码,而不需要位于安装它的目录中。您可以通过打开控制面板,搜索环境并单击编辑系统环境变量来完成此操作。在窗口底部选择环境变量。这将打开此窗口:

program and control arduino with python

如果已经在列表中看到路径,请单击编辑,然后添加Python和Python/Scripts目录。如果没有路径变量,请单击“新建”并添加它。请注意,Python是直接安装到C:\中的。如果你在别处安装了它,你需要修改它来反映这一点。单击OK返回windows链,您几乎可以用Python控制Arduino了!

神奇的润滑脂

你需要最后一个谜题,让Python和我们的Arduino好好交谈。这是Python接口pyFirmata的形式。这个由Tino de Bruijn创建的接口可以从github下载,不过您可以通过键入以下命令行直接安装它:

pip install pyfirmata

一切都很好,它应该安装并如下所示:

program and control arduino with python

如果失败,请检查将Python添加到环境变量部分,并确保为Python目录指定了正确的路径。

让它发生

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

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

首先,您需要从pyFirmata模块以及标准Python时间模块导入所需的内容。

from pyfirmata import Arduino, util
import time

现在你要建立Arduino董事会。本文假设您使用的是Arduino Uno板,但支持其他几个Arduino板。有关板上支持的详细信息,请参阅pyFirmata github。

检查您在ArduinoIDE中使用的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是ArduinoUno 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[path to the script's directory],然后键入python闪烁.py.

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

程序输出应如下所示:

program and control arduino with python

在您选择的闪烁次数后,只要按回车键,Arduino就会执行您的命令。

program and control arduino with python

小开端

这个项目是Python和Arduino板之间通信的一个基本开始。这种方法与通常将脚本上传到Arduino本身的工作流程非常不同,但是它为使用平台打开了一种全新的方式,特别是如果您喜欢Python编程语言的话。

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

为了让它成为最终的DIY体验,为什么不建造你自己的NAS盒,并用它来控制你的设备呢?想象一下在你的Plex服务器上按play并让灯自动关闭是多么酷!

你已经在用Python控制Arduino了吗?有没有我们还不知道的解决办法?请在下面的评论部分告诉我们!

  • 发表于 2021-03-11 16:20
  • 阅读 ( 881 )
  • 分类:编程

你可能感兴趣的文章

阿杜伊诺(arduino)和树莓皮(raspberry pi)的区别

关键区别–arduino vs raspberry pi Arduino和Raspberry Pi的主要区别在于Arduino是一个微控制器开发板,而Raspberry Pi是基于Linux操作系统的通用计算机。 选择Arduino或Raspberry Pi取决于要开发的项目。本文讨论了最常见的Arduino Uno和Raspberry Pi...

  • 发布于 2020-10-11 03:02
  • 阅读 ( 440 )

6种将arduino连接到android的简单方法

Arduino板和类似的微控制器使创造力比以往任何时候都更容易获得。无论你是控制LED灯带,自动化你的家,甚至保护你的财产,这些小奇迹是大多数DIY电子产品的核心。 ...

  • 发布于 2021-03-12 23:13
  • 阅读 ( 352 )

如何用arduino遥控你的家,5个diy项目

...何工作的基础知识,并给出一些任何人都能做的简单DIY Arduino项目的例子。 ...

  • 发布于 2021-03-13 11:21
  • 阅读 ( 281 )

9个最好的pi编程资源,把你的树莓pi使用

...流,偶尔会有一个Raspberry Pi关注点,比如这篇文章介绍了Arduino、Raspberry Pi、NodeMcu和MQTT。 ...

  • 发布于 2021-03-14 03:57
  • 阅读 ( 233 )

10个涉及编程或脚本的有益爱好

... Arduino是电子、编程和休闲的完美结合。它是一个开源的微控制器(即一个微型的单电路计算机),具有各种组件和可编程逻辑。把它想象成**使用的乐高,使用实际的线路...

  • 发布于 2021-03-14 18:18
  • 阅读 ( 264 )

arduino vs raspberry pi:哪台是你的迷你电脑?

Arduino和Raspberry Pi看起来非常相似——它们都是可爱的小电路板,上面有一些芯片和引脚——但实际上它们是非常不同的设备。 ...

  • 发布于 2021-03-15 06:18
  • 阅读 ( 288 )

如何用python读写google工作表

Python是一种优秀的编程语言。语法可能看起来奇怪和不寻常,但它很容易学习和使用。它支持Minecraft Pi版,以及一系列网站和学术研究项目。 ...

  • 发布于 2021-03-16 13:43
  • 阅读 ( 582 )

如何使用arduino eeprom在电源周期之间保存数据

你知道Arduino关闭后可以存储数据吗?不是存储在闪存中的草图。我说的是EEPROM中的可变数据。加入我,我向你展示如何读写它,以及它能为你的项目做些什么。 ...

  • 发布于 2021-03-16 14:09
  • 阅读 ( 331 )

如何用arduino和unity制作自定义游戏控制器

...戏控制器与Unity游戏引擎一起使用。这个控制器将由一个Arduino Uno提供动力,不过你也可以在这个项目中使用许多替代品中的一个。我们还将创建一个基本的游戏,你将使用你的控制器,以避免下降的物体和减慢时间。 ...

  • 发布于 2021-03-17 05:47
  • 阅读 ( 583 )

如何用raspberry-pi和ifttt构建光感应智能开关

... DC 5V Relay Module with Optocoupler Low Level Trigger Expansion Board for Arduino R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi BUY NOW ON AMAZON ...

  • 发布于 2021-03-22 21:01
  • 阅读 ( 262 )