Serial port Arduino Xbee数据解析

Serial port Arduino Xbee数据解析,serial-port,xbee,Serial Port,Xbee,我很抱歉做这样一个帖子,但我已经尝试了一切,我不能让这个工作 我有两个arduinos和xbee的连接 一个连接到我的电脑接收数据,另一个是更好的动力,并有一个Wii nunchuck连接。 我知道我从nunchcuck得到了很好的数据,因为我在没有xbee的情况下测试了它。 但是我想通过串行方式发送数据,另一种方式接收数据,用于其他用途,但似乎不起作用。代码如下: 带wii的Arduino: #include <Wire.h> #include <Servo.h> co

我很抱歉做这样一个帖子,但我已经尝试了一切,我不能让这个工作

我有两个arduinos和xbee的连接

一个连接到我的电脑接收数据,另一个是更好的动力,并有一个Wii nunchuck连接。 我知道我从nunchcuck得到了很好的数据,因为我在没有xbee的情况下测试了它。 但是我想通过串行方式发送数据,另一种方式接收数据,用于其他用途,但似乎不起作用。代码如下:

带wii的Arduino:

#include <Wire.h>
#include <Servo.h>
const int vccPin = A3;
const int gndPin = A2;

Servo servo;

const int dataLength = 6; // Number of bytes to request 

static byte rawData[dataLength];

enum nunchuckItems { 
  JoyX, JoyY, accelX, accelY, accelZ, btnZ, btnC};

void setup()
{
  pinMode(gndPin, OUTPUT);
  pinMode(vccPin, OUTPUT);
  digitalWrite(gndPin, LOW);
  digitalWrite(vccPin, HIGH);
  servo.attach(9);

  delay(1000);
  Serial.begin(9600);

  nunchuckInit();
}

void loop()
{
  nunchuckRead();



  int joyX = getValue(JoyX);
  int joyY = getValue(JoyY);


  Serial.print(joyX);
  Serial.print(",");
  Serial.print(joyY);
  Serial.println();



  }

  void nunchuckInit(){

    Wire.begin();
    Wire.beginTransmission(0x52);
    Wire.write((byte)0x40);
    Wire.write((byte)0x00);
    Wire.endTransmission();

  }

static void nunchuckRequest(){
  Wire.beginTransmission(0x52);
  Wire.write((byte)0x00);
  Wire.endTransmission(); 
}

boolean nunchuckRead(){

  int cnt = 0;
  Wire.requestFrom(0x52, dataLength);

  while (Wire.available()){

    rawData[cnt] = nunchuckDecode(Wire.read());
    cnt++;
  } 

  nunchuckRequest();
  if (cnt >= dataLength)
    return true;
  else 
    return false;

}


static char nunchuckDecode(byte x){
  return (x ^ 0x17) + 0x17;

}

int getValue(int item){

  if (item <= accelZ)
    return (int)rawData[item];
  else if (item == btnZ)
    return bitRead(rawData[5], 0) ? 0: 1;
  else if (item == btnC)
    return bitRead(rawData[5], 1) ? 0: 1;

}
#包括
#包括
常数int vccPin=A3;
常量int gndPin=A2;
伺服;
常量int dataLength=6;//要请求的字节数
静态字节rawData[dataLength];
枚举项{
JoyX,JoyY,accelX,accelY,accelZ,btnZ,btnC};
无效设置()
{
pinMode(gndPin,输出);
pinMode(vccPin,输出);
数字写入(gndPin,低电平);
数字写入(vccPin,高);
伺服。连接(9);
延迟(1000);
Serial.begin(9600);
nunchuckInit();
}
void循环()
{
nunchucklead();
int-joyX=getValue(joyX);
int-joyY=getValue(joyY);
串行打印(joyX);
连续打印(“,”);
连载印刷(乔伊);
Serial.println();
}
void nunchuckInit(){
Wire.begin();
导线起始传输(0x52);
Wire.write((字节)0x40);
连线写入((字节)0x00);
导线端传动();
}
静态无效请求(){
导线起始传输(0x52);
连线写入((字节)0x00);
导线端传动();
}
布尔nunchucklead(){
int-cnt=0;
Wire.requestFrom(0x52,数据长度);
while(Wire.available()){
rawData[cnt]=nunchuck解码(Wire.read());
cnt++;
} 
nunchuckRequest();
如果(cnt>=数据长度)
返回true;
其他的
返回false;
}
静态字符解码(字节x){
返回(x^0x17)+0x17;
}
int getValue(int项){

如果(项当您读取终端(不带Xbee)时,您是否看到显示有X,Y的行?因为如果您的arduino终端看到它,问题来自Xbee

如果您的终端看到线路,请使用Xctu查看您的Xbee。您必须在两个Xbee上设置panID以查看它们的通信。您还必须使发送方的SL地址等于接收方的DL地址(对于SH/DH也是如此)

你能告诉我们你用的是哪种Arduino,Xbee,盾牌吗?它能帮助我们了解更多细节