gpt4 book ai didi

c - 使用 433 mhz 发射器/接收器从一个 arduino 向另一个发送消息

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:38 26 4
gpt4 key购买 nike

今天我得到了一些很酷的 radio 接收器和发射器,问题是当我输入我想发送的消息时,它会在另一个 arduino 上吐出乱码。

//transmitter
#include <VirtualWire.h>

void setup()
{
Serial.begin(9600);
vw_set_ptt_inverted(true);
vw_setup(3000);
vw_set_tx_pin(7);
}

void loop()
{
String inData;

while(Serial.available())
{
char recieved = Serial.read();
inData += recieved;
char bits[inData.length()];

Serial.print(":");
Serial.print(inData);


for(int i=0;i<inData.length();i++)
{
bits[i] = inData.charAt(i);

vw_send((uint8_t *)bits[i], 1);
}

inData = "";
delay(50);
}
}

//下面是接收者!

#include <VirtualWire.h>

void setup()
{
vw_set_ptt_inverted(true);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
Serial.begin(9600);
vw_setup(3000);
vw_set_rx_pin(7);
vw_rx_start();
}

void loop()
{
uint8_t buflen = VW_MAX_MESSAGE_LEN;
uint8_t buf[buflen];

if(vw_get_message(buf, &buflen))
{
for(int i = 0;i < buflen;i++)
{
char c = buf[i];
Serial.println(c,DEC);

delay(50);
}
}
}

因此,如果我输入“hello”,在另一个串口上我会看到“0 53 0 0 2”,这很奇怪,因为我总是得到相同数量的字符,但不是我想要的实际字符.

最佳答案

所以我本身没有答案,因为我不知道它会有所帮助,但我注意到您的代码中有些怪癖。

我注意到您在接收器中为 OUTPUT 配置了 pin,但您希望它充当接收器。我对 Arduino 硬件及其配置不够熟悉,但请确保将其设置为 OUTPUT 不会影响其由发射器驱动的能力。可能发生的情况是线路上存在争用 - 您的发送器正在发送数据,但接收器试图保持线路 LOW,导致垃圾数据(具有相同数量的您传输的字符!)。

此外,基于发布的示例 here ,看来您需要在这两种情况下都定义传输启用引脚。看起来库有一个中断服务例程,它依赖于 PTT 线来指示传输的开始。这可能会导致依赖 PTT 中断发送或接收信号的任何一端出现很多问题,尤其是在涉及流量控制的情况下。

最后,示例代码在发送更多数据之前使用了 vw_wait_tx() 函数调用。在尝试执行另一个 TX 操作之前,您只需等待 50 毫秒,这可能不足以让发送器完成发送它拥有的任何数据。我不知道该库的具体实现,但我肯定会使用此函数来确保您不会尝试发送超过端口可以处理的数据。

关于c - 使用 433 mhz 发射器/接收器从一个 arduino 向另一个发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24581896/

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