|
|
  |
Индикатор типа "полоса"., На ЖКИ. |
|
|
|
Jul 17 2006, 13:35
|
Частый гость
 
Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558

|
Возникла необходимость в индикаторе типа выдвигающейся слева полоски. Точнее двух полосок, типа как раньше делали индикаторы уровня в бытовой аппаратуре. ЖКИ 4х20, две нижние строки будут индикатором. Сначала сделал: перед записью "квадратиков" очищал обе строки справа-налево, записывая пробел 19 раз(первые сегменты пусть остаются). Потом как обычно записывал "квадратик"(0xFF) N раз, где N - уровень сигнала от 1 до 20. Но так как то плохо на железе, как то мигает неправильно. Потом переделал: сначала справа-налево записывается пробел (20-N) раз, потом квадратик слева-направо N раз. Стало заметно лучше. А вот как бы сделать что б какой то уровень показал, а потом медленно гасил бы полоску справа-налево, как в настоящих индикаторах? Драйвер LCD только пишет в LCD, не читает, пока.
|
|
|
|
|
Jul 17 2006, 15:02
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(aaarrr @ Jul 17 2006, 18:45)  Цитата(Nanobyte @ Jul 17 2006, 18:33)  В том способе, который я предложил, мерцаний практически нет.
Зато нужно отслеживать изменения и хранить в ОЗУ буфер экрана. Не пойму только, зачем решать элементарную задачу столь сложными способами? Так запись в LCD жутко тормозная, можно сэконмить кучу времени! И потом в этой задаче достаточно знать только значение преыдущего уровоня, что бы расчитать изменения (добавить пробелов или квадратиков в нужное место)
|
|
|
|
|
Jul 18 2006, 06:58
|

Профессионал
    
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264

|
Цитата(aaarrr @ Jul 17 2006, 18:45)  Цитата(Nanobyte @ Jul 17 2006, 18:33)  В том способе, который я предложил, мерцаний практически нет.
Зато нужно отслеживать изменения и хранить в ОЗУ буфер экрана. Не пойму только, зачем решать элементарную задачу столь сложными способами? Абсолютно согласен. Скорость вывода и инерционность экрана, все равно не заметны на глаз (все происходит как бы мгновенно), так что нормально всегда обновлять строки индикатора целиком слева на право или наоборот в зависимости от дизайна изделия. Другое дело с какой частотой выводить данные буфера? Лучший способ это обновление при наличии изменения. Т.е. необходимо все время работать с буфером и выставлять флажек на отрисовку, если изменяется его состояние. После отрисовки флажек - сбрасывать.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
Guest_Serg79_*
|
Jul 18 2006, 07:19
|
Guests

|
Данная затея уже реализованна в библиотеке для LCD. Функция нызывается: void lcdProgressBar(u16 progress, u16 maxprogress, u08 length);
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|