当我试图发送信号时,我正试图通过我的射频模块发送信息我得到的信息说我正在接收信号,但我没有通过线路获得任何信息,但没有传递任何信息它...
//Reciever Code (Leonardo)
#include
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
vw_setup(2000);
vw_set_rx_pin(7);
vw_rx_start();
}
void loop()
{
Serial.println("nothing");
uint8_t buflen = VW_MAX_MESSAGE_LEN;
uint8_t buf[buflen];
if (vw_get_message(buf, &buflen)){
Serial.print("got it");
delay(1000);
}
if(vw_get_message(buf, &buflen))
{
for(int i = 0;i < buflen;i++)
{
Serial.println(buf[i]);
if(buf[i] == '0')
{
digitalWrite(13,HIGH);
}
else if(buf[i] == '1')
{
digitalWrite(13,HIGH);
}
}
}
}
我的reciver序列监视器读取
nothing
got it128
nothing
nothing
nothing
nothing
nothing
nothing
nothing
nothing
nothing
nothing
nothing
nothing
got it
我的发射器代码是
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
vw_setup(2000);
vw_set_tx_pin(7);
}
void loop()
{
if(1==1)
{
char c = '1';
if(c == '1')
{
vw_send((uint8_t *)c, 1);
Serial.println("SENDING");
}
else if(c == '0')
{
vw_send((uint8_t *)c, 1);
}
}
}
我的模块看起来像这个
答案 0 :(得分:1)
Arduino中的loop()
函数经常运行。每次迭代都不会收到消息。就此而言,发送者也无法发送每个循环迭代。您可以检查send()
函数的返回函数,以查看消息是否实际发生。
在您的接收者代码中,当您收到消息时,您打印并且#34;得到它&#34;正确。但接着你测试是否有另一条消息来打开LED。下一条消息没有足够的时间到达。
相反,您应该将打印和LED代码放在同一个if
块中。