3

我在计算机端有一个ladyada xbee 适配器和一个我试图通过无线通信的arduino xbeeshield。两个 xbee 都配置正确,因为我可以从 xbeeshield 接收数据到计算机。但是,它不能以其他方式工作,即 xbeeshield 不会回显从计算机串行发送的字节。知道我可能做错了什么吗?(注意:当我使用 USB 线将 arduino 板连接到计算机时,echo 程序工作正常。这似乎只是无线模式下的问题)

处理代码

void setup() {
  Serial.begin(9600); 
}

void loop() {
  if (Serial.available()) {
    Serial.print((char) Serial.read());
    delay(10);
  }
}

我只是从计算机发送击键并等待回复。我没有得到任何东西。

4

2 回答 2

0

尝试使用 softwareSerial 库并将 Tx 和 Rx 连接到引脚 4 和 2。运行以下草图并告诉我会发生什么。更改波特率值以匹配您自己的值

#include <SoftwareSerial.h>

uint8_t pinRx = 2 , pinTx = 4; // the pin on Arduino

long BaudRate = 57600; // Please set your Baudrate. It should match the one in XC-TU
char GotChar, getData;
// Xbee SoftwareSerial initialization
SoftwareSerial xbee(pinRx, pinTx); // RX, TX

void setup() 
{
  Serial.begin(9600);
  Serial.println( "Welcome to the XBee Communication Test" );
  Serial.print("BaudRate:");
  Serial.println(BaudRate);
  Serial.print(" Rx Pin#");
  Serial.println(pinRx,DEC);
  Serial.print(" Tx Pin#");
  Serial.println(pinTx,DEC);
  // set the data rate for the SoftwareSerial port
  xbee.begin( BaudRate );
  xbee.println("Setup Completed!");
}

void loop() 
{
  if (Serial.available()) 
  {
    GotChar = Serial.read();
    xbee.print(GotChar);
    Serial.print(GotChar);
  }
  while (xbee.available()>0)
  {  
    Serial.println("Ohohoh");
    getData = xbee.read();      
    Serial.print(" Received: );
    Serial.print(getData);
    Serial.println();

    if(getData == 'a')
    {    
      Serial.println(" sbam");
    }  
    else if(getData == 'b')
    {
      Serial.println(" sbo");
    }
  }  
}

上传程序并打开串口监视器。您是否在计算机上收到“设置完成”消息?如果您将“a”或“b”从 PC 发送到 Arduino,会发生什么?

于 2014-10-06T00:30:58.857 回答
0

关于将串行字节从 PC 发送到 Xbee/Arduino,我使用了我回答以下问题的代码。几个月来一直运行良好。确保您已在 PC 和 Arduino 端配置了您的 Xbee 模块。确保您的 PAN ID 也相同。

Arduino根据从串口接收到的数据包做出决定

您使用的是什么版本的 Xbee 模块?我的代码适用于系列 1,但也适用于较新的版本。

于 2012-02-15T23:34:54.063 回答