gpt4 book ai didi

arduino - Serial.begin(speed, config) 没有为 Leonardo Board 编译

转载 作者:行者123 更新时间:2023-12-01 08:26:03 24 4
gpt4 key购买 nike

我想将我的串行通信配置为没有奇偶校验、1 个起始位和 2 个停止位。 documentation对于 Serial.begin(speed, config) 状态:

(...) An optional second argument configures the data, parity, and stop bits. The default is 8 data bits, no parity, one stop bit.

文档还列出了可能的配置值。根据我(有限)的理解,我需要SERIAL_7N2或SERIAL_8N2来满足我的要求。 (我不确定数据位如何与我需要的 1 起始位相关。)

但是,我什至无法编译,因为我不知道如何将该配置值提供给 begin 方法。 (我没有多少 Arduino/C++ 经验)。

在我的代码中,我尝试了以下两种变体:

Serial.begin(9600, SERIAL_8N2);
Serial.begin(9600, "SERIAL_8N2");

我错过了什么吗?

附加信息:

Serial.begin(speed, config) 已与最新的 Arduino 1.0.2 IDE 一起引入版本。

可以找到定义/实现 begin 方法的代码:


编辑:

根据 PeterJ 和 borges 的回复,以下变体是正确的。

Serial.begin(9600, SERIAL_8N2); 

但是,它仍然无法正常工作。

我发现如果我将配置的板从我的 Arduino Leonardo 更改为 Arduino Uno,编译错误不会发生。 .

因此,它可能是一个错误,只发生在一部分板子上......或者它可能不受支持?!


编辑 2:

现在已经解决了:)博尔赫斯的回答让我找到了正确的解决方案!

最佳答案

您在评论中提到:(编辑:现在在标题中)

I don't get the compile error if I change the board from my "Arduino Leonardo" to "Arduino Uno".

Arduino Leonardo 在串行通信方面有一些特点:

  1. Leonardo 有一个微 Controller ( ATmega32U4 ),它具有 native USB 通信功能。为了与已经建立的整个生态系统保持兼容性,Leonardo 通过 USB 虚拟化串行通信。您可以使用代码中的 Serial 访问此通信。实际上,您可以通过 USB 插头访问该通信。

  2. 要使用“真正的”串行通信(也称为串行 TTL),您需要使用引脚 0 (RX) 和 1 (TX)。在代码中,您将使用 Serial1(注意数字 1!)。

一个例子:

void setup() {
Serial1.begin(9600, SERIAL_8N2);
Serial1.println("Hello?");
}

void loop() {
}

更多信息(推荐):

关于arduino - Serial.begin(speed, config) 没有为 Leonardo Board 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com