Страница 1 из 1

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 09:56}
DWD
Чем больше кнопок, тем легче организовать меню в программе.
Скажем, наплохо смотрится и легко делается меню при управлении с 5 кнопок, расположенных соответствующим образом: влево, вправо, вверх, вниз и в центре - кнопка "Ок"...
Тут всё прозрачно и просто.

А вот как организовать такое же по функциональности меню, но имея всего 3 кнопки?
Если точнее, то один энкодер с кнопкой.

Скажем, вращение влево или вправо - листание меню.
Выбрав меню, нажимаем ручку энкодера и заходим именно в это меню.
Вращением ручки выбираем требуемый параметр меню и нажатием его выбираем.
Снова вращаем ручку и меняем значение выбранного параметра...
Теперь нужно выйти из этого меню, пернувшись на шаг назад, но как?
Кнопок то больше нет.

Осталось только двойные клики применять, нажатие с удержанием, да нажатие с проворотом.
Но это всё так сложно и нудно...

Подскажите, пожалуйста, красивые алгоритмы реализации, а то у самого уже фантазии не хватает.

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 10:36}
holodaleksey
Короткое нажатие ввод, с удержанием выход.
подобные решения весьма приятно реализованы у карела в pj32 и pjeasy.

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 11:09}
DWD
Тут тоже есть заморочки...
Если организовать срабатывание по отпусканию кнопки, то появляется задержка на срабатывание - проявляется как тормознутость. Что нервирует.
А если организовать срабатывание по нажатию, то реализация довольно громоздкая, сложная и закрученная.

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 11:25}
vlad
еще можно по бездействию. правда если много параметров настраивать то не совсем удобно. в этом случае по бездействию и по длительному удержанию

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 12:04}
DWD
По бездействию мне не подходит, не смотря на слабо разветвлённое меню: порядка 4  редактируемых меню (плюс несколько информационных), и в каждом 1-3 изменяемых  параметра.

В общем, по бездействию будет не оперативно.

К тому же, меня бесит, когда прога сама выходит из режима редактирования - я думаю, что и куда менять, а она считает, что всё решено и выходит...
Программа не должна думать и иметь своё мнение. Она должна выполнять, что ей поручено.

Добавлено (10.07.2016, 12:04)
---------------------------------------------
Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?
Тогда просто нажатие на кнопку означает вход в меню или параметр, а нажатие после выбора символа "выход" - выход на предыдущую позицию меню.

Правда не на каждом экране меню есть свободное место даже для одного символа...

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 12:52}
vlad
DWD писал(а):Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?
действительно- помоему это самый лучший вариант. имхо

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 13:32}
CraCk
У меня нет энкодера чтобы проверить вариант: Зажимаем кнопку энкодера и не отпуская ее одновременно крутим вправо или влево. Что будет означать меню назад.
А экран какой?

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 14:41}
DWD
vlad писал(а):Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?действительно- помоему это самый лучший вариант. имхо
Места нет для доп символа. Решил в качестве символа "Возврат на шаг" делать миганющим все надписи на экране.
То есть, вращением можно будет выбрать либо какой-то параметр для редактирования (он мигает), либо режим возврата (мигает всё).

Алгоритм получается такой:
1. Вращением ручки энкодера выбираем нужное меню.
2. Нажатием ручки заходим в режим редактирования этого меню. (на экране всё мигает).
3. Вращением ручки энкодера выбираем нужный параметр для изменения (мигает название этого параметра или всё).
4. Нажатием ручки заходим в режим изменения значения параметра. (на экране  мигает значение).
5. Вращением ручки меняем значение выбранного парамтера (значение всё время мигает).
6. Нажатием ручки выходим из редактирования значения (на экране мигает название этого параметра ).
7. Вращением ручки энкодера выбираем другой параметр для изменения (мигает название этого параметра) или для выхода (мигает всё).
8. Если будет выбран параметр, то смотреть с пункта 3. Если выбран выход, то нажатием ручки происходит выход из режима редактирования выбранного меню.
9. Далее - как в пункте 1.

Вроде как получается одной кнопкой реализовать и вход и выход. И в то же время, зайдя в меню по ошибке и увидев, что всё мигает, можно снова нажать и выйти. То есть, не много лишних движений и интуитивно понятно (мне, по крайней мере ).

Добавлено (10.07.2016, 14:39)
---------------------------------------------
CraCk писал(а):Зажимаем кнопку энкодера и не отпуская ее одновременно крутим вправо или влево. Что будет означать меню назад.
Я этот вариант уже проверял - работает чётко с любым энкодером, какие у меня были. В том числе и в варианте на 3-х фазном движке.

Так что рекомендую всем...

Хороший вариант и он мне нравится, но он уже занят для режима редактирования глобальных меню (настройки, калибровочные константы и т.д.). То есть, для меню очень редко или вообще однократно используемых.

Добавлено (10.07.2016, 14:41)
---------------------------------------------
CraCk писал(а):А экран какой?
Что Вы имеете в виду - марку дисплея?

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 15:32}
CraCk
DWD писал(а):Что Вы имеете в виду - марку дисплея?
Имел ввиду на сколько строк? Если есть место можно создать пункт назад.

[video][/video]

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 16:02}
DWD
Дисплей 2002

Алгоритм управления меню энкодером?

Добавлено: 10.07.2016{, 21:11}
Vitez
Мое предложение: В конце каждого прокручиваемого списка "Меню" есть вкладка "Назад" Активация оной и  возвращает на уровень выше.

Алгоритм управления меню энкодером?

Добавлено: 11.07.2016{, 21:04}
Noname
когда то делал меню на трех кнопках, вот нашел правда не доделанный проект, но если интересно , можете посмотреть в протеусе
ссылка

Алгоритм управления меню энкодером?

Добавлено: 12.07.2016{, 07:30}
DWD
Спасибо, посмотрел.
Пока пытаюсь сделать без применения задержек. Особенно длинных.