Кириллица на LCD2004

Denchik200401
Offline
Зарегистрирован: 17.07.2016

Всем привет! Как только я ни пытался, но вывести русский текст на lcd2004 по i2c не получается, библиотека liqudcristalrus с i2c не работает. А liquidcristalrus_i2c вообще отказалась работать. При попытке нарисовать свой символ, вместо него выводит 8 параллельных строчек по 5 точек. Что модно с этим сделать? Это дисплей не поддерживает или я что-то не так делаю?

sadman41
Offline
Зарегистрирован: 19.10.2016

Второе.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Скорее второе, чем первое. Без дополнительных вводных - точнее не сказать.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Однозначно второе.

Denchik200401
Offline
Зарегистрирован: 17.07.2016

Ясно, чуть позже скину код

sadman41
Offline
Зарегистрирован: 19.10.2016

Не надо скидывать код.

Напишите маленький скетч с загрузкой одного пользовательского символа и его выводом на дисплей.

Denchik200401
Offline
Зарегистрирован: 17.07.2016
#include <LiquidCrystalRus_I2C.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystalRus_I2C lcd(0x27, 20, 4);

void setup()
{
  lcd.init(); //инициализация
  lcd.backlight(); //подсветка (с некоторыми экранами не обязательно)
  //вывести текст-подсказку
  lcd.print("пишите текст");
  lcd.setCursor(1, 1);
  lcd.print("в монитор порта");
  Serial.begin(9600); //инициализация ком-порта
}

void loop() {
  //если пришли данные
  if (Serial.available())
  {
    //немного ждём, что бы пришёл весь текст
    delay(100);
    //очищаем экран
    lcd.clear();
    lcd.setCursor(0, 0);
    //читаем посимвольно текст
    while (Serial.available() > 0)
    {
      //читаем символ(в т.ч. русский) и выводим на экран
      lcd.print(lcd.asciiutf8(Serial.read()));
    }
  }
}

 

Denchik200401
Offline
Зарегистрирован: 17.07.2016

Это пример из библиотеки. Первые символы выводятся кракозябрами, а если в монитор порта начать печатать алфавит, то он отображается корректно. 

 lcd.print(lcd.asciiutf8(Serial.read())); //Это работает
 lcd.print(lcd.asciiutf8("Привет!")); //Это не работает

https://github.com/vannhack/Arduino/tree/master/libraries/LiquidCrystalR...

Судя по библиотеке в команде lcd.asciiutf8(); должна быть переменная unsigned char. Если это так, то как преобразовать переменную в этот тип?