Доброго времени суток всем читающим! Помогите, пожалуйста разобраться с ошибкой: делаю проект "Автополив растений на ардуино", код свой, плата - IskraNEO (аналог Arduino Leonardo). На экране высвечиваются какие-то странные символы, в общем, посмотрите на фото. Прикладываю код и фото экрана.
Штатная библиотека 'LiquidCrystal' из комплекта Arduino IDE не поддерживает кириллицу. Попробуйте реализацию от RoboCraft: https://github.com/RoboCraft/LiquidCrystalRus
Уважаемый Анатолий! Для использования русского языка в дисплеях 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 Если Вас что-то интересует - обращайтесь! Удачи!
Библиотека 'LiquidCrystalRus' как раз разработана для того, что бы не городить огород типа: Код (C++): lcd.print(" \xA8p\xB8\xB3""e\xBF"); lcd.print(" o\xBF A\xBC\xBE""ep\xBA\xB8"); А использовать понятный код типа: Код (C++): lcd.print("Наполните бак"); lcd.print("Нажмите кнопку"); Проблема может быть в не соответствии кодовых страниц дисплея с тем, что ожидает данная библиотека. Модель дисплея какая? Документацию на дисплей смотрели?
Уважаемый AlexU! Согласен с Вами на 75%, действительно не надо городить огород если уже есть русификация кода. Но если по каким-то причинам русификация не работает ( причин много: неисправности Arduino, поддельная Arduino, проблемы с дисплеем или проблемы со скетчем), то русификация может и не заработать. Тем более некоторые люди даже не знают что можно устанавливать библиотеки. Плюс ещё могут быть технические проблемы с дисплеем и он неисправен. Ещё Анатолийqwerty сказал после того, как нему сказали про русификацию: "Спасибо, но все равно баг сохранился." DSC_0181[1].JPG Размер файла: 1,1 МБ Во всём, не касающимся неполадок с русификацией и проблем с дисплеем, полностью с Вами согласен! С уважением, Рязанский_Ардуинщик!
А почему только на 75%. Дело в том, что если не работает "руссификация", то так же не будет работать и Ваше предложение. Потому что "руссификация", по сути, делает тоже самое, только скрывая это от пользователя. А по-поводу почему баг сохранился есть несколько причин: кодовая страница зашитая в контроллер дисплея не содержит кириллицы; кодовая страница в дисплее на та, которую ожидает "риссификатор"; при компиляции исходников строки с кириллицей "зашиваются" в бинарник не в кодировке UTF-8, а, например, в CP-1251. И судя по фотке третий вариант наиболее реальный.
Сам столкнулся с этой проблемой недавно. Во общем чтобы высвисти кириллицу на индикатор есть несколько способов: 1- сделать это с помощью специальной библиотеки как писали выше. 2- вручную , используя таблицу знакогенератора в шестнадцатеричном коде то есть записать \x "шестнадцатеричный код" , например для буквы "Б" получиться \xA0 3- использовать конвертер кириллицы для HD44780 http://robotosha.ru/electronics/lcd-hd44780.html Ещё один вариант конвертера предлагается в этой статье http://cxem.net/mc/book52.php