Случайные символы, генерируемые ДСВ дисплеем во время Serial.read()

Я использую следующие коды для печати символов на ЖК-дисплее....

#include <LiquidCrystal.h>

const int rs = 8, en = 9, d0 = 4, d1 = 5, d2 = 6, d3 = 7;
LiquidCrystal lcd(rs, en, d0, d1, d2, d3);

void setup() {
  lcd.begin(16, 2);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    delay(100);
    lcd.clear();
    while (Serial.available() > 0) {
      lcd.write(Serial.read());
    }
  }
}

но в итоге генерируется и нежелательный символ..

Пожалуйста, помогите мне с этой проблемой

, 👍0

Обсуждение

Я думаю, это символ новой строки. Какой конец строки настроен на отправку Serial Monitor?, @Juraj

Выполняет ли 'lcd.write("Привет");' работа? Вам следует проверить, связана ли проблема с последовательным портом или с ЖК-дисплеем., @Paul

да, это работает отлично, @Gyan_mishra

@Gyan_mishra, в этом случае проблема не на стороне дисплея. Генерируется ли тот же символ, когда вы делаете: "lcd.write("\r\n");"? Или выберите «Без окончания строки» в последовательном мониторе Arduino., @Paul

спасибо за помощь @Paul .... проблема была точно такая же..., @Gyan_mishra


1 ответ


2

Символ справа от буквы «А» на ЖК-дисплее не соответствует ни одному из встроенных определений растрового изображения (ни на дисплее ЕС, ни на китайском языке). Этот случайный шаблон, вероятно, является одним из 8 программируемых растровых изображений символов, поддерживаемых ЖК-дисплеем, которые еще не определены (коды ASCII от 0 до 7).

Итак, вы, скорее всего, отправляете на ЖК-дисплей символ со значением от 0 до 7. Вероятно, было бы неплохо отфильтровать недопустимые символы, прежде чем пытаться отобразить их на ЖК-дисплее.

Пример фильтрации:

char c = Serial.read();
if ((c >= 32) && (c <= 128))
  lcd.write(c);
,

не могли бы вы рассказать мне, как отфильтровать недопустимые символы перед попыткой отображения?, @Gyan_mishra

Я обновил ответ, чтобы проиллюстрировать простой пример фильтрации. Взгляните на таблицу ASCII, чтобы понять, почему выбранные мной числа важны., @Jeff Wahaus

спасибо @jeff, за предоставленный мне такой отличный пример фильтрации.. это сработало, @Gyan_mishra