Что лучше millis() или таймер?

Я хочу создать 30-минутную задержку в своей программе (Arduino).

Что для этой цели лучше millis() или таймер?

пожалуйста, приведите пример, чтобы прояснить мои сомнения...

Спасибо.

, 👍1

Обсуждение

спать лучше 30 минут, @Juraj

тот же вопрос с дополнительной информацией https://forum.arduino.cc/index.php?topic=627149.0, @Juraj


1 ответ


3

Это зависит от ваших потребностей:

1. Никакой другой деятельности/основного питания

Если в течение этих 30 минут (я думаю) MCU больше ничего не нужно делать (за исключением, возможно, обработки коротких прерываний), то вы можете использовать задержку. Вы можете использовать это, если источником питания является адаптер, но вы много тратите.

  • Преимущество: простота программирования.
  • Недостаток: питание будет продолжать использоваться.

2. Нет других действий / батареи

Если у вас те же условия, что и выше, но вы используете батарею, то, как упоминает Юрадж, используйте функцию сна Arduino. Вам потребуются (внешние) часы реального времени или другая схема, чтобы активировать сигнал пробуждения через 30 минут.

  • Преимущество: во время 30-минутной задержки потребляется очень мало энергии.
  • Недостаток: чуть больше программирования

3. Другие виды деятельности

Если вы хотите сделать сейчас (или позже) другой код, который будет выполняться в течение 30-минутного ожидания, используйте millis(). Например, если вы хотите расширить свой проект, используя другие библиотеки, для которых требуется ответ быстрее, чем за 30 минут.

  • Преимущество: тем временем вы можете заниматься другими делами
  • Недостаток: повышенное энергопотребление, чуть больше программирования.
,

2) esp8266 имеет встроенный RTC с опцией пробуждения из глубокого сна, @Juraj

3) например мигать светодиодом, чтобы показать, что он жив, @Juraj

1) прерывания для поддержания соединения WiFi, @Juraj

@Juraj спасибо за дополнительные комментарии .. оффтоп:. кстати поздравляю с вашей репутацией 10K. Я удалил свой другой ответ, поэтому вам больше не нужно его отрицать)., @Michel Keijzers