即时使用附加到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,因为收到的数据是随机的。 此外,我怎样才能在每个单词后清除屏幕,因为所有单词都在一行中。
答案 0 :(得分:0)
我认为发生这个问题有两个原因: -
基本上,您必须在多个点检查数据,并找出问题发生的确切位置。 因为你说的是写作
lcd.print("test");
确实正常工作因此我认为I2C设置正确,所以上面提到的问题是我能想到的唯一的事情。
方法: - 为什么不在arduino的串口监视器上显示收到的串行数据xbee,并检查收到的数据是否正确。