Я пытаюсь открыть и закрыть маленькую дверь, которая должна открываться или закрываться каждые 12 часов. Мне было интересно, смогу ли я просто сделать небольшой зацикленный скрипт с задержкой () на 12 часов, задержкой (43 200 000 000); Я полагаю? Тем не менее, я понятия не имею, если это возможно и / или рекомендуется. Некоторые отзывы / альтернативы (при необходимости) были бы хороши :)
arduino-uno
timers
Фред Паннекук
источник
источник
Ответы:
Метод часов реального времени является наиболее точным, но в противном случае используется
millis
Это задержит до прибл. 4294967295 мс (2 ^ 32-1) или 49 дней, после чего таймер догонит значение
startMillis
источник
delay(LONG_DELAY_MS)
? Реализация arduino принимает беззнаковые long. Я также не совсем уверен, что ваш код работает правильно, когдаmillis()
оборачивается, и меньше, чемstartMillis
delay()
имеет свое применение, но для длительных задержек это бесполезно. Он просто говорит микроконтроллеру ничего не делать дляx
тактов. В течение этого времени ваш Arduino не может больше ничего делать.Лучше всего использовать часы реального времени (RTC). Эти чипы специально созданы для отслеживания времени, и вы можете легко подключить их к Arduino. Вот пример того, как вы могли бы сделать это.
источник
Вы могли бы использовать прерывание сторожевого таймера и поспать MCU во время ожидания и сэкономить электроэнергию.
Но обратите внимание, что вы сэкономите энергию только в том случае, если ваша доска сохранит ее. Это означает, что вы должны иметь регулятор низкого напряжения покоя вместо обычных регуляторов, которые оснащены наиболее распространенными платами Arduino, такими как Uno. В противном случае не имеет значения, экономит ли ваша MCU энергию, если ваша плата этого не делает.
Вот код (не проверен):
Код, который я скопировал, находится на этой странице: Arduino с низким энергопотреблением, использующий сторожевой таймер .
источник
У вас есть сон (без знака в секундах)?
Если нет, это позволит вам задержать () очень долго:
источник
Это будет работать:
источник
Я просто использую для циклов, когда я не хочу делать вещи между:
источник
delay(43200000)
.