Questions tagged «c++»

C ++是用于对Arduino IDE进行编程的标准语言。但是,Arduino IDE确实内置了许多库,因此在草图代码中不会直接调用“ main”之类的功能。大多数在线Arduino代码都是用这种语言编写的。


9
C ++与Arduino语言?
使用Arduino时每种语言有什么优势? 我认为这是一个很好的一般性问题,但我会补充一点为什么我要问是否有人想给我小费。 我对JavaScript,PHP等预处理语言有丰富的经验,并且喜欢Java和Visual Basic等语言。换句话说,我知道编程技术以及经典和原型对象定向,但是对直接与硬件通信一无所知。 我正在制作一个八轴飞行器,并认为面向对象的方法将是最简单的。(该软件将具有很多功能...)但是,我从未用C ++编写过。 由于这是一个Q&A网站,应该可以帮助其他人,因此,仅在开始时提出的一般性问题就很重要,但是我很乐意就我的情况发表任何意见。
81 c++  arduino-ide 


3
对常量使用#define或const int更好吗?
Arduino是一个奇怪的混合体,在嵌入式世界中使用了某些C ++功能-传统上是C环境。确实,很多Arduino代码都非常像C。 C传统上将#defines用于常量。有许多的原因: 您不能使用设置数组大小const int。 您不能将其const int用作case语句标签(尽管在某些编译器中确实可以使用) 您不能用初始化const另一个const。 您可以在StackOverflow上检查此问题以获取更多理由。 那么,我们应该为Arduino使用什么?我倾向于#define,但是我看到一些代码正在使用,const而有些则使用了混合。

3
类和对象:使用它们实际上需要多少个文件类型?
我以前没有使用C ++或C的经验,但是知道如何编写C#并正在学习Arduino。我只是想整理我的草图,即使有其局限性,我也对Arduino语言非常满意,但是我真的很想在Arduino编程中采用一种面向对象的方法。 因此,我看到您可以通过以下方式(并非详尽的列表)来组织代码: 单个.ino文件; 同一文件夹中的多个.ino文件(IDE调用并显示类似“选项卡”的内容); .ino文件,在同一文件夹中包含.h和.cpp文件; 与上面相同,但是文件是Arduino程序文件夹中的已安装库。 我也听说过以下方法,但尚未使它们起作用: 在相同的单个.ino文件中声明C ++风格的类(听说过,但从未见过工作-可能吗?); [首选方法]包括一个在其中声明一个类的.cpp文件,但不使用.h文件(这种方法会行得通吗?); 请注意,我只想使用类以使代码更加分区,我的应用程序应该非常简单,仅涉及按钮,LED和蜂鸣器。
20 programming  c++  class 

5
使用结构和类时有哪些开销和其他注意事项?
嵌入式系统上的C传统上使用结构来保存结构化数据。 Arduino将C ++引入了表格,因此我们可以改用类。 假设我们有两个不同的数据结构,可以认为它们非常相似: typedef struct { int valueOne; int valueTwo; int valueThree; } value_t; 和: class Value { public: int valueOne; int valueTwo; int valueThree; } 在内存方面,这会有什么不同? 我仍然看到大量使用struct技术-为什么这样做?


1
为什么我的IF语句看不到全局变量?
我是Arduino编程的新手。我在编译以下代码时遇到问题: const int relay1 = 10; //Power Relay 1 const int relay2 = 11; //Power Relay 2 const int relay3 = 12; //Toggle Relay const int button1 = 3; const int button2 = 4; const int button3 = 5; //---Button States---\\ int button1State; //Current state of Button 1 int button2State; …

4
是否提供设置和循环以方便使用?
Arduino草图通常具有setup和loop功能。这些功能仅仅是为了方便而提供的,还是实际上具有特殊目的?(例如:在设置和循环中是否禁止或允许某些操作) 这两个代码是否等效: 经典 void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } 无循环 void setup() { pinMode(LED_BUILTIN, OUTPUT); while(true) { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } } void loop() { } 是否可以在没有设置或循环的情况下编写代码,例如提供main方法或其他入口点?
13 programming  c++ 

3
带字符串参数的函数
在我的主循环中有以下字符串: String string1; 我有一个函数,它将string1作为参数,并使用它以SMS形式发送此字符串。 sendSMS(string1); 这是sendSMS()函数(不带参数): void sendSMS() { sms.beginSMS(remoteNumber); sms.print(finalstr); sms.endSMS(); lcd.setCursor(0, 0); lcd.print("Message sent!"); delay(10000); } 我的问题是: 如何将字符串输入参数放入sendSMS? 我还需要对sendSMS()使用函数原型吗?(因此它出现了3次,在原型中出现1次,在声明中出现1次,在调用中出现1次)。还是在主loop()之前不需要使用函数原型?
11 programming  c++ 


2
如何将浮点数转换为char *?
在电气工程堆栈交换上问了这个问题,并直接在这里进行: 自我解释;我将如何将浮点数转换为char *?我有一些代码,其中的浮动“电阻”不断更新。我希望能够将变量“结果”更新为“电阻”的值。如果有帮助,以下是一些代码: const char * result = ""; float resistance = 2.5; result = resistance; //This bit (obviously) doesn't work 谢谢你的帮助!
11 arduino-uno  c++  c  float 

2
.ino Arduino Sketch是否可以直接在GCC-AVR上编译?
好的,我们都在网上看到了诸如Arduino vs C ++之类的问题,或者其他类似的问题。除通过抽象信息外,绝大多数答案甚至都不会涉及编译差异。 我的问题旨在解决在将重命名为.cpp文件或c ++的其他类似文件扩展名的.ino文件如何使用GCC-AVR进行编译时的实际差异(而非首选项)。我知道您至少必须包括Arduino头文件,但除此之外,如果使用例如GCC-AVR将.ino编译为.cpp文件,会导致编译错误。为简单起见,让我们使用经典的眨眼示例来说明差异。或者,如果您要使用更好的代码段,请务必在回答中包含该代码段,并彻底解释差异。 请不要就哪种是更好的使用方式或工具发表意见。 仅供参考。我使用Platformio进行开发,并且发现在编译过程中幕后发生了转换过程。我试图了解那里实际发生的情况,因此,当我在Arduino中编写代码时,我也理解“纯” C ++版本。 感谢您提前对我的问题进行周到的回答。

3
如何编写与makefile兼容的草图?
我想写草图,以便可以使用Arduino IDE或可以选择使用GCC和makefile来构建/上传它们。 我知道在顶部包括函数声明,但是为了使我的草图被编译器视为有效的C ++,还有其他事情要做吗? 更新1 了解Arduino IDE对.ino和.pde文件的操作很好,但是与我的问题无关,因此这不是重复的。我想知道的是“我如何编写程序,以使Arduino IDE 和 g ++ 都认为它是有效的。 此处提供的Official(?)Makefile 解释了使用Makefile 代替 IDE时的操作: # The Arduino environment does preliminary processing on a sketch before # compiling it. If you're using this makefile instead, you'll need to do # a few things differently: # # - Give your …


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.