Алгоритм управления меню энкодером?
Алгоритм управления меню энкодером?
Чем больше кнопок, тем легче организовать меню в программе.
Скажем, наплохо смотрится и легко делается меню при управлении с 5 кнопок, расположенных соответствующим образом: влево, вправо, вверх, вниз и в центре - кнопка "Ок"...
Тут всё прозрачно и просто.
А вот как организовать такое же по функциональности меню, но имея всего 3 кнопки?
Если точнее, то один энкодер с кнопкой.
Скажем, вращение влево или вправо - листание меню.
Выбрав меню, нажимаем ручку энкодера и заходим именно в это меню.
Вращением ручки выбираем требуемый параметр меню и нажатием его выбираем.
Снова вращаем ручку и меняем значение выбранного параметра...
Теперь нужно выйти из этого меню, пернувшись на шаг назад, но как?
Кнопок то больше нет.
Осталось только двойные клики применять, нажатие с удержанием, да нажатие с проворотом.
Но это всё так сложно и нудно...
Подскажите, пожалуйста, красивые алгоритмы реализации, а то у самого уже фантазии не хватает.
Скажем, наплохо смотрится и легко делается меню при управлении с 5 кнопок, расположенных соответствующим образом: влево, вправо, вверх, вниз и в центре - кнопка "Ок"...
Тут всё прозрачно и просто.
А вот как организовать такое же по функциональности меню, но имея всего 3 кнопки?
Если точнее, то один энкодер с кнопкой.
Скажем, вращение влево или вправо - листание меню.
Выбрав меню, нажимаем ручку энкодера и заходим именно в это меню.
Вращением ручки выбираем требуемый параметр меню и нажатием его выбираем.
Снова вращаем ручку и меняем значение выбранного параметра...
Теперь нужно выйти из этого меню, пернувшись на шаг назад, но как?
Кнопок то больше нет.
Осталось только двойные клики применять, нажатие с удержанием, да нажатие с проворотом.
Но это всё так сложно и нудно...
Подскажите, пожалуйста, красивые алгоритмы реализации, а то у самого уже фантазии не хватает.
Последний раз редактировалось DWD 10 июл 2016, 09:58, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 566
- Зарегистрирован: 10 янв 2016, 13:47
Алгоритм управления меню энкодером?
Короткое нажатие ввод, с удержанием выход.
подобные решения весьма приятно реализованы у карела в pj32 и pjeasy.
подобные решения весьма приятно реализованы у карела в pj32 и pjeasy.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
Алгоритм управления меню энкодером?
Тут тоже есть заморочки...
Если организовать срабатывание по отпусканию кнопки, то появляется задержка на срабатывание - проявляется как тормознутость. Что нервирует.
А если организовать срабатывание по нажатию, то реализация довольно громоздкая, сложная и закрученная.
Если организовать срабатывание по отпусканию кнопки, то появляется задержка на срабатывание - проявляется как тормознутость. Что нервирует.
А если организовать срабатывание по нажатию, то реализация довольно громоздкая, сложная и закрученная.
Алгоритм управления меню энкодером?
еще можно по бездействию. правда если много параметров настраивать то не совсем удобно. в этом случае по бездействию и по длительному удержанию
Алгоритм управления меню энкодером?
По бездействию мне не подходит, не смотря на слабо разветвлённое меню: порядка 4 редактируемых меню (плюс несколько информационных), и в каждом 1-3 изменяемых параметра.
В общем, по бездействию будет не оперативно.
К тому же, меня бесит, когда прога сама выходит из режима редактирования - я думаю, что и куда менять, а она считает, что всё решено и выходит...
Программа не должна думать и иметь своё мнение. Она должна выполнять, что ей поручено.
Добавлено (10.07.2016, 12:04)
---------------------------------------------
Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?
Тогда просто нажатие на кнопку означает вход в меню или параметр, а нажатие после выбора символа "выход" - выход на предыдущую позицию меню.
Правда не на каждом экране меню есть свободное место даже для одного символа...
В общем, по бездействию будет не оперативно.
К тому же, меня бесит, когда прога сама выходит из режима редактирования - я думаю, что и куда менять, а она считает, что всё решено и выходит...
Программа не должна думать и иметь своё мнение. Она должна выполнять, что ей поручено.
Добавлено (10.07.2016, 12:04)
---------------------------------------------
Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?
Тогда просто нажатие на кнопку означает вход в меню или параметр, а нажатие после выбора символа "выход" - выход на предыдущую позицию меню.
Правда не на каждом экране меню есть свободное место даже для одного символа...
Последний раз редактировалось DWD 10 июл 2016, 12:21, всего редактировалось 1 раз.
Алгоритм управления меню энкодером?
действительно- помоему это самый лучший вариант. имхоDWD писал(а):Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?
Алгоритм управления меню энкодером?
У меня нет энкодера чтобы проверить вариант: Зажимаем кнопку энкодера и не отпуская ее одновременно крутим вправо или влево. Что будет означать меню назад.
А экран какой?
А экран какой?
Последний раз редактировалось CraCk 10 июл 2016, 13:34, всего редактировалось 1 раз.
Алгоритм управления меню энкодером?
Места нет для доп символа. Решил в качестве символа "Возврат на шаг" делать миганющим все надписи на экране.vlad писал(а):Может в каждом экране меню добавить ещё один, выбираемый, но неизменяемый параметр, обозначенный каким нибудь символом и означающим "выход"?действительно- помоему это самый лучший вариант. имхо
То есть, вращением можно будет выбрать либо какой-то параметр для редактирования (он мигает), либо режим возврата (мигает всё).
Алгоритм получается такой:
1. Вращением ручки энкодера выбираем нужное меню.
2. Нажатием ручки заходим в режим редактирования этого меню. (на экране всё мигает).
3. Вращением ручки энкодера выбираем нужный параметр для изменения (мигает название этого параметра или всё).
4. Нажатием ручки заходим в режим изменения значения параметра. (на экране мигает значение).
5. Вращением ручки меняем значение выбранного парамтера (значение всё время мигает).
6. Нажатием ручки выходим из редактирования значения (на экране мигает название этого параметра ).
7. Вращением ручки энкодера выбираем другой параметр для изменения (мигает название этого параметра) или для выхода (мигает всё).
8. Если будет выбран параметр, то смотреть с пункта 3. Если выбран выход, то нажатием ручки происходит выход из режима редактирования выбранного меню.
9. Далее - как в пункте 1.
Вроде как получается одной кнопкой реализовать и вход и выход. И в то же время, зайдя в меню по ошибке и увидев, что всё мигает, можно снова нажать и выйти. То есть, не много лишних движений и интуитивно понятно (мне, по крайней мере ).
Добавлено (10.07.2016, 14:39)
---------------------------------------------
Я этот вариант уже проверял - работает чётко с любым энкодером, какие у меня были. В том числе и в варианте на 3-х фазном движке.CraCk писал(а):Зажимаем кнопку энкодера и не отпуская ее одновременно крутим вправо или влево. Что будет означать меню назад.
Так что рекомендую всем...
Хороший вариант и он мне нравится, но он уже занят для режима редактирования глобальных меню (настройки, калибровочные константы и т.д.). То есть, для меню очень редко или вообще однократно используемых.
Добавлено (10.07.2016, 14:41)
---------------------------------------------
Что Вы имеете в виду - марку дисплея?CraCk писал(а):А экран какой?
Последний раз редактировалось DWD 10 июл 2016, 14:29, всего редактировалось 1 раз.
Алгоритм управления меню энкодером?
Имел ввиду на сколько строк? Если есть место можно создать пункт назад.DWD писал(а):Что Вы имеете в виду - марку дисплея?
[video][/video]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось CraCk 10 июл 2016, 15:34, всего редактировалось 1 раз.
Алгоритм управления меню энкодером?
Мое предложение: В конце каждого прокручиваемого списка "Меню" есть вкладка "Назад" Активация оной и возвращает на уровень выше.
Последний раз редактировалось Vitez 10 июл 2016, 21:17, всего редактировалось 1 раз.
Алгоритм управления меню энкодером?
когда то делал меню на трех кнопках, вот нашел правда не доделанный проект, но если интересно , можете посмотреть в протеусе
ссылка
ссылка
Последний раз редактировалось Noname 11 июл 2016, 21:06, всего редактировалось 1 раз.
Алгоритм управления меню энкодером?
Спасибо, посмотрел.
Пока пытаюсь сделать без применения задержек. Особенно длинных.
Пока пытаюсь сделать без применения задержек. Особенно длинных.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей