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

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

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

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


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

Arduino & Pi

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

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

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

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

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

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

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

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

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

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

Есть аппаратные драйверы с ШИМ СИДов со СПИ, И2С и пр.

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

А зачем они мне?

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

Тут 2х кнопок для хорошего и уобного управления достаточно.

Я и на 1й делал меню

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

Ну так поделитесь

показать ответы
Автор поста оценил этот комментарий
На кнопку вешаете резистор в режиме делителя напряжения. Меряете напряжение поделенное с помощью ацп.
На каждую кнопку свой номинал сопротивления, теоретически можно кнопок наклепать столько, сколько позволяет точность измерения напряжения.
но коректно отрабатывать будет только одно нажатие в момент времени, две сразу будет фигню измерять.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Так а зачем мне это нужно? У меня есть куда подключить три кнопки без этой магии

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

Здравствуйте! Мы не удаляем посты, не нарушающие правил Пикабу

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

Даже если оскорбить модератора и членов сообщества? =(

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

@moderator, удали пожалуйста пост, большая часть сообщества не хочет читать вопрос и поэтому не в состоянии дать ответ.

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

Тогда только кнопочная матрица, либо панель управления со своим контроллером и хоть по one-wire слово состояния передавайте.

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

3 кнопки, ТРИ КНОПКИ, three buttons, 3 buttons. Я ни разу в этом посту не спросил "КАК МНЕ ПОДКЛЮЧИТЬ КНОПКИ?", я спрашивал какую логику на них вешать для управения, чтобы тремя кнопками можно было решить задачу.

1
Автор поста оценил этот комментарий
Так добавь одну кнопку, зачем придумывать геморрой?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Так может тогда мне вообще пихнуть два шим контроллера (на 555 например или вообще готовые), два резюка переменных и два тумблера и не придумывать геморрой? Есть задача разрулить управление тремя кнопками, она может не иметь практического обоснования, просто теория, мне интересно её решение, я поинтересовался у илитного пикабу, но аудитория оказалась не готова к осмысленному чтению вопроса.

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

Я реализовывал на ардуине короткие/длинные нажатия с помощью прерываний, правда там была возможность аппаратных прерываний на ногах, не уверен, что на тини так. Ну и использовал обработку нажатий в прерывании по таймеру, своего рода многопоточность

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

Я с пинами работаю только через прерывания, читать кнопки я умею, вопрос совершенно не в этом, а в организации самого процесса управления

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 шагов памяти ))

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

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

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

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

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

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

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

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

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

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

Автор поста оценил этот комментарий
Некропост, но вариант - энкодер с кнопкой. 2 канала на импульсы энкодера, 1 канал - на кнопку энкодера.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Да сколькож раз повторять то блин, я не хочу ничего торчащего. Я на комменты в посте отвечать перестал из за того что все дохуя умные и точно знают что мне нужно, вместо того чтобы прочитать вопрос.
У меня будут три сенсорные кнопки врезанные под столешницу, всё, делать пульт упралвения космическим кораблём наращивая количество кнопок мне не нужно, торчащие из столешницы вертелки тоже не нужны. Если бы мне было всё равно, то я бы вообще взял два потенциометра, два шим контроллера (готовых или самопальных на ne555) и два тумблера.

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

Понять твой вопрос сложно, ты зачем-то "зажимаешь себе яйца" тремя кнопками и паришь людям мозг. Энкодер с кнопкой поставь, будешь режимы нажатиями перебирать, а крутилкой быстро регулировать

раскрыть ветку (1)
Автор поста оценил этот комментарий
Я могу подключить больше кнопок, тогда вопрос отпадет, а ещё я могу пойти в магаз и купить готовое решение, тогда и вопрос с МК отпадет.
Автор поста оценил этот комментарий

На одну ногу АЦП можно много кнопок повесить. Я в своих проектах клавиатуру 4*4 вешают на одну ногу. Подпрограмма опроса кнопок очень простая.

раскрыть ветку (1)
Автор поста оценил этот комментарий
Дочитать вопрос до конца вам видимо сложно?
показать ответы
Автор поста оценил этот комментарий
Лучше добавить кнопок. С тремя свободными портами это можно легко сделать. Честно говоря очень раздражает это модное направление - экономить на копеечных кнопках. И получаем идиотское управление типа:
- длинное нажатие в вход в меню
- два коротких подтверждение
- короткое затем длинное - выход
- два коротких и длинное - сброс
и т.д. Без инструкции и не запомнишь. А всего то не экономить и плставить 5 кнопок и все наглядно и просто было бы.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Прочитайте текст вопроса ещё раз. В добавлении кнопок я не ограничен, и если мне понадобится поменяю МК, задача больше спортивная чем практичная

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

Берете и делаете три два режима.

Первый - управление вкл/выкл. Кнопки выбор канала, плюс канал, вкл/выкл канал.

Второй - изменение яркости. Кнопки выход, плюс яркость, минус яркость.


Смена режимов простая - простой в 1 режиме, при выборе канала переключение на второй режим.


PS и не надо дабл кликов, трипл кликов и длительных нажатий.


PPS индикация выбранных можно сделать мерцанием включенных каналов или светодиодиком.


PPPS не мучаться, повесить все кнопки на одну ногу с разными резисторами. И получите хоть 200+ кнопок на одной ноге, хотя тут вопрос в возможности мк определять напряжение. 


PPPPS дабл клик и трипл клики и долгое нажатие - неинтуитивный интерфейс. Людей он выводит из себя если нет мгновенного отклика. А мгновенный и понятный отклик на свтодиодных лентах вы не сделаете никогда :D

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

Именно так и планирую

PPPS не мучаться, повесить все кнопки на одну ногу с разными резисторами. И получите хоть 200+ кнопок на одной ноге, хотя тут вопрос в возможности мк определять напряжение.

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

PPPPS дабл клик и трипл клики и долгое нажатие - неинтуитивный интерфейс. Людей он выводит из себя если нет мгновенного отклика.

Этож не для людей а для себя)

DELETED
Автор поста оценил этот комментарий
Энкодер. Для управления как раз требуется три ноги. Ес 11 например. Намного удобнее, чем на кнопки тыкать
раскрыть ветку (1)
Автор поста оценил этот комментарий

С энкодером изначалный варик был, но потом решил сделать корпус без торчащих деталей

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

одной кнопкой управляй.

короткое нажатие - выбор канала(индикация мерцанием выбранного канала)

длинное нажатие увеличение(уменьшение) яркости повторное  длинное нажатие - реверс - уменьшение(увеличение) яркости

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

Как варик, спасибо

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

делитель напряжения, используем АЦП ?

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

Не понял, зачем делитель напряжения?

показать ответы
1
Автор поста оценил этот комментарий
М - матрица кнопок.
М - мультиплексор.
Р - резистор на каждую кнопку.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если бы мне хотелось добавить ещё кнопок я мог бы взять Attiny2313, которых у меня целый блистер. В вопросе я описал что задача именно про три кнопки

показать ответы
Автор поста оценил этот комментарий
Самокат Ветерана на Драйве вам в помощь
раскрыть ветку (1)
Автор поста оценил этот комментарий

А вы тут зачем?

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

Можно такой вариант, подойдёт две кнопки.

Достоинства - всегда понятно каким каналом сейчас управляешь.


кнопка 1: "+" / левый канал

кнопка 2: "-" / правый канал


Дабл клик - выключение назначенного канала (если включен) и включение канала (если выключен), одновременно с этим - выбор канала управления.

Клик - выбор канала управления

Удержание "+" / "-" - управление ШИМ


Можно ещё на кнопку 3 вынести:

дабл клик - включить оба канала

клик - выключить оба канала

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

Неплохой вариант, спасибо, попробую

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

Сдвиговый регистр?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Одна кнопка - выбор канала

Вторая - выбор режима

Третья - лишняя.

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

А +- чем делать?

показать ответы