Доброго времени товарищи! Подскажите как реализовать в коде
Спаять несколько сопротивлений, на каждом сопротивлении напряжение будет меняться при нажатии кнопки
Как это правильно описывать в коде? через Switch case?
Далее нужно будет отслеживать нажатие "нужной" кнопки, а так же зафиксировать нажатие других кнопок.
Благодарю за ответы!
Самое главное - сначала спаять то что хотите. Потом провести тесты и записать значения сэмплов (семплы - абстрактные данные оцифровки), которое выдаст ADC для каждой кнопки. Потому что реальные резисторы имеют разброс до 5 %, разбросы могут суммироваться, вычитаться и тд. Потом между соседними сэмплами вычислить середины - границы допусков, и записать их в ваш скетч. А потом в коде проводить проверку - если сэмпл больше А, но меньше Б - то это кнопка "1". Если сэмпл больше Б, но меньше С - то это кнопка "Б" и тд. А уж чем вы будете Switch case-ом или if-ом - без разницы. Но Case обычно жрет больше памяти.
[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%-ные. Так как экономия ерундовая, а в случае перепутывания на производстве (что вполне вероятно), убытки будут значительно больше.
В данной задаче проценты не играют никакой роли, так как сопротивление контактов кнопки настолько нестабильно, что перекроет все разбросы по номиналу и температурные дрейфы. Подобное решение клавиатуры - худшее из возможных.
[uquote="Martian",url="/forum/viewtopic.php?p=4475895#p4475895"]В данной задаче проценты не играют никакой роли, так как сопротивление контактов кнопки настолько нестабильно, что перекроет все разбросы по номиналу и температурные дрейфы.[/uquote]Ну откуда Вы знаете? Может у ТС-а кнопки с золотыми контактами? Или жить девайс будет в безкислородной атмосфере, на Марсе к примеру?
тогда да, виновен, схема отличная )
Но я бы всё-равно поставил перед резисторами какую-нить 6 х триггеров Шмидта микросхемку, благо они и SMD есть. Стоимость копеечная, а можно будет кнопок навешать ого-го (ну, если ещё микросхемку добавить)
[uquote="jcxz",url="/forum/viewtopic.php?p=4475889#p4475889"]... Ставите набор резисторов с соотношением номиналов между собой как в ЦАП (где ток формируется резисторной весовой матрицей), читаете результат с АЦП, и получаете состояния кнопок в виде битов считанного числа. Большой разрядности конечно не получить, но штуки 4-5 кнопок (а при удаче даже 6) должны нормально различаться...[/uquote]То есть - спаять ЦАП с кнопочным управлением. В принципе верно, если требуется отследить ОДНОВРЕМЕННОЕ нажатие нескольких кнопок. Если не вводить еще микр, то, как я понимаю, тут два варианта - Либо ДВА номинала (не количества !!!) резисторов и кнопки ТРЕХКОНТАКТНЫЕ. Либо ДВУХКОНТАКТНЫЕ кнопки и ХЗ какие номиналы резисторов. И при этом - точное равенство напряжения на матрице ЦАПа и референса на АЦП ардуины.
В любом случае резистивную клавиатуру будет колбасить и плющить не по детски. Определять нажатие той или иной кнопки нужно не по конкретному значению сопротивления (напряжения), а по попаданию в некий диапазон значений, который заведомо шире чем возможное отклонение сопротивлений резисторов и контактов кнопок.
[uquote="rss-999",url="/forum/viewtopic.php?p=4474352#p4474352"]Далее нужно будет отслеживать нажатие "нужной" кнопки, а так же зафиксировать нажатие других кнопок.[/uquote]
Это как ? Пяток кнопок по одиночке так можно сделать, комбинации нажатий плохо работать будут.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4542435#p4542435"]Вот только, именно этот вариант клавиатурок, сейчас используют всё чаще и чаще..[/uquote]
Ну, что тут поделаешь? Прогресс... Сейчас многоканальный АЦП, а то и не один, в самом захудалом микроконтроллере. Еще бы кнопки нормальные научились делать
Конечно не покупаю, у меня еще советских мембранных целое ведро. Действительно посеребренные, и позолоченные, и с никелевым покрытием, а не как у амеров, китайцев и немцев - полмикрона якобы золота, остальное дерьмо. Сотня-другая нажатий и можешь забыть про золочение контактов. Они умеют некое подобие нормальных кнопок делать, как те дикари что самолет из соломы строили. Карго-культ в полный рост. Они, наверное, сами не знают уже зачем золото наносят на контакты, один хрен при такой милимизерной толщине его там все равно что нет.
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4542435#p4542435"]Даже в автомобилях - кнопки управления мультимедиа на руле..[/uquote]
Ну там не нужно их вместе давить. Почему бы и нет. В стиралке вон тоже - пока не залили водой с порошком работало лет 12 и потом еще сколько то после чистки.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Имхо вопрос ТСом задан не совсем корректно, т.е. сильно общО.
И я, как неисправимый прагматик - пока не смогу понять для чего (какого процесса) сиё надо, вообще не вижу смысла обсуждения. Ну если только убить немножко врени, которое нечем другим полезным заполнить.
И пишу сейчас это только потому, что здесь это уже имеет какой уже системный характер. Ибо каждый отметившийся (пардон) "высасывает из пальца" себе задачу на заданную тему (одна кнопь, две кнопи, ... десять за раз. Причём где, для чего ХЗ) и пытается её как-то решить. Но ведь при каждом схемном варианте и поставленной задаче, решение тоже может быть своим, минимизируя (упрощая) сх. реализацию.
valentinovich писал(а):Имхо вопрос ТСом задан не совсем корректно, т.е. сильно общО.
И я, как неисправимый прагматик - пока не смогу понять для чего (какого процесса) сиё надо, вообще не вижу смысла обсуждения. Ну если только убить немножко врени, которое нечем другим полезным заполнить.
И пишу сейчас это только потому, что здесь это уже имеет какой уже системный характер. Ибо каждый отметившийся (пардон) "высасывает из пальца" себе задачу на заданную тему (одна кнопь, две кнопи, ... десять за раз. Причём где, для чего ХЗ) и пытается её как-то решить.
Ну, это нормально- при формулировании вопроса, постараться как можно меньше рассказать о сути проблемы..