Несколько кнопок на один пин

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт авг 15, 2023 06:46:22

Сообщение rss-999 »

Доброго времени товарищи! Подскажите как реализовать в коде
Спаять несколько сопротивлений, на каждом сопротивлении напряжение будет меняться при нажатии кнопки
Как это правильно описывать в коде? через Switch case?
Далее нужно будет отслеживать нажатие "нужной" кнопки, а так же зафиксировать нажатие других кнопок.
Благодарю за ответы!
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

Есть куча информации в Инете по запросу "Ардуино аналоговая клавиатура" например Резистивная клавиатура на Arduino. Есть даже библиотека: AnalogKey.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

Самое главное - сначала спаять то что хотите. Потом провести тесты и записать значения сэмплов (семплы - абстрактные данные оцифровки), которое выдаст ADC для каждой кнопки. Потому что реальные резисторы имеют разброс до 5 %, разбросы могут суммироваться, вычитаться и тд. Потом между соседними сэмплами вычислить середины - границы допусков, и записать их в ваш скетч. А потом в коде проводить проверку - если сэмпл больше А, но меньше Б - то это кнопка "1". Если сэмпл больше Б, но меньше С - то это кнопка "Б" и тд. А уж чем вы будете Switch case-ом или if-ом - без разницы. Но Case обычно жрет больше памяти.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

Процесс поиска кнопки надо производить методом последовательного приближения. Это требует намного меньше if-ов чем простой перебор.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1755
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4475275#p4475275"]Процесс поиска кнопки надо производить методом последовательного приближения. Это требует намного меньше if-ов чем простой перебор.[/uquote]не надо. Ставите набор резисторов с соотношением номиналов между собой как в ЦАП (где ток формируется резисторной весовой матрицей), читаете результат с АЦП, и получаете состояния кнопок в виде битов считанного числа. Большой разрядности конечно не получить, но штуки 4-5 кнопок (а при удаче даже 6) должны нормально различаться. Резисторы - как минимум 1%-ные должны быть.

Добавлено after 5 minutes 39 seconds:
[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4474727#p4474727"]реальные резисторы имеют разброс до 5 %[/uquote]Где вы такие берёте?? Давно уже во всех схемах используем как минимум 1%-ные. Не считая конечно всяких подтяжек, в которые можно ставить любой хлам. Но для сокращения номенклатуры, часто ставим такие же 1%-ные. Так как экономия ерундовая, а в случае перепутывания на производстве (что вполне вероятно), убытки будут значительно больше.
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

В данной задаче проценты не играют никакой роли, так как сопротивление контактов кнопки настолько нестабильно, что перекроет все разбросы по номиналу и температурные дрейфы. Подобное решение клавиатуры - худшее из возможных.
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1755
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Martian",url="/forum/viewtopic.php?p=4475895#p4475895"]В данной задаче проценты не играют никакой роли, так как сопротивление контактов кнопки настолько нестабильно, что перекроет все разбросы по номиналу и температурные дрейфы.[/uquote]Ну откуда Вы знаете? Может у ТС-а кнопки с золотыми контактами? Или жить девайс будет в безкислородной атмосфере, на Марсе к примеру? :wink:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

тогда да, виновен, схема отличная )
Но я бы всё-равно поставил перед резисторами какую-нить 6 х триггеров Шмидта микросхемку, благо они и SMD есть. Стоимость копеечная, а можно будет кнопок навешать ого-го (ну, если ещё микросхемку добавить)
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

[uquote="jcxz",url="/forum/viewtopic.php?p=4475889#p4475889"]... Ставите набор резисторов с соотношением номиналов между собой как в ЦАП (где ток формируется резисторной весовой матрицей), читаете результат с АЦП, и получаете состояния кнопок в виде битов считанного числа. Большой разрядности конечно не получить, но штуки 4-5 кнопок (а при удаче даже 6) должны нормально различаться...[/uquote]То есть - спаять ЦАП с кнопочным управлением. В принципе верно, если требуется отследить ОДНОВРЕМЕННОЕ нажатие нескольких кнопок. Если не вводить еще микр, то, как я понимаю, тут два варианта - Либо ДВА номинала (не количества !!!) резисторов и кнопки ТРЕХКОНТАКТНЫЕ. Либо ДВУХКОНТАКТНЫЕ кнопки и ХЗ какие номиналы резисторов. И при этом - точное равенство напряжения на матрице ЦАПа и референса на АЦП ардуины.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

микросхемка-то подешевле будет таких кнопок...
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6585
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

В любом случае резистивную клавиатуру будет колбасить и плющить не по детски. Определять нажатие той или иной кнопки нужно не по конкретному значению сопротивления (напряжения), а по попаданию в некий диапазон значений, который заведомо шире чем возможное отклонение сопротивлений резисторов и контактов кнопок.
Астролябия-сама меряет, было бы что мерять!!!
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

[uquote="rss-999",url="/forum/viewtopic.php?p=4474352#p4474352"]Далее нужно будет отслеживать нажатие "нужной" кнопки, а так же зафиксировать нажатие других кнопок.[/uquote]
Это как ? Пяток кнопок по одиночке так можно сделать, комбинации нажатий плохо работать будут.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Друг Кота
Аватара пользователя
Сообщения: 20096
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

Надо еще расчитать делитель чтоб при нажптии двух и более кнопок не срабатывал
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Друг Кота
Аватара пользователя
Сообщения: 44054
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

Asmodey писал(а):В любом случае резистивную клавиатуру будет колбасить и плющить не по детски.
Вот только, именно этот вариант клавиатурок, сейчас используют всё чаще и чаще.. Даже в автомобилях - кнопки управления мультимедиа на руле..
Друг Кота
Аватара пользователя
Сообщения: 6585
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4542435#p4542435"]Вот только, именно этот вариант клавиатурок, сейчас используют всё чаще и чаще..[/uquote]
Ну, что тут поделаешь? Прогресс... Сейчас многоканальный АЦП, а то и не один, в самом захудалом микроконтроллере. Еще бы кнопки нормальные научились делать :))
Астролябия-сама меряет, было бы что мерять!!!
Друг Кота
Аватара пользователя
Сообщения: 20096
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

Так они умеют нормальные кнопки делать. Ты просто ненормальные покупаешь. Тебе же что подешевле. Есть и герметичеые и серебреные и золоченые
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Друг Кота
Аватара пользователя
Сообщения: 6585
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Конечно не покупаю, у меня еще советских мембранных целое ведро. Действительно посеребренные, и позолоченные, и с никелевым покрытием, а не как у амеров, китайцев и немцев - полмикрона якобы золота, остальное дерьмо. Сотня-другая нажатий и можешь забыть про золочение контактов. Они умеют некое подобие нормальных кнопок делать, как те дикари что самолет из соломы строили. Карго-культ в полный рост. Они, наверное, сами не знают уже зачем золото наносят на контакты, один хрен при такой милимизерной толщине его там все равно что нет.
Астролябия-сама меряет, было бы что мерять!!!
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4542435#p4542435"]Даже в автомобилях - кнопки управления мультимедиа на руле..[/uquote]
Ну там не нужно их вместе давить. Почему бы и нет. В стиралке вон тоже - пока не залили водой с порошком работало лет 12 и потом еще сколько то после чистки.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Электрический кот
Аватара пользователя
Сообщения: 1006
Зарегистрирован: Ср окт 04, 2017 20:47:40

Сообщение valentinovich »

Имхо вопрос ТСом задан не совсем корректно, т.е. сильно общО.
И я, как неисправимый прагматик - пока не смогу понять для чего (какого процесса) сиё надо, вообще не вижу смысла обсуждения. Ну если только убить немножко врени, которое нечем другим полезным заполнить. :(
И пишу сейчас это только потому, что здесь это уже имеет какой уже системный характер. Ибо каждый отметившийся (пардон) "высасывает из пальца" себе задачу на заданную тему (одна кнопь, две кнопи, ... десять за раз. :) Причём где, для чего ХЗ) и пытается её как-то решить. Но ведь при каждом схемном варианте и поставленной задаче, решение тоже может быть своим, минимизируя (упрощая) сх. реализацию.
Друг Кота
Аватара пользователя
Сообщения: 44054
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

valentinovich писал(а):Имхо вопрос ТСом задан не совсем корректно, т.е. сильно общО.
И я, как неисправимый прагматик - пока не смогу понять для чего (какого процесса) сиё надо, вообще не вижу смысла обсуждения. Ну если только убить немножко врени, которое нечем другим полезным заполнить. :(
И пишу сейчас это только потому, что здесь это уже имеет какой уже системный характер. Ибо каждый отметившийся (пардон) "высасывает из пальца" себе задачу на заданную тему (одна кнопь, две кнопи, ... десять за раз. :) Причём где, для чего ХЗ) и пытается её как-то решить.
Ну, это нормально- при формулировании вопроса, постараться как можно меньше рассказать о сути проблемы.. :dont_know:
Ответить

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