使用Python而不是C / C ++对Arduino进行编程


36

我对C语言不是很熟练,我想知道是否有一种方法可以使用python对Arduino进行编程。为了能够自己调试脚本,这很可能需要使用其他IDE。


2
有两种用于Arduino编程的替代方法,其中之一是BitLash,还有一个基本的解释器。当您搜索Internet时,有几种选择,但是学习C / C ++最终将获得回报。
jippie 2014年

谢谢,我实际上在C语言上有所进步,只是不如我在Python上更好。
JVarhol

2

是否可以选择使用树莓派PI?
保罗

Answers:


26

要在Arduino上直接运行任何类型的Python脚本将非常困难。原因是这是一种解释语言,因此除了纯文本脚本之外,您还需要板载解释器。可能没有足够的内存来满足所有这些需求。

最好的选择可能是找到一种将Python脚本编译为本机代码的方法(这是C / C ++的工作方式)。我相信周围有一些项目可以在其他平台上做类似的事情,但是据我所知,没有一个项目可以成功地在Arduino上完成。

您可能会在Stack Overflow上找到有关此问题的更多有用信息:有没有一种方法可以将Python代码“编译”到Arduino(Uno)上


15

是的,可以(使用Python)对Arduino进行编程。Github上的此类项目之一是Python Arduino Prototyping API v2。它提供了非常基本的功能,例如数字I / O和模拟I / O。

这可以用于非常简单的项目。


*使用串行连接对板进行“编程”时,该项目有些技巧。它通过串行连接将命令传递到板上运行的草图,然后“执行” Python命令。


因此,必须将开发板插入计算机才能真正运行代码吗?
JVarhol 2014年

@JVarhol奇怪的是。
asheeshr 2014年

1
好吧,那真烂。使用Raspberry Pi会更容易。
JVarhol 2014年

8

有一个项目将Python虚拟机带到微控制器,包括Arduino Mega

这是来自Ardunio Mega README的引言,它使人对这可能是什么样的感觉(尽管我尚未测试!):

以下是使用ipm的示例会话::

ipm> import avr, sys
ipm> avr.ddrA(0xff)
ipm> avr.portA(0)       # Pins 22-29 all at 0 V
ipm> avr.portA(0xa5)
ipm> sys.heap()
(2622, 7424)

3

我在控制arduino上的引脚方面非常成功地使用了pyserial。您的工作站(笔记本电脑等)运行python脚本,然后与arduino实时通信。

它与直接在arduino上运行脚本并不完全相同,但是我所做的工作比我认为arduino可以处理的要多得多(一些音乐分析,点击REST API等)。


3

可以考虑的另一个选择是Arduino Yun。除了大多数Arduino拥有的AVR芯片外,它还包括运行Linux的MIPS芯片。由于它是Linux,因此您可以轻松地运行python代码,并且可以轻松安装任何纯python软件包。

但是,所有有趣的输入/输出功能都在AVR芯片上,而不在MIPS芯片上。诸如Autobahn和LininoIO之类的项目通过在AVR芯片上运行一个特殊程序来解决此问题,该程序根据MIPS芯片的指令执行I / O操作。


0

我们知道这是Arduino编程以及一般嵌入式世界中的一个开放问题。市场上有各种解决方案,例如MicroPython,但大多数解决方案专用于特定的主板,并且不允许保持系统实时。我们正在寻找解决方案!VIPER是适用于Arduino DUE和所有ARM 32位架构的Python虚拟机,可在实时操作系统上运行。这意味着您可以开发可由Arduino DUE,UDOO,Spark(所有开发板)以及新的ST核开发板上执行的Python脚本。此外,如果您需要高性能并精通C语言,则可以为VIPER开发实时模块,这些模块可以由Python脚本调用和管理。

您可以在这里http://bit.ly/kickviper上看到VIPER的运行情况


这不是一个公开的问题。python是一种可怕的缩进语言。
user2497

-1

是。只需导入pyfirmata,即可将Python用于Arduino编程,该pyfirmata可以将arduino与Python连接。


真正。但这不是OP所要求的。
sempaiscuba

-8

我很担心Arduino IDE不使用C / C ++语言。它是从Processing IDE 派生的,具有相当简化的类似于C / Java的语法。


8
Arduino IDE是C ++:它执行一些最少的预处理(在“ #include <Arduino.h>”之前加上您定义的函数的声明),然后调用常规的C ++编译器(GNU g ++)。
埃德加·博内

它是IDE本身,而不是从Processing派生的编程语言。
彼得·布隆菲尔德

几乎没有人关心在Arduino上实现IDE。关键是要能够编写可在Arduino上高效执行的Python。
wallyk '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.