【问题标题】:XBee not communicating with Arduino connectedXBee 未与已连接的 Arduino 通信
【发布时间】:2015-05-09 11:17:12
【问题描述】:

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

这是接收方的代码:

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

【问题讨论】:

    标签: arduino arduino-uno xbee zigbee


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      相关资源
      最近更新 更多