【发布时间】:2014-06-14 00:35:36
【问题描述】:
我正在尝试创建一对 arduino/xbee 信标,它们将始终相互传输一些信息(最终是 GPS 坐标)。问题是当他们都打开时,似乎都没有收到。我猜这是因为两者可能同时传输并淹没了其他消息。但是,我不确定是否有更好的方法,因为两者都不是奴隶或主人。这是我的设置:
硬件:
- 一对XBee-Pro 900 XSC S3B xbees。
- 一对teensy(arduino兼容多个UART)
XBee 设置
- 视频:542D
- DT:8153
- 串行连接到 Teensy 上的串行 3
代码
long lastTxTime = 0
void setup() {
Serial.begin(9600);
Serial3.begin(9600);
}
void loop() {
long now = millis();
// Send ever 0.5 seconds
if (now - lastTxTime > 500) {
Serial.println("SEND!");
Serial3.println("WOOT!");
lastTxTime = now;
}
delay(100);
// Print anything received
while(Serial3.available()) {
char c = Serial3.read();
Serial.print(c);
}
}
当我将两个 Teensy 连接到单独的终端时,它们都输出“SEND”并且很少收到“WOOT”。我将其中一个 XBees 直接放在 USB 板上的一个终端上,它会从另一个输出大部分“WOOT”消息。
我可以做些什么来完成这项工作?
【问题讨论】:
-
尝试删除
delay(100);。没有必要,因为您每 500 毫秒只发送一次,并且只有在有数据时才从Serial3读取和打印。另一个故障排除技巧:移除 XBee 模块,直接连接 Teensy 串行端口(Tx 到 Rx),看看你的代码是否有效。