0

最好的方法是什么,以便在通过红外线使用二进制发送消息时不会出错。目前,我通过将它们编码为二进制 ascii 值来发送消息,然后让两个带有红外灯和传感器的 Arduinos 检查起始位光,然后通过检查红外灯是否以 3 毫秒间隔打开或关闭来读取消息。

我需要做到这一点,以便无论发生什么(即来自遥控器或其他 Arduinos 的干扰),仍然会发送正确的消息。

我还想这样做,即使两个 Arduino 都尝试同时发送消息,他们也会互相收到消息。

我正在通过 Arduino IDE 的串行监视器发送和接收消息。

PS:我遇到一个问题,如果我一次发送很多信件,它们在一定数量的字符后开始变得混乱。即,如果我输入 1 - 30,数字之间有空格,我会得到结果:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 14 15 a s ....在 17 之后,数字会变得混乱。

如果您对可能出现的问题有任何想法,我将不胜感激!

4

1 回答 1

0

使用 IR 不出错将很难。问题是如果它错过了一次眨眼,它就会全部转移,然后你就搞砸了。一次发送 2 个也很困难,因为 arduino 不进行并行处理。

我会推荐一个不同的协议。IR 不适用于大量信息。如果您不需要无线,串行超级简单,如果需要,请使用蓝牙,例如 2 个 blueSMIRF。您必须将其设置为主机,但这就像串行通信一样。

做一些谷歌搜索,但我认为 IR 不会解决整个消息。1 或 2 个数字,当然,但一个完整的句子或其他东西不会很好地工作。

尝试的一件事是发送消息 2 或 3 次,然后比较它们是否相同。如果是,则很可能是正确的,但如果不同,您可以要求重新发送。

如果可以的话,您可能还想放慢速度,并使用更长的脉冲和暂停,这将给它更多的时间来注册,这意味着它应该更准确。

祝你好运!

于 2012-11-22T04:52:05.627 回答