如何使用C++编程Arduino

34

最近我一直在尝试使用Arduino,想知道有没有办法用C++编程它。我一直在使用C++/Processing语言,在Vim中编写代码,并使用makefile进行编译和上传到Arduino。

但我的目标是能够使用类和所有伟大的C++功能(或至少一些)来编程。最终,我甚至希望以纯C编程,但我很难找到如何实现这两个目标的方法。如果有人能指点我正确的方向或帮助我解决问题,那就太好了。


Arduino的编程语言是C或C++。您可以随时使用类。 - user529758
2个回答

63
这是我的经验:我正在使用Arduino、传感器、电机、LED和蓝牙构建一款面向自闭症儿童的机器人智能玩具。我编写了自己的库以实现我所需的功能,使用了C++语言。但我发现Arduino IDE编译器是一个较旧的版本,不支持新的C++11特性。
因此,我必须找到一种方法来编译C++11代码并将其上传到我的Arduino。结果证明是相当基本的:我需要一个Makefile、avr-gcc 4.8工具链,就可以搞定了!Makefile的工作由Sudar完成 (https://github.com/sudar/Arduino-Makefile),这个工具很好用。尽管需要对其进行一些自定义设置,以适应我的项目。
这是我为我的项目编写的一些文档。你应该看看,对你可能有用:https://github.com/WeAreLeka/moti/blob/master/INSTALL.md 希望对你有所帮助!祝好!
编辑于08/16/2014:
由于我从朋友和其他开发人员那里得到了许多类似这样的请求,我决定建立某种“框架”,以便快速轻松地启动您的Arduino项目。这就是裸机Arduino项目:https://github.com/WeAreLeka/Bare-Arduino-Project 希望它能有所帮助!如果你发现了错误或者可以改进的地方,请随时提出问题。:)

@Michaelslec 你好!有一段时间没联系了,很高兴告诉你我听从了你的建议,现在正在学习Vim :) 有时候还会用ST来提高速度,但我会强迫自己使用Vim,因为它感觉太棒了! - ladislas
我为你感到高兴!其实我也曾经转用Sublime Text 3,但是过了一段时间后我又回来使用vim了。 如果你需要的话,我很乐意借给你我的.vimrc文件。 我在里面设置了一些非常酷的快捷方式。另外,如果你进行Arduino以外的C ++编程,我还制作了一些makefile。 如果你想看的话,请私信联系我! Vim太棒了! - Michaelslec
@ladislas,您能否使用现有的Arduino特定库,例如LED库等?这样做难度如何? - Startec
@Startec 你是什么意思?像PWM和串口这样的所有库都可以使用Arduino提供的。由你自己安装的Arduino必须放入项目中。 - ladislas
1
感谢 @ladislas 的出色工作。这正是我所寻找的! - tenacity
显示剩余5条评论

5
Arduino IDE支持的语言基本上是C++,还有一些由Arduino程序员实现的附加功能。在一个sketch中,你只需编写setuploop例程(随着你成为更高级的程序员,你会接触到其他几个例程)。
在sketch中,你可以定义库中的类,并使用Arduino IDE包含该库。Arduino IDE实现了一个Atmel编译器,用于创建适用于Arduino处理器的代码(有几种型号可选)。你可以在Arduino IDE之外工作(听起来你正在这么做),但你仍然需要一个针对正确的Atmel处理器进行编译的编译器。
最后,C++类可能会变得很大,所以在某些时候,你的源代码将超出处理器可以存储的范围。因此,Arduino类是稀疏而简洁的!
首先,我建议使用Arduino IDE编写sketch(它们基本上是C++)。随着情况允许,你可以使用C和/或C++编写自己的库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接