我有两个Arduinos, 我要把它放进一个无线系统, 从房子的一间房间里的一间遥控手把IR码传送到另一间房间的固定盒子。 一个Arduino 拥有一个 IR 解码器, 解码器从手持的遥控器解码钥匙, 并用IR 发射器将它发送到另一个Arduino 。 这个系统在部分上运作良好。 当我从探测器( 到我的PC)得到代码, 并用人工( PC) 把它发送到排放的Arduino 时, 它控制着这个盒子。 但是当我试图在Arduinos 之间无线直接发送代码时, 它的工作很正常。 命令似乎没有被正确转发, 而排放的Arduino 控制着 bx 。
这里是解码的阿杜伊诺代码的模样。 "我的数字"持有4字节密钥:
myNumber.UL = results->value;
Serial.write(&myNumber.B,4);
当解码器检测 IR 模式时, 它会将以下内容张贴到序列端口, 无论是我使用发射或压缩遥控上的开关/ 关闭密钥。 有关密钥是 61A0F00F( 开关/ 关闭电源) :
Hex Field ASCII
0000 FF F0 A0 61.a
解码器在将实际遥控器指向探测器时,或当我驾驶我的发射机时,或当我驾驶代号61A0F00F时,也会发出同样的响应。所以它无法辨别实际遥控器与Arduino驱动的发射机之间的差别。问题是,Arduino在系统排放端对这个输出没有正确理解。
以下是排放代码的外观:
void loop() {
int x = 0;
while (x < 4) {
if (Serial.available()) myNumber.B[x++] = Serial.read();
}
Serial.print(myNumber.UL, HEX);
if (x==3) irsend.sendNEC(myNumber.UL, 32); //drive IR emitter with NEC code
delay(10000);
序列输出看起来是这样的:
HEX field ASCII Field
31 41 30 41 30 46 30 30 30 46 61A0F00F
当我将这个十六进制代码手动输入时, 也就是通过 Colo Terme, 颠倒( 所以 0FF0A061), 设置端框响应( 点击 ) 。 当我无线连接 Arduinos 时, 它没有 。
有谁能看到上面的通讯有什么问题吗? 十六进制字段中的数字看起来不太对, 解码器中的十六进制字段看起来像六进制, 但排放源的六进制字段看起来像ASCII? 那么发射源的六进制字段想要ASCII的号码, 却要得到十六进制? 我本以为串行. 读和串行. 写一样有效 。
这令人非常沮丧, 因为这个系统似乎几乎几乎奏效,
任何帮助/希望都将不胜感激。