问题标签 [arduino-c++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
156 浏览

c++ - 如何连接二进制宏值?什么是二进制类型?

从事使用二进制命令代码的 arduino 项目。

采样率和过滤器类型是连接的 2 个代码。采样率 = MSB 一半,滤波器类型 = LSB 一半。

发现:C中的按位连接

它显示了如何连接两个二进制值并将它们相加。

.h file在as 宏中包含所有二进制代码。我可以对纯二进制值做同样的事情吗?类型是什么?将使用连接的二进制值 - 作为函数中的命令。

二进制代码命令的用法目前看起来像

所有宏:

0 投票
1 回答
882 浏览

arduino - C++ map() 函数有什么作用

我目前正在查看以下代码(可以在此处找到

具体来说,我正在努力理解这条线:

是在做?

我可以为 map() 找到的最佳匹配函数在这里,但它似乎与传递给函数的整数参数不匹配。

显然,理想情况下我会运行这段代码,但不幸的是我还无法编译它。

我是否正确地找到了被调用的函数以及这个函数在给定参数下的行为是什么?我假设这是一个 map() 函数,类似于其他语言/框架(如 python、jquery 等)中的任何其他典型 map 函数。

谁能指导我正确的方向?

0 投票
1 回答
2528 浏览

c++ - 从 'const char*' 到 'char*' Arduino Uno 的 C++ 无效转换

我已经浏览了以下链接,但无法正常工作:

添加到 c* 从 const char* 到 char* 的无效转换"

为什么从字符串常量到'char *'的转换在C中有效但在C++中无效

我正在研究 arduino Uno。我需要将类型的参数发送char*给函数。我有以下代码:

我收到此错误:

初始化 'void GSM_MQTT::publish(char, char, char, unsigned int, char*, char*)' 的参数 5

void publish(char DUP, char Qos, char RETAIN, unsigned int MessageID, char *Topic, char *Message);

警告:从 'const char*' 到 'char*' 的无效转换 [-fpermissive]

发布(0, 0, 0, _generateMessageID(), 主题, msg);

我什至尝试过使用const std::string& topic = "SampleTopic";但收到此错误:

命名空间“std”中的“字符串”未命名类型

甚至const char* topic = (char*)"SampleTopic";并将其传递为func(topic)同样的错误。

我该如何解决这个问题?

0 投票
1 回答
281 浏览

arduino - 是否可以将 libstdc 添加到 arduino-ide

我正在使用 TensorFlow lite,它需要包含 libstdc 模式,特别是 cstddef,但 Arduino IDE 无法处理任何 libstdc。我知道它们已安装,因为我在 PC 中搜索并且它们位于 /usr/include/c++/8 中。

如果我更改 stddef.h 中的 cstddef 它可以完美地工作。

home/jan/Arduino/libraries/hello_world/src/third_party/flatbuffers/include/flatbuffers/base.h:31:19:致命错误:cstddef:没有这样的文件或目录

0 投票
2 回答
38 浏览

c++ - 当您希望在 Arduino UNO 编程中同时执行不同的功能时,使用什么代码/语句?

我想同时在 Arduino UNO 中执行一个简单的循环,但我不知道使用什么语句/代码能够同时执行它。

我已经尝试过while循环并且有时间包括开始。但是由于该函数在循环中彼此分离。LED的执行是不同方向的第一个功能和第二个功能。但我希望它们同时被执行。

事实证明,执行是从最高管脚到最低管脚的功能执行的。然后,最低的引脚到最高的引脚。而不是同时执行。

0 投票
1 回答
73 浏览

geometry-surface - 在圆上查找 Y 值

我想在一个圆圈上找到 Y 值。给定的是中心、半径和一些 X 值。例如:中心是 10,10,半径是 5。如果 X=(centerX - radius),X=centerX - radius +1,则 Y 值是多少,... X = centerX + radius。我明白每个 X 会有 2 个结果。我需要这个方程来使用 Arduino(C++)在 LED 矩阵上画一个圆圈

从公式开始

在哪里

y 的方程应该是:

但是我的矩阵上没有一个圆圈……当我为某些 x 值手动计算 y 时,在取平方根之前,我大多会得到一个负数。当然,负数的平方根不存在。当然编译器不会给出任何错误信息。

0 投票
1 回答
520 浏览

ftp-client - 如何在 Arduino C++ 的一个会话中将多个文件上传到 ftp

我的代码可以很好地将循环中的第一个文件上传到 ftp。但是一旦要上传第二个文件,它就会挂起。

我首先使用 lib 读取 SD 卡根文件夹,我设置 ftp 连接connectFTP()用于建立数据传输端口。接下来我调用fileTransfer();While 循环函数运行良好,直到传输第一个文件。一旦第二个文件满足 If 条件 if (fileTemp != fileName && fileTemp[0] == '1' && fileTemp[1] == '9') 并发送

没有回应。

收到的日志:

0 投票
2 回答
186 浏览

c++ - 尽管易变,但变量不改变状态

我正在检查在 while 循环的条件下是否按下了开关(负逻辑)。但是,如果我按下按钮,我存储输入按钮按下的变量不会改变状态。如果我一直按下开关并重置 Arduino 板,则可以识别按下。

我尝试使变量 volatile 但我不明白为什么它仍然不起作用?我也尝试从寄存器中读取,而不是digitalRead徒劳。

似乎该变量ok_btn只是读取一次并永远存储它!

0 投票
0 回答
15 浏览

integer-overflow - 通过利用溢出或使用 if 语句来避免 mod()

对于我的项目,我需要循环遍历一组值。在编译时选择元素和值的数量。目前我使用 mod 以各种不同的方式循环这些值(即不一定是简单的 i++)。

但是,我查看了 mod() 的成本,似乎它在包括 atmega Arduinos 在内的大多数架构中都是一个昂贵的功能,而且我的应用程序对时间敏感。

我提出了两种可能的解决方案,但都有缺陷。

  • 溢出索引计数器,利用无符号溢出为零。这具有非常快的优点。缺点:我需要与数组元素一样多的数组元素,唯一字节 - 至少 256 个。此外,代码很难重新阅读,因为大多数人不会假设我故意溢出。

  • 每当索引等于或超过它时删除 size_of_array 的 if 语句。优点是 size_of_array 可以。缺点:if 语句较慢(有多慢?)。

在这两种情况下,都不会遇到 mod 正确处理的边缘情况(即取非常大的模数)。

这两种解决方案有没有我没有想到的陷阱?有更好的解决方案吗?

0 投票
1 回答
112 浏览

c++ - 为什么相同的字符不相等

我有一个简单的代码。

我打开了串行监视器界面。我将波特设置为 9600 和“无行尾”并输入:a, b.输出为:

.为什么来自串口的字符不等于.