LCD Smartie артефакты на 20х04

Udjin
Offline
Зарегистрирован: 10.06.2017

Добрый день.

Я новичек, появился вопрос. Подскажите пожалуйста, поиск в инете не дал ответа.

При попытке вывода информации с ПО lcd_smartie_v5.4 (скачана с офф сайта) на дисплей 2004А(с i2c конвертером) получаю артефакты на первых символах, как у этого человека:

http://forum.arduino.cc/index.php?topic=260439.0

Пробовал и по i2c (LiquidCrystal_I2C.h), и напрямую (LiquidCrystal.h) с контактов экрана. При этом из скетча с ардуинки текст выводится без артефактов корректно в обоих вариантах подключения. Плагин в LCD Smartie выбран matrix.dll.

Проверял на arduino ide 1.8.2 и 1.6.4, скетч брал из примеров "SerialDisplay" для соответствующего подключения.

По указанной ссылке люди пишут про что-то там некорректное перемещение курсора, но как это исправить я так и не понял. Заранее большое спасибо за помощь.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

там пишется, что тебе нужно фильтровать символы  <CR> и <LF> 

Udjin
Offline
Зарегистрирован: 10.06.2017

Собственно как это сделать? Это в скетче ардуино или ПО LCD Smartie? Может инструкция есть или где уже обсуждалось?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Udjin пишет:

Собственно как это сделать? Это в скетче ардуино или ПО LCD Smartie? Может инструкция есть или где уже обсуждалось?

в скетче

что там обсуждать, если никто не видит твоего скетча?

Udjin
Offline
Зарегистрирован: 10.06.2017

Скетч из стандартных примеров: LiquidCrystal -> SerialDisplay

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Мы эти примеры сами искать должны или Вы всё же покажете нам Ваш скетч?

Udjin
Offline
Зарегистрирован: 10.06.2017
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

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());
    }
  }
}

Пробовал и стандартное значение 16, 2, и менял на 20, 4. Некорректные символы всё равно есть.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, Вам же сказали, отфильтруйте перевода каретки и возвраты строки. 

Вместо того, чтобы в строке 23 тупо писать на экран всё, что прилетело из сериала, прочитайте пришедший символ и выводите его на экран только в том случае, если он не равен ни '\n', ни '\r'. А если равен - игнорируйте.

Ну или на худой конец выключите передачу этих символов в окне монитора порта. Там внизу есть выпадающее меню.