переключение режимов 1 кнопкой
- Войдите на сайт для отправки комментариев
Втр, 10/10/2017 - 09:55
Здравствуйте, пытаюсь добавить режимы к данному коду идея простая 4 режима и на каждом свое время включение реле, режимы переключаются кнопкой1 без фиксации 4 светодиода индикаторы. На первом режиме горит светодиод1 при нажатии кнопки2 без фиксации включается реле на 3 сек во втором режиме горят светодиод1,2 и реле работает 5 сек. Пытался найти примеры но запутываюсь в защите от дребезга кнопок с ардуино еще знаком поверхностно прошу строго не судить
bool _gen1I = 0; bool _gen1O = 0; unsigned long _gen1P = 0UL; bool _kp1 = 0; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; bool _ktim1 = 0; bool _bounseInput2S = 0; bool _bounseInput2O = 0; unsigned long _bounseInput2P = 0UL; int R = 3; void setup() { pinMode(R, OUTPUT); pinMode(2, INPUT); digitalWrite(2, HIGH); pinMode(13, OUTPUT); _bounseInput2O = digitalRead(2); } void loop() { digitalWrite(R, HIGH); bool _bounceTmp2 = (digitalRead (2)); if (_bounseInput2S) { if (millis() >= (_bounseInput2P + 40)) { _bounseInput2O= _bounceTmp2; _bounseInput2S=0; } } else { if (_bounceTmp2 != _bounseInput2O ) { _bounseInput2S=1; _bounseInput2P = millis(); } } if((!_bounseInput2O)&& (!(_ktim1))){ _kp1 = 1; } if(_ktim1&& (!((!_bounseInput2O)))){ _kp1 = 0; } if (_kp1) { if (_tim1I) { if (_isTimer(_tim1P, 7000)) { _tim1O = 1; } } else { _tim1I =1; _tim1P = millis(); } } else { _tim1O = 0; _tim1I = 0; } if(_tim1O) { _ktim1 = 1; } else { _ktim1 = 0; } if (_kp1) { if (! _gen1I){ _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0; } if (_gen1I && _gen1O) _gen1O = !( _isTimer( _gen1P , 7000 )); if(_gen1O) { digitalWrite (13, 1); } else { digitalWrite (13, 0); } } bool _isTimer(unsigned long startTime, unsigned long period ) { unsigned long currentTime; currentTime = millis(); if (currentTime>= startTime) { return (currentTime>=(startTime + period)); } else { return (currentTime >=(4294967295-startTime+period)); } }
целая тема есть работа с кнопками
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...
там масса примеров
и вот например счетчик трех нажатий - убрать подсчет за три секунды, и просто переключать трежимы
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...
я уже находил эти теммы не получается объединить код с первого сообщения и код ниже
наверное немного кривовато, но как то так
работает СПАСИБО!
но у меня не получается вставить код в режимы
выбивает ошибку
1. Вы вообще как с программированием?
Может быть имеет смысл нанять кого то?
Я не очень понимаю ваш код так как не знаю задачи.
2. Ошибки ваши относятся к синтаксису языку С - советую банальный букварь почитать.
С программированием туга пытась сам разобраться но мало что понимаю, нанимать не имеет смысл так как это для себя. А задача такова чтобы включалось реле еще одной кнопкой на 1 режиме 5сек на 2режиме 7сек на 3режиме 10сек на 4режиме 12сек если поможете заранее благодарен
#7 Так же делается и на 4. Вот только поймете ли скетч Там же #18
http://arduino.ru/forum/programmirovanie/vrode-s-taimerami-razobralsya-n...
Буквально сегодня уже обсуждали автомат состояний - ваш вариант. Т е вы задачу до этого не до конца описали. И соответственно мой пример не подходит никак. Составьте таблицу состояний / действий. Почитайте литературу. Никто за вас код писать не будет.
всем спасибо буду дальше искать пробовать