2014-11-01 3 views
-1

Мне жаль, что я сделал это, но я пробовал все, и я не могу получить эту работу!Arduino Xbee Анализ данных

У меня есть два ардуинов, подключенных к xbee's.

Один подключен к компьютеру, получающему данные, а другой лучше питается и подключен Wii nunchuck. Я знаю, что я получаю хорошие данные от причины nunchcuck, я протестировал ее без xbee. Но я хочу отправить данные по серийному номеру и получить на другом, чтобы использовать что-то еще, но, похоже, не работает. Вот код:

Arduino с Wii:

#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; 

} 

Как я мог Получать эти данные на ПОЛУЧАТЬ Arduino?

Пожалуйста, помогите ему в моем школьном проекте!

спасибо !!

ответ

0

Когда вы читаете терминал (без Xbee), вы видите линию с X, Y? Потому что, если ваш терминал arduino видит это, проблема исходит от Xbee.

Если ваш терминал видит линию, посмотрите на Xbee с Xctu. Вы должны установить panID на обоих Xbee, чтобы увидеть, как они обмениваются данными. вы также должны сделать адрес SL отправителя равным адресу DL приемника (и тому же для SH/DH).

Можете ли вы сказать нам, какой Ардуино, Xbee, щит вы используете. Это может помочь нам получить более подробную информацию