Случайные символы, генерируемые ДСВ дисплеем во время 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());
}
}
}
но в итоге генерируется и нежелательный символ..
Пожалуйста, помогите мне с этой проблемой
@Gyan_mishra, 👍0
Обсуждение1 ответ
Символ справа от буквы «А» на ЖК-дисплее не соответствует ни одному из встроенных определений растрового изображения (ни на дисплее ЕС, ни на китайском языке). Этот случайный шаблон, вероятно, является одним из 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
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Joy-IT RS232 Shield и уровни напряжения RS232
- Соединение Xbee Shield to Shield отправляет, но не принимает правильно
- Я работал над проектом и получил ошибку компиляции для платы arduino uno. пожалуйста, помогите
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
Я думаю, это символ новой строки. Какой конец строки настроен на отправку Serial Monitor?, @Juraj
Выполняет ли 'lcd.write("Привет");' работа? Вам следует проверить, связана ли проблема с последовательным портом или с ЖК-дисплеем., @Paul
да, это работает отлично, @Gyan_mishra
@Gyan_mishra, в этом случае проблема не на стороне дисплея. Генерируется ли тот же символ, когда вы делаете: "lcd.write("\r\n");"? Или выберите «Без окончания строки» в последовательном мониторе Arduino., @Paul
спасибо за помощь @Paul .... проблема была точно такая же..., @Gyan_mishra