Как лучше организовать управление? (Задача)

Есть МК с 8 ногами (Attiny13), 2 под питание, 1 reset, остаётся 5 рабочих ног (вариант с задействованием reset не учитываем). Есть интерес сделать управление двумя ШИМ (две светодиодные ленты), получается что для ввода остаётся три ноги. Да и больше трёх кнопок не хочется, интересно именно сделать тремя. Так вот, задача сделать управление яркостью кнопками +- отдельно для каждого канала + включение выключение каналов.

Задача больше не про электронику и программирование а про интерфейсы.

Вот думаю одну из кнопок сделать в трёх режимах короткое нажатие, даблклик, долгое нажатие. И в сочетании с +- всё это разруливать, но пока не придумал окончательную схему упралвения. А в качестве индикации выбранного канала выбрать например мерцание на пару секунд того/тех каналов который выбран.


!!!ВНИМАНИЕ!!! - У меня есть другие МК, с большим количеством ног и ардуины тоже имеются, кнопок тоже завались, мне интересно именно решение такого управления всего на трёх кнопках.

Arduino & Pi

1.4K постов20.6K подписчика

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
7
Автор поста оценил этот комментарий

На 3 вывода можно повесить 6 независимых кнопок. Схема снизу.

Минусы - нужно 6 диодов. Можно 3 ёмкостями зашунтировать линии...

Логика такая.

Вывод 1 - устанавливаем вывод и лог 1. Опрашиваем входы 2 и 3.

Затем 2 - устанавливаем вывод и лог 1. Опрашиваем входы 1 и 3.

Потом 3 - устанавливаем вывод и лог 1. Опрашиваем входы 1 и 2.

По наличию лог 1 на входе и определяем нажатие кнопки.

Схеме 1000 лет - уже придумана до нас ))

Иллюстрация к комментарию
раскрыть ветку (6)
Автор поста оценил этот комментарий

Спасибо конечно, но в я писал что три кнопки связано не только с ограничением МК (у меня лежит горсть Attiny2313 у которых ног намного больше), интересно именно как это можно с тремя разрулить.

раскрыть ветку (4)
2
Автор поста оценил этот комментарий

Я предложил вариант на 6 кнопок. Если нужно 3 кнопки, то достаточно 2х свободных GPIO ))

Алгоритм сложнее (набросаю псевдокодом)

int btn1 = btn2 = btn3 = 0;

GPIO1.mode = out;

GPIO2.mode = in;

If GPIO2 == 1 { btn1 ++; btn2 ++}

GPIO1.mode = in;

GPIO2.mode = out;

If GPIO1 == 1 { btn2 ++; btn3 ++}

If btn1 == 2 return SW1;

if btn2 >0 return SW2;

If btn3 > 0 return SW3;

return SW_NONE;

P.S. Такие фокусы прекрасно ложится на ассемблер. Примерно такое я делал для PIC в 2000х годах )), когда в МК были перепрограммируемыми - путём держания их под УФ лампой )) и на всю логику было 512 шагов памяти ))

Тогда приходилось экономить всё - память, выводы, такты ))

Иллюстрация к комментарию
раскрыть ветку (3)
Автор поста оценил этот комментарий

Мне не нужен алгоритм чтения кнопок. Я же писал, что задача не про программирование и не про пайку, вопрос про интерфейсы, задача сделать упралвение тремя кнопками более менее эргономичным. Под кнопками я подразумеваю элементы на которые надавливаеш/прикасаешся, НЕ ЭНКОДЕРЫ, НЕ ПОТЕНЦИОМЕТРЫ, К-Н-О-П-К-И.

Автор поста оценил этот комментарий

Кхе. Что-то меня понесло )

Если МК поддерживает Z-State для GPIO, то на 2 вывода можно повесить ... Считайте по схеме сами ) (и да, такое работало для старых PICов)

Алгоритм - тоже )

P.S. И да, убрав резисторы R1 и R2 - можно сэкономить на выводе RESET ))) Главное - что бы ёмкостей не стояло больших )))

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Вопрос в посте если обобщить "КАК РЕАЛИЗОВАТЬ УПРАВЛЕНИЕ ТРЕМЯ КНОПКАМИ?", а не "КАК ПОДКЛЮЧИТЬ К МИКРОКОНТРОЛЛЕРУ БОЛЬШЕ КНОПОК ЧЕМ НОГ?".

Автор поста оценил этот комментарий

Красава!

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