Меню для текстового LCD 1602 или 1604 для энкодера с кнопкой
- Войдите на сайт для отправки комментариев
Искал по форуму - много меню плохого качества с мерцающими экранами и непонятно зачем очередями задач. Есть ли готовые качественные библиотеки меню?
Если таких нет, посоветуйте пожалуйста как удобнее его организовать энкодеролм с кнопкой:
1) вход в верхний уровень меню нажатием кнопки или сразу смена пунктов верхнего уровня вращением?
2) для выхода из меню без сохранения измененного выбора в меню удобнее иметь доп кнопку ESC или просто ждать таймаута?
3) для выхода с сохранением измененного результата использовать нажатие энкодера или завести кнопку Enter ?
и тд и тому подобные вопросы....
Планирую ограничится двумя уровнями меню - на верхнем выбор названия параметра для изменения, а на нижнем выбор его значения.
CobalD, Вам не кажется, что если бы существовали единственно верные ответы на Ваши вопросы, то все меню походили бы друг на друга как две капли воды?
Помимо прочего, для решения о том, какой выбор предпочтительнее, следуеть знать, для чего именно используется меню, какова цена ошибок, насколько критична скорость реакции оператора и т.п.
У меня, например, 1) сделан по кнопке. Но такое решение выбрано потому, что экран используется для другой цели. Соответственно, по кнопке экран переключается на меню.
Мое лично мнение: таймаут - неудобен. Но, возможно, для другого проекта это и не так.
У меня для меню используется энкодер и две кнопки. Кнопка самого энкодера для работы с меню не используется, а служит для других целей.
У меня разные ветви меню имеют разную как "глубингу", так и "ширину", и, кроме того, допускают как выбор одного из вариантов (с индикацией текстовой строки), так и установление числового значения (с индикацией числа). Кроме того, "глубина" и "ширина" каждого из пунктов меню сожет изменяться прямо в процессе работы скетча. Оказалось, что так сделать проще, чем придумывать "жесткий" способ хранения меню, имеющего ветви разных размеров.
Мне нравится Ваша идея абстрактного меню с разумноым ограничением по количеству пунктов. Беда в скудности пространства в LCD 1602
У меня разные ветви меню имеют разную как "глубингу", так и "ширину", и, кроме того, допускают как выбор одного из вариантов (с индикацией текстовой строки), так и установление числового значения (с индикацией числа). Кроме того, "глубина" и "ширина" каждого из пунктов меню сожет изменяться прямо в процессе работы скетча. Оказалось, что так сделать проще, чем придумывать "жесткий" способ хранения меню, имеющего ветви разных размеров.
Перенастойку меню в процессе работы программы не планирую, чтобы не запутаться. Смотрел на форуме сообщение про Ваше меню, идея иерархии и типов "enum + char* + int" понравилась. Для какой цели используете кнопку энкодера?
Беда в скудности пространства в LCD 1602
У меня нижняя строка занята названием очередного из перебираемых пунктов, а верхняя - на уровень выше. Ну либо верхняя - название пункта, а нижняя - отображает его числовое значение.
Перенастойку меню в процессе работы программы не планирую, чтобы не запутаться.
А я тоже не планировал и пока не планирую. Просто это оказалось бонусом выбранного подхода. Точнее, всю структуру меню я создаю в setup().
Для какой цели используете кнопку энкодера?
Ну, это уже специфика каждого конкретного проекта. У меня она служить для команды "All Notes Off".