20×4 ЖК с Arduino и XBee

Я использую Arduino Mega, прикрепленный к 20×4 ЖК и XBEE. LCD — это интерфейс i2c. Я использую следующий код для записи данных, полученных 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 («тест»); он показывает «текст», что означает, что ЖК-дисплей получает данные, отправленные с xbee, но я не могу использовать lcd.print, поскольку полученные данные случайны.
Кроме того, как я могу очистить экран после каждого слова, когда все слова находятся в одной строке.

0

Решение

Есть две причины, почему я думаю, что эта проблема возникает:

  1. Вероятно, данные будут повреждены при передаче, поэтому может потребоваться реализовать какой-либо метод проверки ошибок (например, контрольная сумма) и запросить данные еще раз, если это так.
  2. Вы должны проверить, в каком формате данные передаются из вашего модуля передатчика. Я имею в виду, что LCD ожидает, что данные будут в формате ASCII, это тот же формат, полученный от xbee.

В основном вы должны проверить свои данные в нескольких точках и выяснить, где именно возникает проблема.
Так как вы говорите, что написание

 lcd.print("test");

работает правильно, поэтому я считаю, что I2C установлен правильно, поэтому вышеупомянутые проблемы — единственное, о чем я могу думать.

Подход:-
Почему бы вам не отобразить серийные данные, полученные xbee, на последовательном мониторе Arduino и проверить правильность полученных данных или нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]