Дисплей LCD5110
- Войдите на сайт для отправки комментариев
Втр, 21/04/2015 - 20:26
Вопрос можно ли в данном дисплее выводить параметры на весь экран (тоесть задействовать все возможные пиксели чтоб цыфра была больше чем с функцией myGLCD.setFont(BigNumbers)
Можно.
Как я понимаю нужно библиотеку отредактировать где прорисованы цыфры?
Что никто не вкурси как это реализовать ?
Почему же, вкурсе.
Правьте шрифты в файле DefaultFonts.h
Благодарю, тот файл DefaultFonts.h вроди на языке С написан то его править в visual studio можно ?
подскажите ещё или кинте ссылку чтоб разобратсся с системой пиксилей и координат чтоб коректно все поправить?
например:
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
Всё гораздо проще!
Каждое шестнадцатиричное число - это одна строка пикселей.
Рисуем, к примеру, цифру 1:
00001000
00101000
00001000
00001000
00001000
00001000
Затем переводим двоичное 00001000 в шестнадцатиричное(http://math.semestr.ru/inf/index.php) , получаем 08, дописываем 0х и добавляем!
а если екран там 48х84 то цыфра ноль как должна выглядить?
Без принципиальных отличий. Просто опишите около 24 строк.
Без принципиальных отличий. Просто опишите около 24 строк.
(ест попкорн и поглаживает кота) Ты понимаешь что взорвал ему мозг?
Из меня учитель никакой) Легче самому сделать, чем показать)
:)
да прописывать долго придется и я вообще новичек так что то что для кого то просто для меня вынос мозга так что извиняйте за тупость:) А вот тут
http://analogindex.ru/news/-iz-peso-nicy-arduino-modul-nokia-5110-lcd-i-l-ba-kartinka_93655.html
с помощю какойто программы GLCD Tools перевод рисунка в код, но у меня не получается ее установить, может есть подобние проги которые економят время чтоб не прописывать много строк? не могу пока найти
Если не ошибаюсь, есть GLCD Font Creator (или Maker, не помню, на другом ПК установлен)
Пока не разобрался с программой то давайте по порядку. Если мне нужно вот єта цифра которую нарисовал в екселе, её нужно перевести в 16-й код для прошивки?
в коде за маленькую цифру отвечает єтот ряд
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
за самые крупные этот
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x00, // 1
я запутался за что отвечают данный координат 0Х00 и подскажите еще раз алгоритм с чего начать, я так понимаю что нужно начать с верхнего ряда который выглядит так в 2-чном коде
то как оно будет выглядет в этих 0Х00 координатах ???
ты неверно представляешь
1 шестнадцатеричное число - один столбец. 8 чисел - 8 столбцов (в данном случае)
например первое число закрашенный целиком столбец. 1 пиксель - одна еденица в двоичном виде
тогда число и получается число 0xFF в шестнадцатеричном виде
второй столбец: первый и последний пиксель
и так далее
числа/буквы/символы высотой более 8 пикселей разбиваются по высоте. например символ высотой 24пикселя будет разбит на 3 части: верхняя строка, средняя, и нижняя
Не совсем понял про то как надо разбивать и как оно записывается, большую цыфру 0 которая состоит из 32 пикселей
то первая запись: 0Х00, 0Х00, 0Х00, 0Х00, такая?
да с чего бы. ты читаешь вообще?
нужно разбивать. сначала верхняя часть
а вообще никто так не делает. скачай и рисуй
http://alex-exe.ru/files/programm/Image-generate-v2.004.rar
А в чём разница зачем обезательно в хек переводить, ведь 0x81 и B10011 одно и то-же.
Может не надо ничего переписывать веть есть и другие библиотеки http://www.adafruit.com/products/338?&main_page=product_info&cPath=37&products_id=338
display.setTextSize(font); // font от 1-6 при 6 всего две цифры на экран влазят
необязательно. только в двоичном виде слишком длинная запись
а разве это не просто масштабирование? будет квадратное же
Благодарю всем за помощь буду переваривать, еще раз извиняюсь за тупость, но сейчас некоторіе вещи стали прояснятся:)
А в чём разница зачем обезательно в хек переводить, ведь 0x81 и B10011 одно и то-же.
0x81 = B10000001
а разве это не просто масштабирование? будет квадратное же
да будет а накой красота если смотреть с растояния 3 метра
да с чего бы. ты читаешь вообще?
нужно разбивать. сначала верхняя часть
а вообще никто так не делает. скачай и рисуй
http://alex-exe.ru/files/programm/Image-generate-v2.004.rar
рисовать действительно удобно но, я так понимаю чтоб коректно было то нужно все цыфры в коде править включая (. - /)
Попробовал до цыфры 2 включая символи править но на экранчик выводется как то кусочек нужной цыфры, видимо должна быть правильная последовательность ?
ты спрашивал про то как нарисовать. про вывод другое дело
да теперь другие вопросы возникли, то какая последовательность прописывания полученого хек кода?
гугли. есть инструкции по нокиевским дисплеям у alex_exe вроде
Может поможет https://developer.mbed.org/users/smultron1977/code/SPI18TFT/file/309c546f048d/TFT_fonts
:)
есть куча готовых библиотек и шрифтов для 5110, например в u8glib.
дургое дело, что крупные шрифты отжирают кучу памяти, нужно озаботиться заранее вопросом их хранения.
как сделать переключение экранов, например в одном одни параметры показывает (давление, температура) при нажатии кнопки другая страничка экрана (влажность, высоту) ?
При нажатии кнопки меняем флаг. В сооответствии с флагом рисуем нужный экран.
Чо за флаги?
Чо за флаги?
Под флагом подразумевают переменную. Перед выводом информации на экран проверяем переменную, и в зависимости от её значения выводим нужную информацию ("переключаем" экраны). А значение этой переменной меняем при нажатии кнопки.
А как в коде не редактируя библиотеку вставлять нужные символы с Image-generate-v2.004 в плоть до того чтоб самому все цыфры нарисовать и вставить в код?
в u8glib есть уже готовые шрифты на весь экран
выбираешь любой шрифт высотой 46 пикселей и вперед с песней.
по одному пикселю останется сверху и снизу.
https://code.google.com/p/u8glib/wiki/fontgroupfreeuniversal
например
:)
Паралельно ищю коды с библиотекой u8glib но нимогу ничего найти
Лучше рисовать в Пэинте, - и нагляднее и сразу получитье нужный код. Особенно если сохраните изображение в монохромном режиме (один бит на пиксель). Пэинт сам переведет это в нужные коды.
Заведите рисунок шириной 32 пикселя и высотой - сколько нужно для одного или нескольких символов, и рисуйте там что нужно. Попиксельно рисовать удобнее в режиме с масштабированием - х4 или х8.
Сохраните в монохромном режиме. Сам рисунок окажется в файле по смещению 62. Каждые 4 байта - одна строка растра в нужном Вам виде. Нумеруются снизу вверх, так что возможно придется изменить порядок на обратный.
чо-то звучит нихрена не нагляднее и не удобнее ))
Для тех кто знает это просто, но для новичков вроде меня мелочевые вещи непонятными кажутся.
То кто то поможет разобратся с установлением флажков на экран в коде приведеном выше, чтоб при нажатии на заданую кнопку поочередно при последующем нажатии переключались экраны ???
Правьте шрифты в файле DefaultFonts.h
я с помощю генератора символов сделал так называемый хек код больших цифр размером 16Х32
но непойму за что отвечают некоторые стоки, так как мои цыфры выводятся поломаными вывернутыми кто правил данный файл.
вот за что например отвечает первый ряд (0x0e, 0x18, 0x2d, 0x0d,,) так как остальное понятно за что
там видимо что то отвечает за формат цыфры, так как родной формат цыфр BigNumbers 14х24 а я генерировал 16х32
0x0e - ширина символа в пикселях (в данном случае 14),
0x18 - высота символа в пикселях (в данном случае 24)
0x2d - ASCII-код первого символа (смещение в таблице - 45),
0x0d - количество символов знакогенератора (13).
Благодарю :) буду разбиратся дальше
я так понял такой таблицей нужно пользоватся
http://www.dpva.info/guide/guidemathematics/guidemathematicsnumericalsystems/tablecodeequivalent/
доделал цыфри формата 16х32 все работает даже крайние два значения менятьне надо
0x2d - ASCII-код первого символа (смещение в таблице - 45), 0x0d - количество символов знакогенератора (13).
а вот если 20х40 то уже не работает, подскажите какая там зависимость от ширины и высоты ???
все же больше интересует переключение екранов нажатием кнопки, как те флаги ставить и прописывать условия никак не разберусь
вот пока скеч где намешаны экраны выводятся подскажите где чего добавить в коде чтоб при каждом нажатии кнопки на 11 выводе поочередно переключались экран 1 2 3
Чего проще то? Заведите переменную, которая считает нажатие кнопки по кругу. И от значения переменной хоть 150 экранов выводите.
все страньше и страньше.
А как выглядит та переменная и флаги на экран ?
А как выглядит та переменная и флаги на экран ?
int k;
if (k=1){
}
else......
т.е. так как и влюбом другом случае... значение "к" = нажатия кнопки :)
int k;
if (k=1){
}
else......
т.е. так как и влюбом другом случае... значение "к" = нажатия кнопки :)
ну это по кнопке переменная, а как в коде обозначить что это именно тот экран который нам нужен, что перед ним писать?
ну это по кнопке переменная, а как в коде обозначить что это именно тот экран который нам нужен, что перед ним писать?
весьма примерно так (в смысле наглядности при обучении)
и сворачивайте код при вставке, мотать устал
Благодарю! буду переваривать дальше :)