LCD 1602 и "свои" символы
- Войдите на сайт для отправки комментариев
Поясню суть темы....возникла потребность отрисовывать "свои" (самостоятельно разработанные символы), например - значек градуса Цельсия, значек градусника и т.д.
имеется LCD 1602, подключенный через регистр сдвига, для экономии выводов ардуино. Используется библиотека LiquidCrystal_SR_LCD3, LCD прекрасно выводит значения датчиков и вообще английский текст, с кириллицей пришлось выкручиваться
char temp[]={84, 101, 188, 190, 101, 112, 97, 191, 121, 112, 97, '\0'}; lcd.print(temp); //Температура
Такое тоже все работает, и я пошел дальше с разработкой своих символов...нашел статью и сделал по ней один символ
uint8_t temp_cel[8] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000 }; //закодировано в двоичной системе значек градуса
потом в void setup() указал lcd.createChar(1, temp_cel);
и вызываю на LCD (кусок кода)
char temp2[]={'\1', 67, '\0'}; //Отрисовка градусов Цельсия lcd.setCursor ( 0, 2 ); lcd.print( val ); lcd.print( temp2 );
отлично в итоге выводит значения температуры с датчика, символ градуса и букву С - все отлично и я всем доволен...
Решил еще еще символов наделать, все делал так же, менял только значение lcd.createChar(1, temp_cel); (выделил жирным), НО вместо того, чтобы отобразить символ - показывает просто 3и полоски :(
Все перепробовал уже - помогите пожалуйста разобраться...
Дисплей поддерживает до 8-ми дополнительных символов.
еще покопался и нашел статью
попробовал из нее код и переработал под себя
вместо "мордочки" как в примере отображает символ квадратика в правом верхнем углу....ничего не понимаю как так...
Если хотите больше то можно попробовать написать функцию? которая каждый раз переписывает символ.
суть не в кол-ве желаемых мное разработанных символах (мне требуется 3 симвала всего), а в том, что код не работает как надо...
а именно
этот код работает отлично - выводит в одну строку все разработанные символы символы
Так в чем проблема то?
уф...объяснить бы мне вам все нюансы...
в общем о коде, котором я сказал что он рабочий, я попробовал по его аналогии подставить в свой код и сделать вывод на LCD, так вот он выводит на например по запросу символ1 не тот, который я включил в код, а как будто из памяти загруженного ранее кода
Попробуйте питание дисплея отключать, прежде чем новый код проверять.
помогло, но отображает уже не из "памяти", а просто полоски :(
на всякий пожарный тема, в которой я мудрил как подключить LCD по 3 проводам
В общем вместо символа градуса
и объявления символа lcd.createChar(1, temp_cel);
в коде
Выводит две параллельные черточки :( всякие уже варианты перепробовал - ничего не помагает - не хочет выводить созданный символ
никак не удается победить со "своими" символами :(
решил задать другой вопрос - а где вообще можно посмотреть таблицу символов?
Например использую программку - lcdHd44780.exe которая пребразовывает символы...взял зашел в MS Word и тупо нашел значек градуса, копипаст и в программку - она показала мне {176, '\0'}; //° но вместо символа градуса, как мне необходимо отображает почему то Ю :(
Посидел в инете и нашел такую штуку - Таблица символов CGRAM
по ней подсмотрел, что символ более-менее подходящий мне будет выводиться как
Взял из статьи в встретилось...Первые 16 ячеек CGRAM имеют особое значение. При желании, в них могут быть записаны любые пользовательские символы, которых нет таблице (сразу после включения модуля в них находится случайная информация). Но как это сделать?
В общем сумел победить проблему с выводом "своих" символов...дело как всегда было не в бобине..
а у меня было перед инициализацией ЖК
ага.. разобрался значит..
#include <LiquidCrystal_SR_LCD3.h>
как мне переделать вот под такой дисплей
#include <LiquidCrystal_I2C.h>
подскажите
Добрый вечер. Подскажите, вывожу "свои" символы для отображения русских букв на lcd1602. Через раз первый символ в первой либо во второй строке прорисовывается не так как надо. Пробовал менять дисплей и мк, не помогло. В протеусе рисуется все как надо.
хм, действительно проблемная тема... предистория:
приобрел Arduino keypad + LCD Shield удобная штука для прототипирования, надел на UNO/Leonardo/Mega и все почти готовое устройство :) Один недостаток дисплейчик без русификации... Как-то вспомнил, что в дисплей вроде бы можно загружать свои символы/шрифты... Почитал что попалось что-то не помогло. Потом как то полез в исходник LiquidCrystal.cpp и обнаружил интересный метод createChar попробовал использовать тоже не получилось, тупо эффекта ноль, в чем дело так и не понял...
Позже пришла идея поискать пример кода нашлось:
этот на удивление сработал! заметьте строчки с загрузкой шрифта и инициализация стоят в обратном порядке!!!
И вот самый прикол, стоило их поменять местами, все перестало работать!!! Опять углубляться не стал, понял только что эта функция действительно требует особого внимания и осторожности, возможно нет/недостаточная задержка, в доках по этому поводу мало написано.
Вполне возможно что нужно послать комманду:
И вот самый прикол, стоило их поменять местами, все перестало работать!
После загрузки символов нужна небольшая задержка. Можно (например) выполнить команду: lcd.home() - установка курсора в нулевую позицию (внутри неё есть задержка на 2 мс).
Пример как из загружаемых символов мультики делать:
http://arduino.ru/forum/programmirovanie/etyud-multik-na-lcd-1602
Да нет, тут в чем-то другом проблема.
Прикупил Arduino Keypad + LCD Shield на базе 1602 дисплея, китаец, русский не понимает в принципе, портировал код от ShadS на Arduino. Точнее только взаимствовал шрифты. Используя мощь Си++ отнаследовался от стандартного LiquidCrystal, переопределил несколько методов и назвал LiquidCrystalCyr. Использование примитивное и привычное для тех кто знаком с LiquidCrystal. Выложил исходники
Из книги Джереми Блума
тут как-то проблематично что-то прочитать...
тут как-то проблематично что-то прочитать...
хватит тупить - найди и скачай книгу
я не туплю, с вопросом я разобрался... а как книга то называется?
Да нет, тут в чем-то другом проблема.
Используя мощь Си++ отнаследовался от стандартного LiquidCrystal, переопределил несколько методов и назвал LiquidCrystalCyr.
Напиши с помощью свой библиотеки слово ЗАГЛУБЛЯЮЩИЙ.
а как книга то называется?
Похоже: Блум Джереми - Изучаем Arduino - 2015
Злые вы... Ежу понятно, что конкретно это слово написать полностью не получится и здесь дело не в библиотеке это проблема в дисплее, будь в нем больше внутренней памяти, можно было лоы написать все что угодно... Тем не менее на безрыбье и это очень даже хорошее решение...
ЗЫ: Пошел в школу впитывать новые знания! Пятый раз в первый класс! :)
Злые вы... Ежу понятно, что конкретно это слово написать полностью не получится
Не такие уж и злые. И почему полностью не получится?
3arЛy6ЛЯЮЩuЙ (2 цифры, 4 английские и 5 русских букв).
Вот ещё известная фраза только из аглийских букв: C HoBblM rogoM!