XBee没有与Arduino连接通信

时间:2015-05-09 11:17:13

标签: arduino arduino-uno xbee zigbee

我有两个XBee S2模块。当我将它们直接连接到我的计算机并通过X-CTU终端进行检查时,两者都在通信。问题是当我尝试通过用两个Arduinos连接它们来无线发送数据时根本就没有通信。它不会发送任何价值。

这是接收方的代码:

#include <SoftwareSerial.h>

SoftwareSerial XBSerial = SoftwareSerial(2, 3);

int BackMotorForward =  6;
int BackMotorReverse =  5;
int FrontMotorRight  = 10;
int FrontMotorLeft   =  9;
int sv1 = 0;
int sv2 = 0;

void setup ()
{
    pinMode(BackMotorForward, OUTPUT); // Initialize the pin as an output.
    pinMode(BackMotorReverse, OUTPUT); // Initialize the pin as an output.
    pinMode(FrontMotorRight,  OUTPUT); // Initialize the pin as an output.
    pinMode(FrontMotorLeft,   OUTPUT); // Initialize the pin as an output.

    Serial.begin(9600);

    // Set the data rate for the SoftwareSerial port
    XBSerial.begin(9600);
    // XBSerial.println(".");
}

void loop()
{
    Serial.write(XBSerial.read());
    if (XBSerial.available())
    {
        sv1 = XBSerial.read();
        Serial.write(sv1);
    }
    if (XBSerial.available())
    {
        sv2 = XBSerial.read();
        Serial.write(sv2);
    }
    if (sv1 < 280)
    {
        Serial.write("backward");
        digitalWrite(BackMotorForward, HIGH);
        digitalWrite(BackMotorReverse,LOW);
    }
    else if (sv1 > 380)
    {
        Serial.write("forward");
        digitalWrite(BackMotorReverse,HIGH);
        digitalWrite(BackMotorForward,LOW);
    }
    else
    {
        digitalWrite(BackMotorForward,LOW);
        digitalWrite(BackMotorReverse,LOW);
    }
    if (sv2 > 380)
    {
        Serial.write("left");
        digitalWrite(FrontMotorRight, HIGH);
        digitalWrite(FrontMotorLeft,LOW);
    }
    else if (sv2 < 280)
    {
        Serial.write("right");
        digitalWrite(FrontMotorLeft,HIGH);
        digitalWrite(FrontMotorRight,LOW);
    }
    else
    {
        digitalWrite(FrontMotorRight,LOW);
        digitalWrite(FrontMotorLeft,LOW);
    }
}

这是发送方的代码:

#include <SoftwareSerial.h>

SoftwareSerial XBSerial =  SoftwareSerial(2, 3);
const int xpin = A0;                  // x-axis of the accelerometer
const int ypin = A1;                  // y-axis

void setup()
{
    // Initialize the serial communications:
    pinMode(xpin, INPUT); //x axis
    pinMode(ypin, INPUT); //y axis

    Serial.begin(9600);
    Serial.println("testing");

    // Set the data rate for the SoftwareSerial port
    XBSerial.begin(9600);
    XBSerial.println("testing!!!");
}

void loop()
{
    // Print the sensor values:
    Serial.print(analogRead(xpin));
    Serial.print("\t");
    Serial.print(analogRead(ypin));

    // Print a tab between values:
    Serial.print("\t");
    Serial.println();

    // Delay before next reading:
    delay(100);

    int val = analogRead(xpin);

    int val2 = analogRead(ypin);

    XBSerial.print(val); //Changed from write to print
    XBSerial.print(val2);
}

1 个答案:

答案 0 :(得分:0)

好吧,这是一个非常愚蠢的错误。我使用的是软件引脚2,3用于XBee,而是将它们的引脚直接连接到Arduino的引脚0,1(rx,tx)。这就是没有沟通的原因。