问题标签 [arduino]

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 投票
4 回答
13917 浏览

python - 使用 pySerial 从 Python 获取输入/输出错误

我有一个 Python 脚本,它通过pySerial将数据包写入 Arduino 板。有时在将代码写入开发板时,pySerial 会引发输入/输出错误,错误码为 5。

一些研究表明,这表明在写入表示与 Arduino 板连接的文件时出现错误。

发送的代码只发送单字节数据包:

此代码打印的错误是:

操作系统错误输入/输出错误 Errno 5

发送时我的代码有问题吗?我是否需要检查串行连接是否已准备好发送某些内容,或者发送后是否应该有延迟?还是硬件或与硬件的连接有问题?

编辑:我从 pyserial 查看了 Linux 实现,该实现只是将错误传递给我的代码。所以从那里没有新的真正见解。有没有一个好方法来测试程序中发生了什么?

0 投票
4 回答
7529 浏览

arduino - 当我通过串行打印时,Arduino 的模拟读取()返回垃圾

我正在用 Arduino 制作时钟,我想制作一个按钮来设置时间。所以,只是为了测试,我在模拟输入引脚 0 中插入了一根电线,并编写了两行代码来读取引脚并通过串行打印它,但我得到的只是垃圾。

?j?d?±µ?Ê??jDd?±µ???ºjRd?±µ???ºj?d?±µ?Ê??j?d?±µ?É?ªjRd?±µ?? ?ÊjRd?±µ???Âj?d?±µ????j?d?±µ?É??j Rd?±µ????j?d?±µ???ºj?d? ±µ?É??jRd?±µ????j?d?±µ?Ê?ÊjDd?±µ???Âj?d?±µ????j?d?±µ?É?? jRd?±µ????j?d ?±µ?É?ÂjRd?±µ???Êj?d?±µ???ªj?d?±µ?Ê?Êj$d?±µ?? ?ÂjRd?±µ????j?d?±µ????jdd?±µ????jRd?±µ???Âj?d?± µ?É?ÊjRd?±µ??? ?j?d?±µ?Ò?Êj?d?±µ?É?ÂjRd?±µ????j?d?±µ????j?d?±µ?É??jRd?± µ???Âj?d?±µ???Êj?d?±µ? ??ªj?d?±µ???Êj?d?±µ???ÂjRd?±µ????j?d?±µ????j?d?±µ?É??jRd? ±µ???Âj?d?±µ?Ò?Êj?d?±µ?É?ªj?d?±µ?É? ?jTd?±µ???Âj?d?±µ????j?d?±µ?É??jRd?±µ????j?d?±µ?É?ÂjRd?±µ? ??Êj?d?±µ?É?ªjRd?±µ???Êj?d?±µ???ºj ?d?±µ?È??jTd?±µ????jRd?±µ? ??ªj?d?±µ?È?ÂjTd?±µ?É?ÊjRd?±µ???ªj?d?±µ???Êj?d?±µ???ºj?d?±µ? É??jRd ?±µ???Êj?d?±µ???ªj?d?±µ?É?ÂjPd?±µ???Êj?d?±µ???ªj?d?±µ ?Â?Êj?d?±µ?É?ºjRd?±µ????j?d?±µ?É??jRd?± µ???ªj?d?±µ?Ê?Âj?d?±µ???ÊjRd?±µ???ªj?d?±µ?Ò?Êj?d?±µ???ºjRd?± µ????j?d?±µ???Êj?d?±µ?Ê?ªjdd?±µ? ??ÂjRd?±µ???Âj?d?±µ?É?ªjPd?±µ???Êj?d?±µ????j?d?±µ?É??jRd?±µ? ??Êj?d?±µ?É?ªjdd?±µ???ÂjRd?±µ??? Âj?d?±µ?É?ªjDd?±µ???Êj?d?±µ?Ê??j?d?±µ?É??jRd?±µ???ÊjRd?±µ??? ªj?d?±µ?Ê?ÂjPd?±µ???Âj?d?±µ???ªj ?d?±µ?É?Êjdd?±µ?É??jRd?±µ???? j?d?±µ?É?Êj$d?±µ???ªjRd?±µ???Âj?d?±µ?Â?ÂjTd?±µ???ªj?d?±µ??? Êj?d ?±µ????jRd?±µ????j?d?±µ?É?ÊjTd?±µ???ªjRd?±µ???Âj?d?±µ??? Âj?d?±µ?É?ªjRd?±µ???ÊjRd?±µ?Ò??jTd?± µ????j?d?±µ???Êj

为什么?


编辑:

我已将数字引脚 0 设置为输出,我认为这可能是问题所在,所以我访问了 Arduino 网站并找到了Analog Input Pins页面。

所以我试图从他们说的引脚 14 读取模拟输入引脚 0,但我得到了相同的输出。

顺便说一句,我正在尝试从仅模拟引脚读取,而不是数字引脚。

0 投票
2 回答
776 浏览

arduino - 创建网络适配器 - 有多难?

我有兴趣在Arduino之上构建一个小型(商业)设备。我希望它能够与网络连接。网络如标准以太网、Cat5、RJ-45 等。

我知道有一个Ethernet Shield,但它的成本甚至比 Arduino 本身还要高,而且相当大。自然,我希望我的设备尽可能小且尽可能便宜。

所以我正在考虑自己重新创建一个以太网模块。问题是——我对以太网没有任何经验,也不知道从哪里开始寻找。因此,我什至不能说我的想法是否可行。

最终,我希望该设备具有三个端口 - 一个用于输入信号,两个用于输出,因此该设备本质上是一个小开关,它也可以插入其中。切换能力不需要非常快——数据量会很低。10Mbit绰绰有余,甚至可以更慢。

如果这是不可能的,用于控制设备本身的单个端口也可以。

我正在考虑的另一种可能性是电力线通信——通过电力线发送信息。这是我没有经验的另一个领域。我应该查看哪些硬件,在哪里可以找到有关必要软件的信息?

那么 - 谁能告诉我这些想法是否可行,如果是的话 - 我应该从哪里开始寻找?

0 投票
6 回答
846 浏览

c++ - 如何防止需要复制传递给 avr-gcc C++ 构造函数的字符串?

ArduinoUnit单元测试库中,我提供了一种为 TestSuite 命名的机制。该库的用户可以编写以下内容:

这是预期的用法 - TestSuite 的名称是字符串文字。然而,为了防止难以发现的错误,我觉得有必要满足不同的用途,例如:

因此,我已经像这样实现了 TestSuite:

抛开无法处理构造函数中的内存分配失败的问题,我更愿意简单地将指针分配给这样的成员变量:

有什么方法可以更改接口以强制“正确”使用它,以便我可以取消动态内存分配?

0 投票
2 回答
430 浏览

c++ - C/C++ 内存问题?

为我的 Arduino 编程(使用某种 C/C++ 组合),我注意到了一些奇怪的事情。

每次通过串口通信时,我都会留意 SRAM 的使用情况。通常,它的范围在 300~400 字节之间。然而,在添加一个新例程后(见下文),我注意到它总是从 300~400 字节的可用内存跃迁到正好1023 字节。我的直觉是有问题。

这是新的惯例

这就是 MemoryCheck 例程

请注意:首先,它不起作用。添加 endl 命令后,它神奇地工作,但后来我注意到内存问题。

有人有解决方法的想法吗?

0 投票
10 回答
100863 浏览

python - pyserial - 如何读取从串行设备发送的最后一行

我有一个 Arduino 连接到我的计算机上运行一个循环,每 100 毫秒通过串行端口将一个值发送回计算机。

我想制作一个 Python 脚本,每隔几秒钟从串口读取一次,所以我希望它只看到从 Arduino 发送的最后一件事。

你如何在 Pyserial 中做到这一点?

这是我尝试过的代码不起作用。它按顺序读取行。

0 投票
2 回答
1768 浏览

hardware - 控制 Rainbowduino 的问题

我刚买了一个Rainbowduino来控制单个 LED 的负载(不是 RGB 矩阵)。到目前为止,所有文档都旨在控制 RGB 阵列,这不是我想要的。

如果您不熟悉 Rainbowduino,它是一个Arduino克隆,具有 24 个 120 mA 的恒流通道、8 个每个 500 mA 的超级源驱动器通道以及 5 V - 12 V DC 的宽输出电压适应。非常适合驱动 LED。产品网页在这里:http ://www.seeedstudio.com/blog/?page_id=187

我已经连接了 16 个 LED,并希望能够使用digitalWrite(). 我已经将一些演示代码上传到了没有真正工作的板上。我发现 8 个驱动源通道可以digitalWrite()通过引脚 3-11 轻松控制。然而,控制其他 24 个接收器通道更加困难。显然,它们由 3 个移位寄存器(每个一个)控制,我只能使用 shiftOut 访问它们。我不知道这是如何工作的。有人可以帮我指出正确的方向吗?

一半的 LED 连接到蓝色 1-8,另一半连接到绿色 1-8。正极连接到已设置为 HIGH 的 VCC1-2。我确信电路连接正确,这是我遇到问题的编程。

我查看了 Rainbowduino 附带的示例代码,但我无法理解它。我该如何解决这个问题?

0 投票
3 回答
1451 浏览

c - 位屏蔽数组的索引,Arduino 环境

我正在尝试从结构中获取一个 16 位无符号整数,屏蔽它的前 8 位,并将其用作具有函数 analogWrite 的数组的索引,该函数将 Arduino 上的输出引脚和输出字节作为参数. 有问题的代码如下所示:analogWrite(outputPin, my_array[myStructure->data & 0xFF00 >> 8]);

不幸的是,这段代码不起作用。我总是得到零作为输出。有任何想法吗?

0 投票
2 回答
7822 浏览

c++ - 用于解析 HTTP 请求的标准或通用 Arduino 库?

我正在尝试将带有Arduino Ethernet Shield的 Arduino设置为服务器以了解 GET 和 POST 请求。我发现“ Web 服务器结构良好”,可以对其进行修改以满足我的需要,但是 C++ 中是否已经存在一些极其轻量级的东西,并且可能已经普遍用于带有 Arduinos Ethernet Shields 的 Arduinos?

0 投票
9 回答
3625 浏览

c++ - 位设置和代码可读性

我有一个 Arduino 应用程序(实际上是一个库),其中包含许多状态标志 - 最初我只是将它们声明为整数(在这种情况下是 uint8_t 所以 8 位无符号字符)。但我可以将它们全部组合成一个整数并使用位掩码操作来设置和测试状态。

前者的一个例子:

后者的一个例子

前者读起来更好,但后者效率更高(空间和时间)。在这种情况下,空间和时间效率应该总是获胜,还是这种优化只应在需要时进行?

(添加)

为了完整起见,这里是那些 bitWrite 等宏的 Wiring 定义: