有没有办法将Python代码“编译”到Arduino(Uno)上?

2024-05-16 19:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个机器人类型的项目,有一个Arduino Uno,长话短说,我正在试验一些人工智能算法。然而,我需要用L{A2}/^ {A3}实现一些高级矩阵算法,但它们在C或C++中是完全的噩梦。即使图书馆在外面,这也太荒谬了。

我可以用Python做这个项目吗?我想我听说了一些关于Mega具有这种功能的消息,但是我有一个Uno,在这一点上替换它不是一个选项(这会使项目倒退很多)。另外,我听说了一些关于使用Python通过USB与Arduino通信的消息,但是当它运行时,我无法插入USB电缆。我需要能够上传程序并完成它。

有什么选择吗?还是我已经到了死胡同?


Tags: 项目算法a2消息类型图书馆机器人矩阵
3条回答

很难让任何一种Python脚本直接在Arduino uno上运行,因为它是一种解释性语言,所以除了纯文本脚本之外,还需要一个解释程序。在arduino uno可能没有足够的记忆来完成所有这些。

<> P>你可以做的最好的方法是找到一种将Python脚本编译成本地机器代码的方法(这是C/C++的工作原理)。我已经看到一些项目在其他平台上做了类似的事情,但是(据我所知)还没有一个项目能成功地为Arduino uno做这些事情。

您可以访问http://www.toptechboy.com/using-python-with-arduino-lessons/了解更多信息。

希望这对你有帮助。 谢谢!

这几年有一个关于在机器人技术中使用Python的讨论,Graeme Cross博士称之为Ah! I see you have the machine that goes 'BING'!

他建议在微控制器板上使用Python的唯一选项是PyMite,我认为它的名称也是Python-On-A-Chip

它已经移植到了一系列的董事会-特别是他提到的Arduino巨型,你说这不是你的选择,但它有可能是支持其他Arduino董事会。

但是,因为它是Python的“不包括电池”版本,所以很可能在启动和运行numpy/scipy等时遇到真正的问题。

正如其他海报所建议的,在C中实现可能是阻力最小的途径。

再次更新:不是专门针对Arduino的,但是pyMCU看起来提供了一个芯片上的python。作者说,如果有足够的兴趣,他可能会考虑开发一个Arduino版本的pyMCU。

我开始对C++进行一个“小Python”(称为Pyxie——一个PY-cc-pyc C)的编译器,具体的目的是编译一个Python的理智子集到C++,这样它就可以运行在一个ARDUINO上。

在编写本文时(0.0.16),这还远未完成,但它目前可以编译python的一个非常小的子集,足以让arduino“blink”示例运行。为了支持这一点,它有一个编译配置文件——本质上意味着“使用arduino工具链编译”

它可以编译的程序如下所示:

led = 13

pinMode(led, OUTPUT)

while True:
  digitalWrite(led, HIGH)
  delay(1000)
  digitalWrite(led, LOW)
  delay(1000)

此解析,执行分析(如类型推断等),编译成C++,然后编译成十六进制文件,您可以加载到设备上。

要让它变得有用还有很长的路要走,但它正在进步,而且确实有路线图等

特别是与Micropython(和PyMite)的一个关键区别是,它被设计成编译到太小而无法运行任何一个实现的设备上。(这也意味着它与ShedSkin的不同,而Python到C++编译器的目标执行环境更大)

相关问题 更多 >