прервать цикл и начать сначала
- Войдите на сайт для отправки комментариев
Ср, 14/11/2018 - 12:42
Добрый день!
С ардуино знаком плохо, но очень нужно реализовать следеющее:
Есть кнопка и диод.
При замыкании кнопки, диод включается на 4 секунды и выключается. Цикл остановился, кнопка замкнута, диод не горит. Ждем размыкания кнопки.
При размыкании кнопки происходит тоже самое- диод включается на 4 секунды и отключается. Цикл остановился, кнопка разомкнута, диод не горит. Ждем замыкания кнопки.
С ардуино знаком плохо, но очень нужно реализовать следеющее:
В добрый путь! Реализуй.
С ардуино знаком плохо, но очень нужно реализовать следеющее:
В добрый путь! Реализуй.
Хоть намекните.
Есть цикл void loop() и if else. Если кнопка нажата, включаем диод на 4 секунды и выключаем.Но цикл повторяется, проверяет, что кнопка всё еще нажата и снова включает диод на 4 секунды (что в итоге выглядит как постоянное свечение диода). Как его остановить, до размыкания кнопки??
ищите библиотеку титановый велосипед для тактовой кнопки. Её написал наидобрейший человек. Там генерируются события и нажатия и отпускания и много чего ещё.
флаг вам в руки, причём я серьезно .
Добрый день!
С ардуино знаком плохо, но очень нужно реализовать следеющее:
Есть кнопка и диод.
При замыкании кнопки, диод включается на 4 секунды и выключается. Цикл остановился, кнопка замкнута, диод не горит. Ждем размыкания кнопки.
При размыкании кнопки происходит тоже самое- диод включается на 4 секунды и отключается. Цикл остановился, кнопка разомкнута, диод не горит. Ждем замыкания кнопки.
Вам пока не с Arduino нужно возиться, а программирование подучить.
Добрый день!
С ардуино знаком плохо, но очень нужно реализовать следеющее:
Есть кнопка и диод.
При замыкании кнопки, диод включается на 4 секунды и выключается. Цикл остановился, кнопка замкнута, диод не горит. Ждем размыкания кнопки.
При размыкании кнопки происходит тоже самое- диод включается на 4 секунды и отключается. Цикл остановился, кнопка разомкнута, диод не горит. Ждем замыкания кнопки.
Вам пока не с Arduino нужно возиться, а программирование подучить.
Мне нужно реализовать и больше к программированию не возвращаться, так как вряд ли когда-нибудь пригодится.
здесь не делают курсовики бесплатно. здесь помогают разбираться. пока - разбираться не в чем.
Мне нужно реализовать и больше к программированию не возвращаться, так как вряд ли когда-нибудь пригодится.
Тогда самый дешевый вариант - заказать работу в разделе Ищу исполнителя.
Тогда расходимся. Общение с вами тоже никогда не пригодится.
Мне нужно реализовать
А, как ты думаешь. есть ещё кто-то, кроме тебя, кому нужно, чтобы у тебя это было реализовано? Ты ведь именно такого человека здесь ищешь, который реализует за тебя, правильно? Боюсь тебя огорчить, но никому, кроме тебя, это не нужно.
Так что: нужно - реализуй. Не можешь - закажи за деньги.
Мне нужно реализовать
А, как ты думаешь. есть ещё кто-то, кроме тебя, кому нужно, чтобы у тебя это было реализовано? Ты ведь именно такого человека здесь ищешь, который реализует за тебя, правильно? Боюсь тебя огорчить, но никому, кроме тебя, это не нужно.
Так что: нужно - реализуй. Не можешь - закажи за деньги.
Умник? Видали таких. Да вот только я не ищу кого-то, кому это было бы нужно и уж тем более того, кто сделает это за меня. Тут люди помощи ищут, не так ли? Вот и я написал, что мне нужно, что я использую и какая проблема и только один человек сказал в какую сторону смотреть.
Представьте что бы было, если бы тут все только помощи искали. Отвечать было бы не кому, все бы только спрашивали.
Полазив в инете в поиске простого решения, кое что нашел и написал вот такое:
const int PIN_BUTTON = 10; // номер входа, подключенный к кнопке const int ledPin = 3; // номер выхода светодиода bool button_state = false; void setup() { //Serial.begin(115200); //Serial.println("Test button ..."); pinMode(PIN_BUTTON, INPUT); pinMode(ledPin, OUTPUT); } void loop(){ // Фиксируем нажатие кнопки if( digitalRead(PIN_BUTTON) == HIGH && !button_state ){ button_state = true; //Serial.println("Press key"); digitalWrite(ledPin, HIGH); delay(4000); digitalWrite(ledPin, LOW); } // Фиксируем отпускание кнопки if( digitalRead(PIN_BUTTON) == LOW && button_state ){ button_state = false; digitalWrite(ledPin, HIGH); delay(4000); digitalWrite(ledPin, LOW); } }Вроде как питание подается на 4 секунды при нажатии и размыкании кнопки, НО похоже, что идет дикая наводка. Т.е. отжал кнопку, питание появилось на 4 секунды и пропало, но даже рукой повожу возле платы и снова подается питание (руку убрал, питание снова пропало).
P.S. На руку не грешите, если рядом включаю блок питания, реакция такая же)
pinMode(PIN_BUTTON, INPUT_PULLUP);
pinMode(PIN_BUTTON, INPUT_PULLUP);
Если пишу INUP_PULLUP, то перестает подоваться питание при ОТжатии кнопки на нужные 4 секунды, на ПИНе тишина.
При INPUT_PULLUP нажатие кнопки вызывает состояние LOW на пине, а отжатие - HIGH. Но с задержками на delay()-ах нормальной работы не ждите.
ищите библиотеку титановый велосипед для тактовой кнопки. Её написал наидобрейший человек. Там генерируются события и нажатия и отпускания и много чего ещё.
почему бы не последовать совету, а? Нет ведь будем топик на 100 страниц разводить
#include <Button.h> #define BUTTON 0 // программный номер кнопки Button test; void setup() { pinMode (13, OUTPUT); digitalWrite (13, 0); //настройки кнопки test.NO(); // N.O. Normal Open button test.pullUp(); // подтяжка к питанию test.duration_bounce ( 50); // время антидребезга test.duration_click_Db ( 250); // время дабл клика test.duration_inactivity_Up(4000); // время в течение которого горит светодиод после отпускания test.duration_inactivity_Dn(4000); // время в течение которого горит светодиод после нажатия test.duration_press ( 500); // время лонг клика test.button(2); // пин ардуино, куда подключена кнопка, программный номер у неё будет 0 // остальные кнопки при наличии пишутся через запятую } void loop() { test.read(); if (test.event_click_Up (BUTTON) == 1) {digitalWrite (13,1);} // отпустили - включаем if (test.event_click_Dn (BUTTON) == 1) {digitalWrite (13,1);} // нажали - включаем // если таймеры неактивности кончились - выключаем if (test.event_inactivity_Up(BUTTON) == 1) {digitalWrite (13,0);} if (test.event_inactivity_Dn(BUTTON) == 1) {digitalWrite (13,0);} }ищите библиотеку титановый велосипед для тактовой кнопки. Её написал наидобрейший человек. Там генерируются события и нажатия и отпускания и много чего ещё.
почему бы не последовать совету, а? Нет ведь будем топик на 100 страниц разводить
#include <Button.h> #define BUTTON 0 // программный номер кнопки Button test; void setup() { pinMode (13, OUTPUT); digitalWrite (13, 0); //настройки кнопки test.NO(); // N.O. Normal Open button test.pullUp(); // подтяжка к питанию test.duration_bounce ( 50); // время антидребезга test.duration_click_Db ( 250); // время дабл клика test.duration_inactivity_Up(4000); // время в течение которого горит светодиод после отпускания test.duration_inactivity_Dn(4000); // время в течение которого горит светодиод после нажатия test.duration_press ( 500); // время лонг клика test.button(2); // пин ардуино, куда подключена кнопка, программный номер у неё будет 0 // остальные кнопки при наличии пишутся через запятую } void loop() { test.read(); if (test.event_click_Up (BUTTON) == 1) {digitalWrite (13,1);} // отпустили - включаем if (test.event_click_Dn (BUTTON) == 1) {digitalWrite (13,1);} // нажали - включаем // если таймеры неактивности кончились - выключаем if (test.event_inactivity_Up(BUTTON) == 1) {digitalWrite (13,0);} if (test.event_inactivity_Dn(BUTTON) == 1) {digitalWrite (13,0);} }А где взять Button.h ? Код из первого поста засунуть в библиотеку? Но как это сделать?
тс ты че прикалываешься? вел. код я тебе написал. куда ты там чо вставлять собралсо?
#18
const int PIN_BUTTON = 10; // номер входа, подключенный к кнопке const int ledPin = 3; // номер выхода светодиода bool button_state = 1; void setup() { //Serial.begin(115200); //Serial.println("Test button ..."); pinMode(PIN_BUTTON, INPUT_PULLUP); pinMode(ledPin, OUTPUT); } void loop(){ // Фиксируем нажатие кнопки if( digitalRead(PIN_BUTTON) == !button_state ){ button_state = !button_state; digitalWrite(ledPin, HIGH); delay(4000); digitalWrite(ledPin, LOW); } }тс ты че прикалываешься? вел. код я тебе написал. куда ты там чо вставлять собралсо?
Разобрался! Заработало!)
Благодарю!
const int PIN_BUTTON = 10; // номер входа, подключенный к кнопке const int ledPin = 3; // номер выхода светодиода bool button_state = 1; void setup() { //Serial.begin(115200); //Serial.println("Test button ..."); pinMode(PIN_BUTTON, INPUT_PULLUP); pinMode(ledPin, OUTPUT); } void loop(){ // Фиксируем нажатие кнопки if( digitalRead(PIN_BUTTON) == !button_state ){ button_state = !button_state; digitalWrite(ledPin, HIGH); delay(4000); digitalWrite(ledPin, LOW); } }Рабочий вариант, но наводки иногда проскакивают, просто прикоснувшись к кнопке.
Это не наводки, а дребезг контактов, скорее всго. Кнопка разболтанная или контакт плохой. Наводки - это когда за пин трогаешь и он начинает другое значение давать.
Это не наводки, а дребезг контактов, скорее всго. Кнопка разболтанная или контакт плохой. Наводки - это когда за пин трогаешь и он начинает другое значение давать.
Тут именно наводки, так как "когда за пин трогаешь и он начинает другое значение давать" ))
не надо за пин себя трогать! Онищенко запретил.
Про пин он ничо не говорил. Нельзя, говорил, трогать себя за joystick, особенно по малалецтву. А то шерсть на руках...
Интересно, как он ЭТО на защите работы будет объяснять :)
Интересно, как он ЭТО на защите работы будет объяснять :)
Про шерсть на ладошках? :))