Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

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

Пт сен 08, 2023 05:42:59

Доброго времени товарищи! Подскажите как реализовать в коде
Спаять несколько сопротивлений, на каждом сопротивлении напряжение будет меняться при нажатии кнопки
Как это правильно описывать в коде? через Switch case?
Далее нужно будет отслеживать нажатие "нужной" кнопки, а так же зафиксировать нажатие других кнопок.
Благодарю за ответы!

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

Пт сен 08, 2023 06:58:50

Есть куча информации в Инете по запросу "Ардуино аналоговая клавиатура" например Резистивная клавиатура на Arduino. Есть даже библиотека: AnalogKey.

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

Сб сен 09, 2023 02:25:59

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

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

Вс сен 10, 2023 14:12:16

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

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

Пн сен 11, 2023 21:27:59

Процесс поиска кнопки надо производить методом последовательного приближения. Это требует намного меньше if-ов чем простой перебор.
не надо. Ставите набор резисторов с соотношением номиналов между собой как в ЦАП (где ток формируется резисторной весовой матрицей), читаете результат с АЦП, и получаете состояния кнопок в виде битов считанного числа. Большой разрядности конечно не получить, но штуки 4-5 кнопок (а при удаче даже 6) должны нормально различаться. Резисторы - как минимум 1%-ные должны быть.

Добавлено after 5 minutes 39 seconds:
реальные резисторы имеют разброс до 5 %
Где вы такие берёте?? Давно уже во всех схемах используем как минимум 1%-ные. Не считая конечно всяких подтяжек, в которые можно ставить любой хлам. Но для сокращения номенклатуры, часто ставим такие же 1%-ные. Так как экономия ерундовая, а в случае перепутывания на производстве (что вполне вероятно), убытки будут значительно больше.

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

Пн сен 11, 2023 21:43:02

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

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

Пн сен 11, 2023 23:24:11

В данной задаче проценты не играют никакой роли, так как сопротивление контактов кнопки настолько нестабильно, что перекроет все разбросы по номиналу и температурные дрейфы.
Ну откуда Вы знаете? Может у ТС-а кнопки с золотыми контактами? Или жить девайс будет в безкислородной атмосфере, на Марсе к примеру? :wink:

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

Вт сен 12, 2023 00:33:03

тогда да, виновен, схема отличная )
Но я бы всё-равно поставил перед резисторами какую-нить 6 х триггеров Шмидта микросхемку, благо они и SMD есть. Стоимость копеечная, а можно будет кнопок навешать ого-го (ну, если ещё микросхемку добавить)

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

Чт сен 14, 2023 19:20:14

... Ставите набор резисторов с соотношением номиналов между собой как в ЦАП (где ток формируется резисторной весовой матрицей), читаете результат с АЦП, и получаете состояния кнопок в виде битов считанного числа. Большой разрядности конечно не получить, но штуки 4-5 кнопок (а при удаче даже 6) должны нормально различаться...
То есть - спаять ЦАП с кнопочным управлением. В принципе верно, если требуется отследить ОДНОВРЕМЕННОЕ нажатие нескольких кнопок. Если не вводить еще микр, то, как я понимаю, тут два варианта - Либо ДВА номинала (не количества !!!) резисторов и кнопки ТРЕХКОНТАКТНЫЕ. Либо ДВУХКОНТАКТНЫЕ кнопки и ХЗ какие номиналы резисторов. И при этом - точное равенство напряжения на матрице ЦАПа и референса на АЦП ардуины.

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

Чт сен 14, 2023 22:03:00

микросхемка-то подешевле будет таких кнопок...

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

Чт окт 12, 2023 07:19:46

В любом случае резистивную клавиатуру будет колбасить и плющить не по детски. Определять нажатие той или иной кнопки нужно не по конкретному значению сопротивления (напряжения), а по попаданию в некий диапазон значений, который заведомо шире чем возможное отклонение сопротивлений резисторов и контактов кнопок.

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

Пн фев 12, 2024 14:18:57

Далее нужно будет отслеживать нажатие "нужной" кнопки, а так же зафиксировать нажатие других кнопок.

Это как ? Пяток кнопок по одиночке так можно сделать, комбинации нажатий плохо работать будут.

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

Пн фев 12, 2024 14:50:37

Надо еще расчитать делитель чтоб при нажптии двух и более кнопок не срабатывал

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

Пн фев 12, 2024 15:06:40

Asmodey писал(а):В любом случае резистивную клавиатуру будет колбасить и плющить не по детски.

Вот только, именно этот вариант клавиатурок, сейчас используют всё чаще и чаще.. Даже в автомобилях - кнопки управления мультимедиа на руле..

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

Пн фев 12, 2024 15:26:00

Вот только, именно этот вариант клавиатурок, сейчас используют всё чаще и чаще..

Ну, что тут поделаешь? Прогресс... Сейчас многоканальный АЦП, а то и не один, в самом захудалом микроконтроллере. Еще бы кнопки нормальные научились делать :))

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

Пн фев 12, 2024 15:42:23

Так они умеют нормальные кнопки делать. Ты просто ненормальные покупаешь. Тебе же что подешевле. Есть и герметичеые и серебреные и золоченые

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

Пн фев 12, 2024 15:52:26

Конечно не покупаю, у меня еще советских мембранных целое ведро. Действительно посеребренные, и позолоченные, и с никелевым покрытием, а не как у амеров, китайцев и немцев - полмикрона якобы золота, остальное дерьмо. Сотня-другая нажатий и можешь забыть про золочение контактов. Они умеют некое подобие нормальных кнопок делать, как те дикари что самолет из соломы строили. Карго-культ в полный рост. Они, наверное, сами не знают уже зачем золото наносят на контакты, один хрен при такой милимизерной толщине его там все равно что нет.

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

Пт фев 16, 2024 23:38:21

Даже в автомобилях - кнопки управления мультимедиа на руле..

Ну там не нужно их вместе давить. Почему бы и нет. В стиралке вон тоже - пока не залили водой с порошком работало лет 12 и потом еще сколько то после чистки.

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

Сб фев 17, 2024 00:34:36

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

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

Сб фев 17, 2024 01:16:14

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

Ну, это нормально- при формулировании вопроса, постараться как можно меньше рассказать о сути проблемы.. :dont_know:
Ответить