16x2LCD дисплей последовательное чтение дополнительных символов

Я получаю дополнительный символ (хмурое лицо) при отправке текста по последовательному монитору(см. Прилагаемое изображение).

extra character serial monitor

Когда пустая строка передается по последовательному монитору, ЖК-дисплей все еще показывает дополнительный символ хмурого лица.

Как мне избавиться от лишнего символа?

Я использую код учебника ниже и ничего не меняю в коде. https://www.arduino.cc/en/Tutorial/LibraryExamples/LiquidCrystalSerialDisplay/

#include <LiquidCrystal.h>
    
    // initialize the library by associating any needed LCD interface pin
    // with the arduino pin number it is connected to
    const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    
    void setup() {
      // set up the LCD's number of columns and rows:
      lcd.begin(16, 2);
      // initialize the serial communications:
      Serial.begin(9600);
    }
    
    void loop() {
      // when characters arrive over the serial port...
      if (Serial.available()) {
        // wait a bit for the entire message to arrive
        delay(100);
        // clear the screen
        lcd.clear();
        // read all the available characters
        while (Serial.available() > 0) {
          // display each character to the LCD
          lcd.write(Serial.read());
        }
      }
    }

, 👍1

Обсуждение

Измените "Newline" на "No Line Ending" или обработайте завершение вручную (неплохая идея)., @dandavis

Я не вижу этого символа в общих наборах символов для драйверов типа HD44780. Что это за точное отображение? А вы уже играли с генератором символов ram (custom characters)?, @timemage


1 ответ


1

ЖК - дисплей немного отличается от обычной консоли. Например, он не распознает символ новой строки и использует соответствующий код ASCII (10), как обычную букву. В зависимости от буквенной карты вашего дисплея (для которой на рынке есть несколько вариантов) это приведет к печати более или менее случайного символа. Чтобы избежать этого, вы должны удалить последнюю букву из входной строки перед отправкой ее на дисплей.

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

,