Комрады, всем привет. Посоветуйте какую-нить понятную статью или что-то подобное по организации меню на ардуино с LCD и энкодером. Без использования библиотек для энкодера. То что нахожу в инете, либо очень мудрёно, либо использует сторонние библиотеки и не даёт понимания.
Комментарии: 15
Aleksandr
Построение гуя требует довольно толстых абстракций, по сути, тебе придётся изучить ту или иную библиотеку (или подход), а не «меню на ардуино». Ибо его можно реализовать очень по-разному. В ардуине нет никаких базовых возможностей для.
Empty
именно подход и хочу понять, но доступного объяснения не могу найти не складывается логика в голове, опрос вынесен в отдельную функцию прерываний, как это увязывать с основным циклом, не понимаю.
Aleksandr
Ну пусть у тебя будет список пунктов в меню в массиве, как советуют выше, а также переменная, которая хранит номер выбранного меню. В цикле теперь у тебя две чётких задачи: 1) отрисовать меню с подкрашенным выбором, 2) если получен сигнал кнопочки - изменить переменную с выбранным пунктом.
Empty
и это вроде как сформулировал для себя, но как пробую реализовать, картинка не складывается
Aleksandr
Поздравляю, вы программист! :) Ступайте доделывать меню! Пусть в прерывании меняется переменная с номером выбранного пункта В цикл тащить ничего не нужно В цикле останется отрисовка Каждый кадр функция отрисовки будет рисовать одно и то же меню, а потом такая рисует, хоп, а переменная-то и изменилась! Ну и нарисуется меню с уже другим выбором Кароч, раздели в своих мозгах функцию изменения некой модели по внешним сигналам (состояние меню в данном случае) и функцию рисования этой модели, которой неважно, как менялась модель, ей плевать, она просто её каждый божий кадр рисует Наверняка когнитивная проблема именно в этом, ты из обработчика нажатия кнопки как бы хочешь запустить рисование. А там нужно только модель состояния менять.
Empty
может быть
Aleksandr
Лучше бы ты сказал «блен, точно! Я всё понял!»
Empty
нарыл, этот пример, но он слишком сложен для меня http://codius.ru/articles/%D0%98%D0%BD%D0%BA%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%8D%D0%BD%D0%BA%D0%BE%D0%B4%D0%B5%D1%80_%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D1%8B_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_Arduino#a36
Saw
так здесь все что тебе нужно, только склеить и готово. И меню правильно сделано.
Aleksandr
Сначала без понимания, лишь бы запустились Потом в запущенных примерах менять что-то, ломать, смотреть, что изменяется в поведении программы И постепенно мозг нужные нейронные связи нарастит Освоит навык через интерактив
Empty
а ещё когнитивный диссонанс с действием переменных
Vasil
Ой как всё плохо. Тебе надо диодиком моргать пока что и разбираться в типах данных, функциях, указателях и так далее. Ну и да, на атмеге нормального меню графического не жди.
Empty
что-то конкретное можно предложить?
Saw
ну библиотека энкодера чуть сократит время разработки, Не понравится - перепишешь потом. А меню… в виде дерева сделай, скажем через массив
Anonim
задавай свои ответы, мы слушаем