LiquidCrystal Display: проблема в проекте

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Анатолийqwerty, 15 май 2016.

  1. Доброго времени суток всем читающим! Помогите, пожалуйста разобраться с ошибкой: делаю проект "Автополив растений на ардуино", код свой, плата - IskraNEO (аналог Arduino Leonardo). На экране высвечиваются какие-то странные символы, в общем, посмотрите на фото. Прикладываю код и фото экрана.
     

    Вложения:

  2. AlexU

    AlexU Гуру

    Штатная библиотека 'LiquidCrystal' из комплекта Arduino IDE не поддерживает кириллицу. Попробуйте реализацию от RoboCraft: https://github.com/RoboCraft/LiquidCrystalRus
     
  3. Спасибо, но все равно баг сохранился, прикладываю скетч и фото
     

    Вложения:

  4. Уважаемый Анатолий! Для использования русского языка в дисплеях LiquidCrystal нужно закодировать символ.
    Так например, букве «Я» соответствует код B1 в шестнадцатиричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

    lcd.print("\xB1ndex");
    А вот скетч для появление надписи "привет от Амперки"
    #include <LiquidCrystal.h>

    LiquidCrystal lcd(4, 5, 10, 11, 12, 13);

    void setup()
    {
    lcd.begin(16, 2);
    lcd.print(" \xA8p\xB8\xB3""e\xBF");
    lcd.setCursor(0, 1);
    lcd.print(" o\xBF A\xBC\xBE""ep\xBA\xB8");
    }

    void loop()
    {
    }
    Теперь для использования в Вашем проекте нужно лишь немного переделать скетч. Ссылки на помощь:
    http://wiki.amperka.ru/Схемы-подключения:подключение-текстового-экрана
    http://files.amperka.ru/datasheets/MT-16S2H.pdf
    Если Вас что-то интересует - обращайтесь! Удачи!
     
  5. AlexU

    AlexU Гуру

    Библиотека 'LiquidCrystalRus' как раз разработана для того, что бы не городить огород типа:
    Код (C++):
    lcd.print(" \xA8p\xB8\xB3""e\xBF");
    lcd.print(" o\xBF A\xBC\xBE""ep\xBA\xB8");
    А использовать понятный код типа:
    Код (C++):
    lcd.print("Наполните бак");
    lcd.print("Нажмите кнопку");
    Проблема может быть в не соответствии кодовых страниц дисплея с тем, что ожидает данная библиотека.

    Модель дисплея какая? Документацию на дисплей смотрели?
     
  6. Уважаемый AlexU!
    Согласен с Вами на 75%, действительно не надо городить огород если уже есть русификация кода.
    Но если по каким-то причинам русификация не работает ( причин много: неисправности Arduino, поддельная Arduino, проблемы с дисплеем или проблемы со скетчем), то русификация может и не заработать.
    Тем более некоторые люди даже не знают что можно устанавливать библиотеки.
    Плюс ещё могут быть технические проблемы с дисплеем и он неисправен.
    Ещё Анатолийqwerty сказал после того, как нему сказали про русификацию:
    "Спасибо, но все равно баг сохранился."
    Во всём, не касающимся неполадок с русификацией и проблем с дисплеем, полностью с Вами согласен!
    С уважением, Рязанский_Ардуинщик!
     
  7. AlexU

    AlexU Гуру

    А почему только на 75%. Дело в том, что если не работает "руссификация", то так же не будет работать и Ваше предложение. Потому что "руссификация", по сути, делает тоже самое, только скрывая это от пользователя.
    А по-поводу почему баг сохранился есть несколько причин:
    1. кодовая страница зашитая в контроллер дисплея не содержит кириллицы;
    2. кодовая страница в дисплее на та, которую ожидает "риссификатор";
    3. при компиляции исходников строки с кириллицей "зашиваются" в бинарник не в кодировке UTF-8, а, например, в CP-1251.
    И судя по фотке третий вариант наиболее реальный.
     
  8. AlexU. Ваш ответ полон и понятен. Буду знать.
     
  9. Vladkerch

    Vladkerch Нуб

    Сам столкнулся с этой проблемой недавно. Во общем чтобы высвисти кириллицу на индикатор есть несколько способов:
    1- сделать это с помощью специальной библиотеки как писали выше.
    2- вручную , используя таблицу знакогенератора в шестнадцатеричном коде то есть записать
    \x "шестнадцатеричный код" , например для буквы "Б" получиться \xA0
    3- использовать конвертер кириллицы для HD44780 http://robotosha.ru/electronics/lcd-hd44780.html
    Ещё один вариант конвертера предлагается в этой статье http://cxem.net/mc/book52.php
     

    Вложения:

    • 02_codes.JPG
      02_codes.JPG
      Размер файла:
      102 КБ
      Просмотров:
      422
    Последнее редактирование: 4 сен 2016