Кнопки к аналоговому входу А7 (нано)

ewas
Offline
Зарегистрирован: 26.09.2016

Был в теме про кнопки, от туда выгнали сюда, хотя там вопросы и ответы не только про кнопки, ну да ладно, попробуем здесь. В той теме про кнопки мне несколько раз тыкали что про аналоговый вход и кнопки там всё прописано (но видно старость не радость как говорится) я то что нужно не нашёл. Для управления реле одной кнопкой нужен такой код чтобы при нажатии реле вкл., а при повторном- откл. В наличии есть только А6 и А7 пины на Arduino NANO, все цифровые заняты. Возможно в принципе подключить кнопки к таким пинам?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

резистором 10КОм к плюсу подтянуть

1if (analogRead(A6) < 500) {
2 // кнопка нажата
3}

 

PRC
Offline
Зарегистрирован: 03.02.2019

Для одной кнопки аналоговый вход не нужен))

ewas
Offline
Зарегистрирован: 26.09.2016

#

kalapanga
Offline
Зарегистрирован: 23.10.2016

Флаг неправильно обрабатываете. Вот Вы в 24 строке флаг подняли и тут же в 28 строке его сбросили. Конечно от него никакого толку.

 

ewas
Offline
Зарегистрирован: 26.09.2016

#

bwn
Offline
Зарегистрирован: 25.08.2014

ewas пишет:

Был в теме про кнопки, от туда выгнали сюда, хотя там вопросы и ответы не только про кнопки, ну да ладно, попробуем здесь. В той теме про кнопки мне несколько раз тыкали что про аналоговый вход и кнопки там всё прописано (но видно старость не радость как говорится) я то что нужно не нашёл. Для управления реле одной кнопкой нужен такой код чтобы при нажатии реле вкл., а при повторном- откл. В наличии есть только А6 и А7 пины на Arduino NANO, все цифровые заняты. Возможно в принципе подключить кнопки к таким пинам?

Вы можете доказать, что про аналоговые кнопки там написано не все? Попробуйте.
Там нет вашего случая, но к кнопке это уже не относится. В тот момент, когда вы зафиксировали ее четкое значение, работа с кнопкой закончена, а начинается работа с этим значением. Именно поэтому та тема и закрыта, т.к. приходящие, подобно вам не понимают разницы, а действуют по принципу, если на чем то есть кнопка и что то не ладится, надо писать в тему про кнопки.
По делу - заведите еще одну переменную, oldButton и приравнивайте ее значение вновь полученному когда они различаются, и тогда же производите все нужные действия. Пока они равны, не делаете ничего. ИМХО.

P/S Как то так:

 

ewas
Offline
Зарегистрирован: 26.09.2016

kalapanga пишет:
Флаг неправильно обрабатываете. Вот Вы в 24 строке флаг подняли и тут же в 28 строке его сбросили. Конечно от него никакого толку.

Спасибо за подсказку,и всё же не работает, когда кнопка не нажата сериал монитор нет ни чего и это хорошо, но когда нажимаешь 1, то пока нажата эта кнопка в сериал мониторе бежит 1, если 2 то двойка и это плохо.нужно чтобы это определилось только один раз. Нажал на 1 и отобразилась 1 один раз и всё

kalapanga
Offline
Зарегистрирован: 23.10.2016

ewas пишет:

kalapanga пишет:
Флаг неправильно обрабатываете. Вот Вы в 24 строке флаг подняли и тут же в 28 строке его сбросили. Конечно от него никакого толку.

Спасибо за подсказку,и всё же не работает, когда кнопка не нажата сериал монитор нет ни чего и это хорошо, но когда нажимаешь 1, то пока нажата эта кнопка в сериал мониторе бежит 1, если 2 то двойка и это плохо.нужно чтобы это определилось только один раз. Нажал на 1 и отобразилась 1 один раз и всё

Приводите актуальный, реальный код, о котором речь.

strarbit
Offline
Зарегистрирован: 12.06.2016
ewas
Offline
Зарегистрирован: 26.09.2016


Схема ни чего не меняет, в самом коде проблемы

bwn
Offline
Зарегистрирован: 25.08.2014

ewas пишет:
Схема ни чего не меняет, в самом коде проблемы

Ведь написал как сделать, в чем проблема?

strarbit
Offline
Зарегистрирован: 12.06.2016

Смотрите, ответ #6 на этот вопрос. from bwn 

ewas
Offline
Зарегистрирован: 26.09.2016

#

strarbit
Offline
Зарегистрирован: 12.06.2016
kalapanga
Offline
Зарегистрирован: 23.10.2016

ewas, что написано, то программа и делает. В цикле loop в 16-й строке скетча черным по белому написано - Если кнопка нажата, то вывести код кнопки в сериал. Т.е. выводимая в сериал информация связана исключительно с состоянием кнопки. Если я правильно угадываю Ваши хотелки, то Вам надо вывод в сериал осуществлять после строк 23 и 35. И там выводить состояние соответствующих пинов. Тогда Вы будете получать сообщения именно о том, что такой-то пин включился или выключился.

ewas
Offline
Зарегистрирован: 26.09.2016

В том и дело что и напр. 23 строке "1" появляется с частотой исполнения кода и всё идёт по циклу, и если публиковать состояние в MQTT сервер, то это не работает, вернее криво работает, и dely тут не помощник.

//--- button 1 ---------

if (key==1 &&flag1==0)
{
digitalWrite(2,!digitalRead(2));
flag1=1;
client.publish("Relay_1","1");
}
if (key==0 &&flag1==1)
{
flag1=0;
client.publish("Relay_1","0");
}

kalapanga
Offline
Зарегистрирован: 23.10.2016

ewas пишет:
В том и дело что и напр. 23 строке "1" появляется с частотой исполнения кода и всё идёт по циклу, и если публиковать состояние в MQTT сервер, то это не работает, вернее криво работает, и dely тут не помощник.

Не верю. Или Вы хотите сказать, что у Вас и реле на втором пине трещит как сумасшедшее? Ведь нет?

ewas
Offline
Зарегистрирован: 26.09.2016

#

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня вот вопрос: почему вы сразу за MQTT беретесь, если у вас даже с копками и светодиодами проблема?

ewas
Offline
Зарегистрирован: 26.09.2016

вот тут уменьшенный код на 2 реле (должно быть 16), и так же без опции вкл.все реле, откл. все реле

 

b707
Offline
Зарегистрирован: 26.05.2017

ewas пишет:
вот тут уменьшенный код на 2 реле (должно быть 16), и так же без опции вкл.все реле, откл. все реле

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

bwn
Offline
Зарегистрирован: 25.08.2014

b707 пишет:

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

Не, мыши плакали, кололись, но продолжали жрать кактус.))))

ewas
Offline
Зарегистрирован: 26.09.2016

#

sadman41
Offline
Зарегистрирован: 19.10.2016

ewas, ответьте себе на два вопроса:

1) Как "на уровне" analogRead() определить, что нажата кнопка #3?
2) -"-"-"- отпущена кнопка #3?

bwn
Offline
Зарегистрирован: 25.08.2014

sadman41 пишет:

ewas, ответьте себе на два вопроса:

1) Как "на уровне" analogRead() определить, что нажата кнопка #3?
2) -"-"-"- отпущена кнопка #3?

Ему, добрая девочка Роза, уже и ссылку нагуглила, но нет, будем свои флаги поглаживать.))))

ewas
Offline
Зарегистрирован: 26.09.2016

#

sadman41
Offline
Зарегистрирован: 19.10.2016

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

ewas
Offline
Зарегистрирован: 26.09.2016

sadman41 пишет:

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

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

bwn
Offline
Зарегистрирован: 25.08.2014

ewas пишет:

Ну что делать, если вы услышать не желаете. Алгоритм "как", я вам дал еще в #6, добрая strarbit, нагуглила вам ссылку, в которой есть функция нажатия пяти аналоговых кнопок. Вы хоть попробовали? Или не сумели понять и решили, что все казлы?
Для 16 кнопок на аналоговом входе, предупреждаю сразу, придется поискать кнопки, обычный ширпотреб сильно шумит. Кстати, в ветке "Проекты" программку запостили, считать такие делители.
Вам дали удочку, наживку, речку показали, чего еще не хватает?

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear Sir, bwn, Thank you!
Have a nice day! Good Luck!

ewas
Offline
Зарегистрирован: 26.09.2016

"добрая strarbit, нагуглила вам ссылку, в которой есть функция нажатия пяти аналоговых кнопок. Вы хоть попробовали? "

 

там стандартная "коробочная" версия аналоговой клавиры нажал на например "1" и побежали 111111111111111111111111111111111111...,

отпустил 000000000000000000000000000000000....,

нажал на "2" - 2222222222222222222222222.....

Может быть не там ищу решения, можно клавиатуру по I2C но она не работает на А6 и А7 пинах, основной код надо как-то переделать, что бы он не публиковал состояние с разу.

sadman41
Offline
Зарегистрирован: 19.10.2016

Если бы не вставали в позу кактуса и ответили, чем отличается состояние аналоговых входов в положении "кнопка нажата" и "кнопка не нажата" , то, скорее всего, уже бы не искали никаких I2C на A6/A7.

strarbit
Offline
Зарегистрирован: 12.06.2016

I2C A6/A7 нет. вход ADC аналог.

strarbit
Offline
Зарегистрирован: 12.06.2016

sadman41 пишет:

...

чем отличается состояние аналоговых входов в положении "кнопка нажата" и "кнопка не нажата" , то, скорее всего, уже бы не искали никаких I2C на A6/A7.


значение разное  от ADC.

sadman41
Offline
Зарегистрирован: 19.10.2016

strarbit пишет:

значение разное  от ADC.

К топикстартеру понимание физического процесса должно придти. Иначе не решить ему задачи этой...

b707
Offline
Зарегистрирован: 26.05.2017

ewas пишет:

там стандартная "коробочная" версия аналоговой клавиры нажал на например "1" и побежали 111111111111111111111111111111111111...,

отпустил 000000000000000000000000000000000....,

Вы совсем идиот, что ли? Вам же выше дали пример с флагами , и который у вас успешно работал, давая одно значение на нажатие и одно на отпускание.  Более того, принцип избавления от "1111111" вообще не зависит от типа клавиатуры - аналоговая, цифровая. на I2c... да на чем угодно! И обсосан в инете сотни, тысячи раз! да и нафига тут вообще искать какие-то примеры для такой элементарной задачки? Главная идея - ловите изменение состояния, а не само состояние! Если было 0, а стало 1 - посылаете в порт "1" ТОЛЬКО ОДИН РАЗ. ИЕсли было 1, а стало 0 - шлете в порт "0". А пока у вас читается с кнопки "1111111" или "000000" - ничего не шлете. ВОТ И ВСЕ!

Что тут можно обсуждать на протяжении десятков страниц? Если вы этого не понимаете - забросьте ардуину, это не ваше.

b707
Offline
Зарегистрирован: 26.05.2017

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

ewas
Offline
Зарегистрирован: 26.09.2016

Да не понимаю, потому и обратился сюда. Задача оказалась не простая, что ловить и куда послать, и так понятно а как код нарисовать. Я не знаю и простите если это посчитали за тролинг.
И успехов вам.

b707
Offline
Зарегистрирован: 26.05.2017

ewas пишет:
Да не понимаю, потому и обратился сюда. Задача оказалась не простая, что ловить и куда послать, и так понятно а как код нарисовать. .

Блин, ну что непонятного в том, что вам обьяснили выше? Прочитали значение с аналогового входа, определили по диапазону нажату кнопку, сравнили с результатом предыдущего чтения. Если такое же - ничего не делаем. если изменилось - выводим в Сериал. ВСЕ!!!!!!!

Вот вам для четырех кнопок на аналоговом входе А7 без учета дребезга (код не компилировал, могут быть незначительные опечатки)

 

01byte butt;
02byte prev_butt;
03int x = analogRead(A7);
04 
05if (x < 256) butt = 1;
06else if (x < 512) butt =2;
07else if (x < 768) butt =3;
08else  butt = 4;
09 
10if (butt != prev_butt) {  // если состояние кнопок изменилось
11Serial.print(butt);       // печатаем номер нажатой кнопки ОДИН РАЗ
12prev_butt = butt;       // запоминаем новое состояние
13}

 

bwn
Offline
Зарегистрирован: 25.08.2014

ewas пишет:

там стандартная "коробочная" версия аналоговой клавиры нажал на например "1" и побежали 111111111111111111111111111111111111...,

А взять "коробочную" и используя ее в качестве "key()", приделать к тому, что в #6? Не?

P/S Для дребезга, еще добавить три строчки и одну переменную.

sadman41
Offline
Зарегистрирован: 19.10.2016

Я смотрю - тут принудительное лечение началось. Этак и до карательного обучения программированию дойдёт...

bwn
Offline
Зарегистрирован: 25.08.2014

Ну так очередной - "не форум, а тролльчатник". Достали пля. Башку включить не могут, а виноваты в этом все.((((

bwn
Offline
Зарегистрирован: 25.08.2014

strarbit пишет:

Dear Sir, bwn, Thank you!
Have a nice day! Good Luck!

))))))). В гости, померзнуть, приезжайте. От меня 30 минут до Петербурга.))))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

От меня до Петербурга 4000 км, но померзнуть тоже можно. Вот прям щас и можно

vvadim
Offline
Зарегистрирован: 23.05.2012

блин, в снежки играть можно.
а у нас всё растаяло......

bwn
Offline
Зарегистрирован: 25.08.2014

У нас почти лето, днем +12-14, ночью положительная. Хотел вчера батрака нанять, а телефоны молчят, не прилетели еще.((((

strarbit
Offline
Зарегистрирован: 12.06.2016

bwn пишет:

strarbit пишет:

Dear Sir, bwn, Thank you!
Have a nice day! Good Luck!

))))))). В гости, померзнуть, приезжайте. От меня 30 минут до Петербурга.))))

Уважаемый господин bwn, Большое Спасибо/\ Извините, поздний ответ от меня.
Хорошее настроение  для Вас! Удачи! Я не могу кушать интернациональная кухня. Господин, пожалуйста, приезжайте к нам праздновать Songkran новый год. Я люблю новый год. Пожалуйста, приезжайте в наш маленький рай в мире.  Господин bwn удачи для Вас!
С наилучшими пожеланиями и Уважение искреннее.  
 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

strarbit пишет:

bwn пишет:

strarbit пишет:

Dear Sir, bwn, Thank you!
Have a nice day! Good Luck!

))))))). В гости, померзнуть, приезжайте. От меня 30 минут до Петербурга.))))

Уважаемый господин bwn, Большое Спасибо/\ Извините, поздний ответ от меня.
Хорошее настроение  для Вас! Удачи! Я не могу кушать интернациональная кухня. Господин, пожалуйста, приезжайте к нам праздновать Songkran новый год. Я люблю новый год. Пожалуйста, приезжайте в наш маленький рай в мире.  Господин bwn удачи для Вас!
С наилучшими пожеланиями и Уважение искреннее.  

так вот кто оказывается господин )))
 

bwn
Offline
Зарегистрирован: 25.08.2014

strarbit пишет:

Спасибо. Я пока невыездной. Хороших Вам праздников.)))))

Green
Offline
Зарегистрирован: 01.10.2015

bwn пишет:

strarbit пишет:

Dear Sir, bwn, Thank you!
Have a nice day! Good Luck!

))))))). В гости, померзнуть, приезжайте. От меня 30 минут до Петербурга.))))

Из серии "приезжайте к нам на Колыму").