1602 keypad shield и кнопки на нем

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Мужики добрый вечер. Подскажите, может я че-то где-то упускаю в данном шилде... Воткнул его в мегу, написал скетч - все работает как надо до тог момента, пока не начинаешь жать на кнопку довольно быстро (раза 3-5 в секунду)... Вывод в сериал показал, что при быстрых нажатиях считываемое значение с пина А0 (к которому, собственно, подключены кнопки) становится непостоянно и расколбас в пределах больше 200 запросто иногда... Как решить этот трабл? Это наводки какие-то или же сам шилд криво сделан?

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

Мужики добрый вечер. Подскажите, может я че-то где-то упускаю в данном шилде... Воткнул его в мегу, написал скетч - все работает как надо до тог момента, пока не начинаешь жать на кнопку довольно быстро (раза 3-5 в секунду)... Вывод в сериал показал, что при быстрых нажатиях считываемое значение с пина А0 (к которому, собственно, подключены кнопки) становится непостоянно и расколбас в пределах больше 200 запросто иногда... Как решить этот трабл? Это наводки какие-то или же сам шилд криво сделан?

а, у тебя кнопки на шилде с золотыми или платиновыми контактами?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

- Доктор! Когда я делаю так - мне больно!

- Не делайте так.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Andrey-S пишет:

 пока не начинаешь жать на кнопку довольно быстро (раза 3-5 в секунду)...

С какой целью?

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Клапауций 777 пишет:

а, у тебя кнопки на шилде с золотыми или платиновыми контактами?

Написано, что платина с добавлением золота и немного серебра.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Duino A.R. пишет:

Andrey-S пишет:

 пока не начинаешь жать на кнопку довольно быстро (раза 3-5 в секунду)...

С какой целью?

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

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Gippopotam пишет:

- Доктор! Когда я делаю так - мне больно!

- Не делайте так.

я страшно ненавижу жадных

жестоких тоже не люблю

и всех бы их перестреляла

да жалко денег на ружье

Кстати, код не выложил и фото шилда лишь потому, что все стандартно как бутерброд с маслом... Но уж если очень надо, то прям как тут http://geekelectronics.org/arduino/podklyuchenie-lcd-keypad-shield-k-arduino.html и питание также от юсб

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

Написано, что платина с добавлением золота и немного серебра.

обманули

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Andrey-S пишет:

Gippopotam пишет:

- Доктор! Когда я делаю так - мне больно!

- Не делайте так.

я страшно ненавижу жадных

жестоких тоже не люблю

и всех бы их перестреляла

да жалко денег на ружье

Кстати, код не выложил и фото шилда лишь потому, что все стандартно как бутерброд с маслом... Но уж если очень надо, то прям как тут http://geekelectronics.org/arduino/podklyuchenie-lcd-keypad-shield-k-arduino.html и питание также от юсб

А вы зря восприняли метафору, как шутку.

Тут люди вовсю с дребезгом борются, а вы его искусственно создаете.

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Gippopotam пишет:

Тут люди вовсю с дребезгом борются, а вы его искусственно создаете.

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

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Andrey-S пишет:

Снизил частоту нажатий до 2х раз в секунду - стало лучше, но проблема не ушла.

Сама проблема не уйдет. АЦП относительно нажатий кнопки работает асинхронно, УВХ (устройство выборки-хранения), фиксирующее входное напряжение на времия АЦ-преобразования, отсутствует. Борьбы с дребезгом тоже никакой нет. Поэтому АЦП честно фиксирует то ерунду, которая образуется на его входе.

В этом смысле подключение кнопок по цифровым входам я считаю на порядок предпочтительнее. При отладке схемы макета, приведенной в "Саге о кнопках", мой младший сын для доказательства своего превосходства перед "железкой" давил на кнопку чаще, чем программный таймер с периодом 0,5 с. На интервале в 99 нажатий он явно обгонял "машинку". И все срабатывало четко.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Gippopotam пишет:

А вы зря восприняли метафору, как шутку.

Тут люди вовсю с дребезгом борются, а вы его искусственно создаете.

Пардон, на счет дребезга: я в код из ссылочки сверху впихнул delay(150) опосля каждой кнопки, но написать забыл... Это ж вроде как-никак помогает от дребезга говорят). И еще один важный момент: так себя плохо ведет только одна кнопка, остальные раза в 3 реже колбасятся... Может резисторик делительный???

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

так себя плохо ведет только одна кнопка, остальные раза в 3 реже колбасятся... Может резисторик делительный???

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

если между, то кнопки-гавно.

если крайняя, то глюк аапаратно обусловлен.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Для примера: выставил на всякий пожарный делэй после каждого нажатия кнопки 250... Жму 1 раз в секунду 10 раз кнопку ВВЕРХ - получаю значения (99, 99, 99, 99, 99, 99, 102, 99, 133, 99)... Тобишь разброс в пределах нормы... Теперь тоже самое с проблемной кнопкой - значения (0, 0, 235, 0, 0, 247, 14, 96, 0, 708)... Явно, ка мне кажется, грешить остается на сам шилд...

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Клапауций 777 пишет:

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

если между, то кнопки-гавно.

если крайняя, то глюк аапаратно обусловлен.

Ну судя по видимому расположению, а также нормальному значению показаний при нажатии на нее (1023 - значение когда кнопки НЕ нажаты, 0 -когда проблемная кнопка нажата) она является крайней. Если Вас не затруднит, объясните пожалуйста чем глюк обусловлен? И есть ли простые способы избавления от него. Спасибо.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Andrey-S пишет:

Пардон, на счет дребезга: я в код из ссылочки сверху впихнул delay(150) опосля каждой кнопки, но написать забыл... Это ж вроде как-никак помогает от дребезга говорят). И еще один важный момент: так себя плохо ведет только одна кнопка, остальные раза в 3 реже колбасятся... Может резисторик делительный???

Вы просто считываете реже, а асинхронность считывания, как была, так и осталась. Интенсивность мусора на входе АЦП Вы создаете самостоятельно с деятельным участием дребезга. delay(150) на Вас не действует.

Andrey-S пишет:

И еще один важный момент: так себя плохо ведет только одна кнопка, остальные раза в 3 реже колбасятся... Может резисторик делительный???

Скорее всего, у нее механика контакта-пружинки слабее, чем у остальных, и дребезг там сильнее.

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

Если Вас не затруднит, объясните пожалуйста чем глюк обусловлен?

это предположение - напряжением на кнопке.

найди в гухле эл. схему своего шилда и посмотри, что как подключено.

избавиться - использовать цифровые пины контроллера.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

программно переключить аналаговый вход как цифровой еще никто не отменял

serega374
Offline
Зарегистрирован: 10.08.2015

Вопрос на засыпку я вроде бы не сомневаюсь но проверить и найти нигде не могу. Можно ли дисплей 1602 подключить к аналоговым входам Ардуино в 4 битном режиме? У меня плата про мини хочу задействовать А0-А5.

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

serega374 пишет:

Вопрос на засыпку я вроде бы не сомневаюсь но проверить и найти нигде не могу. Можно ли дисплей 1602 подключить к аналоговым входам Ардуино в 4 битном режиме? У меня плата про мини хочу задействовать А0-А5.

можно.

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Valera19701 пишет:

программно переключить аналаговый вход как цифровой еще никто не отменял

одна кнопка надёжней.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

если там через делитеь , то да :)

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Valera19701 пишет:

если там через делитеь , то да :)

там гирлянда кнопок на одном пине

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Andrey-S пишет:

Ну судя по видимому расположению, а также нормальному значению показаний при нажатии на нее (1023 - значение когда кнопки НЕ нажаты, 0 -когда проблемная кнопка нажата) она является крайней. Если Вас не затруднит, объясните пожалуйста чем глюк обусловлен? И есть ли простые способы избавления от него. Спасибо.

Из тех же соображений и схемы части шилда это кнопка RIGHT. Если редкие замыкания (раз в 1 с) тоже регулярно приводят к пляске показаний, то экземпляр кнопки с увеличенным дребезгом. Лечится заменой кнопки.

Но для любой механической кнопки манипуляция 10 раз в секунду - запредельная нагрузка на механику. Если Вам интересны не "натуриспытания" до полного убоя матчасти, а некий практический результат, то механику нужно менять на оптику и переходить с аналогового входа на дискретный. Или... давить реже и четче. :)

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

единственное что могу предложить, это посртавить кондер, емкостью 0.1 мкф с аналогового входа на землю

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Valera19701 пишет:

единственное что могу предложить, это посртавить кондер, емкостью 0.1 мкф с аналогового входа на землю

это будет весёлое включение всех кнопок по очереди при нажатии одной крайней

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

ну емкость можно и поменьше поставить, зависит от резисторов в делителе, и делей,

вроде больше нет решений , как избавиться от дребезга

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Valera19701 пишет:

ну емкость можно и поменьше поставить, зависит от резисторов в делителе, и делей

можно поставить ёмкость 0 мкФ

делей - зло

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Valera19701 пишет:

вроде больше нет решений , как избавиться от дребезга

есть, но нужно думать, а лень.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

то что делей зло, это да, тогда выборку через millis + оператор switch

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Duino A.R. пишет:

Из тех же соображений и схемы части шилда это кнопка RIGHT. Если редкие замыкания (раз в 1 с) тоже регулярно приводят к пляске показаний, то экземпляр кнопки с увеличенным дребезгом. Лечится заменой кнопки.

Но для любой механической кнопки манипуляция 10 раз в секунду - запредельная нагрузка на механику. Если Вам интересны не "натуриспытания" до полного убоя матчасти, а некий практический результат, то механику нужно менять на оптику и переходить с аналогового входа на дискретный. Или... давить реже и четче. :)

Я прогнал и уже исправил на "1 раз в секунду 10 нажатий". Спасибо, буду перепаивать кнопку и смотреть что получится.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Клапауций 777 пишет:

это предположение - напряжением на кнопке.

найди в гухле эл. схему своего шилда и посмотри, что как подключено.

избавиться - использовать цифровые пины контроллера.

Схему я мультиком проверил - точь-в-точь как из ссылке в посте #6 за исключением некоторых номиналов с небольшой погрешностью (но это косяк китайского мультика запросто может быть)

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
примерно так
void loop() {
    if (currentMillis - previousMillis > 50) {
      previousMillis = currentMillis;
  if (b5_sw > 140 && b5_sw < 180) {
    sw = 1;
  }
  else if (b5_sw > 300 && b5_sw < 340) {
    sw = 2;
  }
  else if (b5_sw > 460 && b5_sw < 500) {
    sw = 3;
  }
  else if (b5_sw > 640 && b5_sw < 680) {
    sw = 4;
  }
  else if (b5_sw > 810 && b5_sw < 850) {
    sw = 5;
  }
  else {
    sw = 0;
  }
switch (sw){
//здесь что делают кнопки
}

}

 

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Valera19701 пишет:

примерно так
void loop() {
    if (currentMillis - previousMillis > 50) {
      previousMillis = currentMillis;
  if (b5_sw > 140 && b5_sw < 180) {
    sw = 1;
  }
  else if (b5_sw > 300 && b5_sw < 340) {
    sw = 2;
  }
  else if (b5_sw > 460 && b5_sw < 500) {
    sw = 3;
  }
  else if (b5_sw > 640 && b5_sw < 680) {
    sw = 4;
  }
  else if (b5_sw > 810 && b5_sw < 850) {
    sw = 5;
  }
  else {
    sw = 0;
  }
switch (sw){
//здесь что делают кнопки
}

}

 

Нормальная схема.. Примерно такой же и пользуюсь на другом шилде, а на этом кнопка RIGHT срабатывает за остальных временами вместо себя)

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Наличие "делайной" или "безделайной" задержки, просто вставленной в цикле loop, на подавлении дребезга не сказывается. Для подавления дребезга нужно сначала зафиксировать факт нажатия хоть какой-нибудь кнопки, потом подождать время прекращения дребезга (не менее 20 - 50 мс), потом считывать устаканившееся значение и только потом прогонять его чере фильтр переходов.

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Duino A.R. пишет:
Для подавления дребезга нужно сначала зафиксировать факт нажатия хоть какой-нибудь кнопки

главное, что бы факт соответсвовал действительности

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Valera19701 пишет:

Нормальная схема.. Примерно такой же и пользуюсь на другом шилде, а на этом кнопка RIGHT срабатывает за остальных временами вместо себя)


Кроме повышенного дребезга еще может быть и нестабильное переходное сопротивление контактной группы. Это связано, и признаки на лицо. Замена кнопки.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Duino A.R. пишет:

Кроме повышенного дребезга еще может быть и нестабильное переходное сопротивление контактной группы. Это связано, и признаки на лицо. Замена кнопки.

Пошел за паяльной станцией)).. "В эфире ГАЛИЛЕО и рубрика ЭКСПЕРИМЕНТЫ!"

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

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

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Клапауций 777 пишет:

главное, что бы факт соответсвовал действительности


Безусловно. Для тактовых кнопок, если они не убиты в ноль, когда контактная группа там просто россыпью, самопроизвольное срабатывание на замыкание - очень маловероятно. Поэтому факт срабатывания кнопки отловить можно относительно просто по условию, что напряжение "немного" (больше шума АЦП) отошло от максимального. Это значит, что хоть что-то, да нажали.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Перепаял кнопку - из 20 нажатий всего одно "левое" значение вылезло... Ну китааааайцы... Шилд новый

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Duino A.R. пишет:
Безусловно. Для тактовых кнопок, если они не убиты в ноль, когда контактная группа там просто россыпью, самопроизвольное срабатывание на замыкание - очень маловероятно. Поэтому факт срабатывания кнопки отловить можно относительно просто по условию, что напряжение "немного" (больше шума АЦП) отошло от максимального. Это значит, что хоть что-то, да нажали.

я не знаю, как людям вразумительно объяснить, что кнопки на аналоговом входе аппаратно могут выглядеть только так, а не иначе - всё остальное ересь, а последователи ея подлежат сожжению на костре инквизиции Arduino.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Клапауций 777 пишет:

 

я не знаю, как людям вразумительно объяснить, что кнопки на аналоговом входе аппаратно могут выглядеть только так, а не иначе - всё остальное ересь, а последователи ея подлежат сожжению на костре инквизиции Arduino.

 

Ну это, так скажем, эталон кнопки - идельный вариант... Но имеют же право на существование и неидеальные варианты, добавляющие геморроя ее счастливому обладателю? Не всем же ездить на "бэнтли" - ладу куда-то девать-то надо)

 

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

Не всем же ездить на "бэнтли" - ладу куда-то девать-то надо)

да ладно? заменить кнопку резистором, нарисовать шкалу.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Клапауций 777 пишет:

да ладно? заменить кнопку резистором, нарисовать шкалу.

Я уже начинаю подумывать о переходе с этих кнопочек на что-то более надежное в своем проекте... Что скажете о надежности вот этой штуки по сравнению с глючной тактовой кнопкой изшилда: http://digitrode.ru/computing-devices/mcu_cpu/157-podklyuchaem-dzhoystik-k-arduino.html  В этом джосте тоже используются аналоги видать, но есть ли опыт в плане безглючности работы?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

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

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

Я уже начинаю подумывать о переходе с этих кнопочек на что-то более надежное в своем проекте... Что скажете о надежности вот этой штуки по сравнению с глючной тактовой кнопкой изшилда: http://digitrode.ru/computing-devices/mcu_cpu/157-podklyuchaem-dzhoystik-k-arduino.html  В этом джосте тоже используются аналоги видать, но есть ли опыт в плане безглючности работы?

механика хорошего джойстика стоит ~$100

хорошая тактовая кнопка стоит $1

выбирай

*и, определись - тебе джойстик нужен или кнопка?

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Клапауций 777 пишет:

механика хорошего джойстика стоит ~$100

хорошая тактовая кнопка стоит $1

выбирай

*и, определись - тебе джойстик нужен или кнопка?

При таком раскладе мне нужна именно кнопка... А можно ссылочку на образец "хорошей тактовой кнопки" ?

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Valera19701 пишет:

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

Спасибо! А то у меня один валяется до сих пор без дела... Походу дальше будет валяться

Клапауций 777
Offline
Зарегистрирован: 21.11.2015

Andrey-S пишет:

А можно ссылочку на образец "хорошей тактовой кнопки" ?

откуда ж я знаю, какой конструктив тебе нужен?

выбирай немецкого или японского производителя.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Клапауций 777 пишет:

откуда ж я знаю, какой конструктив тебе нужен?

выбирай немецкого или японского производителя.

Ну да. Производитель и ценовая категория. Но все равно, навешивание кнопок на аналоговый вход, на мой взгляд, имеет один единственный плюс - минимальный расход пинов при небольшом количестве кнопок. Всё остальное - одни минусы. Я в "Саге..." подробно все резоны расписал.

Andrey-S, уперся Вам именно этот шилд. Если нужен этот функционал, возьмите отдельно экранчик и нормальные кнопки (китайских, кстати, много нормальных тактовых, хоть и не 100%) и включите кнопки через дискретные входы, хоть напрямую, хоть через расширитель портов.

<em>Andrey-S</em> пишет:

Но имеют же право на существование и неидеальные варианты, добавляющие геморроя ее счастливому обладателю?

"Гемморой - не спорт, а болезнь. (С)" :))