Товарищи, подскажите, где проблема? Делал задержку по кнопке: Код (C++): .... if (flagPed == true & odnoFun1 == false) { // срабатывание по кнопке и условию в программе flagPedcount = 1; // флаг для работы цикла без удержания кнопки (вкл) } if (flagPedcount == 1) { //проверка условия digitalWrite(v13, HIGH); //включение реле if (millis() - myTimerMotor >= 60000) { //таймер 1 минута myTimerMotor = millis(); // сброс таймера CountMotorON++; //счётчик срабатывания if (CountMotorON >=1) { // при достижении таймера 1й минуты digitalWrite(v13, LOW); // отключение реле flagPedcount = 0; // флаг для работы цикла без удержания кнопки (откл) ...... но контрольные измерения дают погрешность до 15 секунд, в среднем 7-10 секунд. Это как-то поправить можно? в цикле с delay работает верно.
Тут люди говорили про шары... вроде как стеклянняе. Но я думаю в этом случае как про яйца, которые надо отбить. Вы прикажете по шарам определять, что за флаг и зачем нужен?! Будьте любезны пояснить код (ну если он не секретный - потму как до секретного/коммерческрго Вам оооооочень далЁЁЁЁко) Вы уж простите за грубость. А накой Вам такой подход? Не моё дело конечно, но все решается подругому
Вашу проблему - пока непонятно. А вот неправильно заданный вопрос вполне можно поправить, добавив полный код.
Делаю простую программу, пытаясь избежать delay. При нажатии кнопки и совпадении условия в программе, реле должно включиться на определённое время. Аналогичный код с delay работает точно, а с функцией millis выдержка реле на 10-15 секунд раньше заканчивается.
очевидно, что где-то ещё стоит delay или цикл с ним, или опрос внешнего устройства, или... ещё много или, о которых мы знать не знаем.
нет, проверил через поиск, задержек нет. Опросов тоже нет. Такая конструкция работает верно: Код (C++): /*if (flagPed == true & odnoFun1 == false) { // digitalWrite(v13, HIGH); flagPedcount++; delay (60000); digitalWrite(v13, LOW); odnoFun1 = true; delayMicroseconds(50); odnoFun1 = false; }*/
И что вы "поправили"? Вы понимаете что значит "полный код"? - это значит код полностью, с сетап и луп, который можно вставить в Ардуино ИДЕ и он скомпилируется без ошибок. А что вы дали? - опять огрызок??? Как и где описана переменная таймера myTimerMotor ?
Контрольный замер сделайте. Например, каждую минуту выводите в порт значение millis и сравнивайте его с часами.