Кнопки
- Войдите на сайт для отправки комментариев
Вс, 26/03/2017 - 03:15
Uno. Подключаю к аналоговым портам две кнопки по такой вот схеме. Далее стоит задача, на кнопку можно нажать только два раза - пишу код . Итог: если во время подачи питания на ардуино кнопка была нажата то она сразу же обрбатываеться, если же нажать на кнопку после того как было подано питание она не обрабатываеться. Как это исправить? Почему так получаеться?
int butn = 0; void setup() { Serial.begin(9600); //скорость порта } void loop() { while (butn < 2) { butn++; if (digitalRead(18) == HIGH) //если кнопка нажата ... { Serial.print("port5 door \n"); delay(500); } if (digitalRead(19) == HIGH) //если кнопка нажата ... { Serial.print("port6 door \n"); delay(500); } } }
класс титановый велосипед для тактовой кнопки.
http://arduino.ru/Reference/DigitalRead
в сетапе задать что порт вход
в 11 строке косяк
в сетапе задать что порт вход
это его не спасёт - он не понимает, что физически не сможет сделать нажатие равным по времени одному циклу луп.
а во время делея может успеть сделать с десяток нажатий, которые ему по каким-то принам делать нельзя.
ну почему если butn++; в правильные места расставит, то после нажатия у него будет пол секунды до повторного срабатывания
ну почему если butn++; в правильные места расставит, то после нажатия у него будет пол секунды до повторного срабатывания
полсекунды для сколько угодного количества нажатий.
*вдогонку:
Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не требуется явной декларации в функции pinMode().
пусть будет, зато в других МК надо,
если честно, то я не понимаю - он желает, что бы ничего не работало, пока не нажато два раза на кнопку или ему нельзя нажимать на кнопку более двух раз.
я так понял что если на какую-нибудь кнопку нажать 2 раза то при последующих нажатиях печать в сериал больше недолжна идти
и упустим что могут быть нажатия во время делей которые небудут обрабатываться
получаеться что пробелма в дребезге кнопки или в чем ?
получаеться что пробелма в дребезге кнопки или в чем ?
в дребезге в том числе, но.
допустим, у нас дребезга нет и ты переместил butn++; в место, которое будет выполняться при нажатии кнопки(снова непонятка: ты говоришь об одной кнопке, в коде у тебя две кнопки, на схеме одна.
но. не суть...
что ты желаешь получать до нажатия кнопок и после?
в варианте с циклом у тебя будет кирпич, ждущий двух нажатий кнопки(кнопок?) и пуляющий в сериал сообщения, что кнопка нажата и ничего более.
это так задумано - ничего не делать, пока два раза не нажмёшь кнопку(кнопки)?
проект "GSM сигнализация на гараж". Суть такова: есть ворота на гараже, две дверцы, на них стоят "кнопки" которые определяют открыта или закрыта дверь, если дверь открыта - кнопка зажата и мы звоним мне на телефон, но позвонить можно максимум только 2 раза..... Код который я представил это сугубо фрагмент кода, на самом деле он больше .. Ещё раз, кнопок 2 штуки, при нажатии они должны отработать звонок(вывести текст в нашем случае), вывести этот текст можно максимум 2 раза.. потом только перезагрузка МК ... Нормально я объяснил ?
что там не так я не могу понять, даже если и дребезг кнопки, она все равно должна хотя бы через раз срабатывать, но она не срабытывает.
Нормально я объяснил ?
ненормально.
двери из двух половинок? почему две кнопки?
ещё раз, кнопок 2 штуки, дверь одна, нажимается одна кнопка, посылается 2 сообщения.
здесь ты говоришь, что должно происходить, когда нажата 1 кнопка
кнопка зажата и мы звоним мне на телефон
здесь ты говоришь, что кнопок 2 и всё должно происходить, когда нажаты 2 кнопки
кнопок 2 штуки, при нажатии они должны
что там не так я не могу понять, даже если и дребезг кнопки, она все равно должна хотя бы через раз срабатывать, но она не срабытывает.
у тебя счётчик срабатывает вне условия, досчитывает до 2-х и ты выскакиваешь из цикла - т.е. сразу и всё, нет у тебя кнопок
butn++; удалить с 11 строки и поставить в 13 и 20 строки (за скобкой)
если это ворота, то зачем два выключателя? берется 2 или 100500 выключателей который в режиме охраны должны быть замкнуты
и включаются последовательно, тогда из 100500 выключателей получается одна замкнутая цепь которая будет рваться при размыкании 1 из 100500 выключателей, соответственно тогда нужен всего один порт на ардуине
берется 2 или 100500 выключателей который в режиме охраны должны быть замкнуты
более 2-х кнопок бессмысленно - замыкание 100500 кнопок нащёлкает счётчик первыми двумя замкнувшимися.
*кароче. зарекался сто раз не выносить себе мозг в попытках найти крупицу логики в алгоритмах ползателей кнопок.
Ребята, всем огромное спасибо, я понял с вашей помощью где у меня была ошибка. Всем успехов !!!