adc 0 13 июня, 2012 Опубликовано 13 июня, 2012 · Жалоба Увидел статью про LCD дисплеи, в котором применялась шкала прогресс бар на LCD hd44780. Хочу в своем проекте использовать похожую шкалу. Свои символы в дисплей прописал(черточки как в примере, что-то типа этого: __I, _I_, I__, II_, III). Дальше не знаю как подступится. А именно как привязать константу к шакале? Ведь получается что шкала должна двигаться меняя символ, а потом переходить на следующий символ?! Далее хочу реализовать "точку максимума" отдельно стоящей черточкой (см.рис.2). С этим вообще пока даже мыслей нет. Казалось бы все должно быть элементарно, а в голову лезут большие алгоритмы с кучей ветвлений... Подскажите пожалуйста алгоритм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 13 июня, 2012 Опубликовано 13 июня, 2012 · Жалоба Непонятно, что у Вас вызвало такие затруднения? Из тех символов, что вы прописали, Вам понадобяться только эти: I__, II_, III. Дальше. Допустим, у Вас 16 знакомест. Значит, полную шкалу сигнала делите на 48 (16х3) градаций. Теперь, зная величину текущего уровня сигнала, определяете, скольким градациям он соответствует. Допустим, двадцати. Отсюда просто найти, сколько полных знакомест будет отображатся в шкале (симвлолов III): (20/3=6+2) и какой символ вывести в дополнение к ним (в данном случае II_, конечно). Всё. Максимум можно организовать мигающей чёрточкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 13 июня, 2012 Опубликовано 13 июня, 2012 · Жалоба Подскажите пожалуйста алгоритм. Да какой тут алгоритм? Если как на фото, получается три палки на знакоместо. Соответственно: номер знакоместа = x / 3 (все, что до него, заполняем тремя палками) номер символа в последнем знакоместе = x % 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 июня, 2012 Опубликовано 13 июня, 2012 · Жалоба Вот тут лежит проект (исходники на "C"), где в файле hd44780.c есть реализация барграфа. Это низкоуровневая функция в ней есть масштабирование. Используется два или три уровня на каждое знакоместо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adc 0 13 июня, 2012 Опубликовано 13 июня, 2012 · Жалоба Да какой тут алгоритм? Если как на фото, получается три палки на знакоместо. Соответственно: номер знакоместа = x / 3 (все, что до него, заполняем тремя палками) номер символа в последнем знакоместе = x % 3 Да уж,слишком громко у меня прозвучало "алгоритм". :-) Видимо плохо изъяснился. Прошу простить великодушно Входную величину масштабировать под шкалу не надо. Понимаю что величину нужно поделить на 3, и уже по целой и остатку заполнять шкалу. Просто думал обойтись без деления. Максимум можно организовать мигающей чёрточкой. Под "Максимум" я имелл ввиду на время замирающую черту (как в старых эквалайзерах), которая через некоторое время смещается ближе к вершине шкалы. Вот тут где в файле hd44780.c есть реализация барграфа. Спасибо! Посмотрю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 15 июня, 2012 Опубликовано 15 июня, 2012 · Жалоба Просто думал обойтись без деления. Не, ну можно, конечно, обойтись без деления. Например, вот так: номер знакоместа = (значение * 85) >> 8 Только зачем этот геморрой? На скорости это не должно сильно сказаться - экран чаще 10-20 раз в секунду смысла обновлять нет. Объем программы разве что... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться