Кнопки и менюшка для AVR (Atmega8)

Обсуждаем контроллеры компании Atmel.
Ответить
aleksey chilov
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Кнопки и менюшка для AVR (Atmega8)

Сообщение aleksey chilov »

Всем привет!
Люди подскажите как организовать менюшку для проэкта на avr/
Хотел на switch но,всё бы ничего но вот тогда у меня кнопки всегда задействованы те
которые не должны быть задействованы. ( пременная инкрементируется,декрементируется,
умножается и делится ) Короче в любой момент нажми менюха перескакивает по разделам.
Спасибо.
Последний раз редактировалось Аlex Вт ноя 22, 2022 23:23:32, всего редактировалось 1 раз.
Причина: Название темы
Реклама
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: Помогите с кодом на си для AVR (Atmega8)

Сообщение MLX90640 »

Менюшки делаются на связанных списках и указателях, с переназначением действий кнопок.
В принципе, можно не париться всей этой замороченной штукой, а организовать на тех же switch, просто введя дополнительную переменную, отвещающую за выбор действий кнопок.
Реклама
aleksey chilov
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Re: Помогите с кодом на си для AVR (Atmega8)

Сообщение aleksey chilov »

Ну дело в том что кнопки опрашиваются у меня замороченно. Там я подключал стороннюю библиотеку,
я скачивал самодельную,там она большая. Там в ней и двойной клик и долгое нажатие вобщем всё там. А в свитче просто переменная из обработчика кнопок этой же библиотеки.

Добавлено after 55 seconds:
Хотелось бы фрагмент кода,в качестве примера.
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1627
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: Помогите с кодом на си для AVR (Atmega8)

Сообщение VNS »

[uquote="aleksey chilov",url="/forum/viewtopic.php?p=4324944#p4324944"]Хотелось бы фрагмент кода,в качестве примера.[/uquote]
1.png
(48.52 КБ) 90 скачиваний
:)
Кнопки подключены: Set – PD5; Up – PD6; Down – PD7.
Светодиоды 1 – PD0; 2 – PD1; 3 – PD2; 4 – PD3; 5 – PD4.

Алгоритм:
При кратковременном нажатии на кнопку Set, входим в меню, загорается светодиод 1 (путкт 1). Кратковременными нажатиями на кнопки Up или Down, перемещаемся по пунктам 1…5, о чём сигнализируют светодиоды, имитируя соответствующие пункты меню…
Повторное нажатие на кнопку Set осуществляет выход из меню - все светодиоды погашены.

Прошивка для визуальной работы:
temp.hex
(1.28 КБ) 65 скачиваний
МК тактируется на заводских установках (1 МГц).
Реклама
Эиком - электронные компоненты и радиодетали
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Помогите с кодом на си для AVR (Atmega8)

Сообщение Demiurg »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4324931#p4324931"]...[/uquote]
Поподробнее, плиз. Мне интересно.

Для ТС. Ищи MicroMenu. Их два варианта. Исходных. Есть на easyelectronics.ru вариант.
Последний раз редактировалось Demiurg Ср ноя 23, 2022 18:14:56, всего редактировалось 1 раз.
Реклама
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: Кнопки и менюшка для AVR (Atmega8)

Сообщение azhel12 »

Думал недавно над реализацией многоуровневого меню, на коленке накидал не очень красиво, но в принципе работает.
В продакшн такой код пускать нельзя, но как proof of concept вполне.
Код сюда кидать не буду ВОТ ссылка на onlinegdb.
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Кнопки и менюшка для AVR (Atmega8)

Сообщение Eddy_Em »

Одноуровневую менюшку достаточно просто сделать, я вот так делал. А вот в случае многоуровневой нужно будет придумать структуру, описывающую пункт меню, как-то так:

Код: Выделить всё

typedef struct _mitem{
  int (*function)();
  struct _mitem *submenu;
  struct _mitem *parent;
} menu_item;
Если function == NULL, то submenu указывает на менюшку следующего уровня, иначе при активации этого пункта выполняется function. Если parent != NULL, то при, скажем, нажатии "влево" (либо можно автоматом первым пунктом любой менюшки писать "Up", если parent!=NULL) вызывается родительское меню.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Кнопки и менюшка для AVR (Atmega8)

Сообщение ARV »

ну, я как бы тоже к этой теме руку приложил: https://radiokot.ru/forum/viewtopic.php ... t=FlexMenu
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»