我在计算机端有一个ladyada xbee适配器和一个我试图通过无线通信的arduino xbeeshield。两个xbe都配置正确,因为我可以从xbeeshield接收数据到计算机。但是它不能以其他方式工作,即xbeeshield不会串行回送从计算机发送的字节。知道我可能做错了什么吗? (注意:当我使用USB线将arduino板连接到计算机时,echo程序运行正常。仅在无线模式下出现问题)
处理代码
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.print((char) Serial.read());
delay(10);
}
}
我只是从电脑发送按键并等待回复。我没有得到任何。
答案 0 :(得分:0)
我使用我回答的代码来解决从PC向Xbee / Arduino发送串行字节的问题。它已经好几个月了。确保您已在PC和Arduino端配置了Xbee模块。确保您的PAN ID也一样。
Arduino making decision according to a packet received from serial port
您使用的是什么版本的Xbee模块?我的代码适用于系列1,但也适用于较新的版本。
答案 1 :(得分: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");
}
}
}
上传程序并打开串行监视器。您是否完成了“安装”设置&#39;电脑上的消息?如果你发送&#39; a&#39;或者&#39; b&#39;从Pc到Arduino?