问题标签 [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.
c++ - 如何连接二进制宏值?什么是二进制类型?
从事使用二进制命令代码的 arduino 项目。
采样率和过滤器类型是连接的 2 个代码。采样率 = MSB 一半,滤波器类型 = LSB 一半。
发现:C中的按位连接
它显示了如何连接两个二进制值并将它们相加。
.h file
在as 宏中包含所有二进制代码。我可以对纯二进制值做同样的事情吗?类型是什么?将使用连接的二进制值 - 作为函数中的命令。
所有宏:
c++ - 从 'const char*' 到 'char*' Arduino Uno 的 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)
同样的错误。
我该如何解决这个问题?
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:没有这样的文件或目录
c++ - 当您希望在 Arduino UNO 编程中同时执行不同的功能时,使用什么代码/语句?
我想同时在 Arduino UNO 中执行一个简单的循环,但我不知道使用什么语句/代码能够同时执行它。
我已经尝试过while循环并且有时间包括开始。但是由于该函数在循环中彼此分离。LED的执行是不同方向的第一个功能和第二个功能。但我希望它们同时被执行。
事实证明,执行是从最高管脚到最低管脚的功能执行的。然后,最低的引脚到最高的引脚。而不是同时执行。
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 时,在取平方根之前,我大多会得到一个负数。当然,负数的平方根不存在。当然编译器不会给出任何错误信息。
ftp-client - 如何在 Arduino C++ 的一个会话中将多个文件上传到 ftp
我的代码可以很好地将循环中的第一个文件上传到 ftp。但是一旦要上传第二个文件,它就会挂起。
我首先使用 lib 读取 SD 卡根文件夹,我设置 ftp 连接connectFTP()
用于建立数据传输端口。接下来我调用fileTransfer();
While 循环函数运行良好,直到传输第一个文件。一旦第二个文件满足 If 条件
if (fileTemp != fileName && fileTemp[0] == '1' && fileTemp[1] == '9')
并发送
没有回应。
收到的日志:
c++ - 尽管易变,但变量不改变状态
我正在检查在 while 循环的条件下是否按下了开关(负逻辑)。但是,如果我按下按钮,我存储输入按钮按下的变量不会改变状态。如果我一直按下开关并重置 Arduino 板,则可以识别按下。
我尝试使变量 volatile 但我不明白为什么它仍然不起作用?我也尝试从寄存器中读取,而不是digitalRead
徒劳。
似乎该变量ok_btn
只是读取一次并永远存储它!
integer-overflow - 通过利用溢出或使用 if 语句来避免 mod()
对于我的项目,我需要循环遍历一组值。在编译时选择元素和值的数量。目前我使用 mod 以各种不同的方式循环这些值(即不一定是简单的 i++)。
但是,我查看了 mod() 的成本,似乎它在包括 atmega Arduinos 在内的大多数架构中都是一个昂贵的功能,而且我的应用程序对时间敏感。
我提出了两种可能的解决方案,但都有缺陷。
溢出索引计数器,利用无符号溢出为零。这具有非常快的优点。缺点:我需要与数组元素一样多的数组元素,唯一字节 - 至少 256 个。此外,代码很难重新阅读,因为大多数人不会假设我故意溢出。
每当索引等于或超过它时删除 size_of_array 的 if 语句。优点是 size_of_array 可以。缺点:if 语句较慢(有多慢?)。
在这两种情况下,都不会遇到 mod 正确处理的边缘情况(即取非常大的模数)。
这两种解决方案有没有我没有想到的陷阱?有更好的解决方案吗?
c++ - 为什么相同的字符不相等
我有一个简单的代码。
我打开了串行监视器界面。我将波特设置为 9600 和“无行尾”并输入:a
, b
,.
输出为:
.
为什么来自串口的字符不等于.
?