带有arduino和xbee的20x4液晶显示器

时间:2016-03-08 15:47:06

标签: c++ arduino xbee lcd

即时使用附加到20x4 lcd和xbee的arduino mega。 LCD是i2c接口。我使用以下代码在LCD上写入xbee接收的数据。

/*****************************************************************
XBee_Serial_Passthrough.ino

Set up a software serial port to pass data between an XBee Shield
and the serial monitor.

Hardware Hookup:
  The XBee Shield makes all of the connections you'll need
  between Arduino and XBee. If you have the shield make
  sure the SWITCH IS IN THE "DLINE" POSITION. That will connect
  the XBee's DOUT and DIN pins to Arduino pins 2 and 3.

*****************************************************************/
// We'll use SoftwareSerial to communicate with the XBee:
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LCD03.h>
 LCD03 lcd;
// XBee's DOUT (TX) is connected to pin 2 (Arduino's Software RX)
// XBee's DIN (RX) is connected to pin 3 (Arduino's Software TX)
SoftwareSerial XBee(10, 11); // RX, TX

void setup()
{
  // Set up both ports at 9600 baud. This value is most important
  // for the XBee. Make sure the baud rate matches the config
  // setting of your XBee.
  XBee.begin(9600);
  Serial.begin(9600);
    // Initialise a 20x4 LCD
  lcd.begin(20, 4);

  // Turn on the backlight
  lcd.backlight();

  // Write to the LCD
  lcd.print("Hello world");

  // Wait for 5 seconds
  delay(5000);

  // Clear the LCD
  lcd.clear();
}

void loop()
{
  if (Serial.available())
  { // If data comes in from serial monitor, send it out to XBee
    XBee.write(Serial.read());
  }
  if (XBee.available())
  { // If data comes in from XBee, send it out to serial monitor
    Serial.write(XBee.read());
   lcd.write(XBee.read());

  }
}

然而,它在液晶显示屏上显示黑框而不是文字。 如果我使用lcd.print(“test”);它显示“文本”,这意味着LCD正在接收从xbee发送的数据,但我不能使用lcd.print,因为收到的数据是随机的。 此外,我怎样才能在每个单词后清除屏幕,因为所有单词都在一行中。

1 个答案:

答案 0 :(得分:0)

我认为发生这个问题有两个原因: -

  1. 数据在传输时可能会被破坏,因此可能需要实施一些错误检查方法(例如:校验和),如果是这种情况,请再次请求数据。
  2. 您必须检查从发射器模块传输的数据格式是什么。我的意思是LCD希望数据采用ASCII格式,与xbee收到的格式相同。
  3. 基本上,您必须在多个点检查数据,并找出问题发生的确切位置。 因为你说的是​​写作

     lcd.print("test");
    

    确实正常工作因此我认为I2C设置正确,所以上面提到的问题是我能想到的唯一的事情。

    方法: - 为什么不在arduino的串口监视器上显示收到的串行数据xbee,并检查收到的数据是否正确。