Как сделать будильник на ардуино?

MrNikto

✩✩✩✩✩✩✩
12 Сен 2021
44
0
Всем привет. Хочу сделать что-то наподобие будильника. При достижении установленного времени выполнить определенное действие. Подключил часы реального времени ds1307, чтобы при перезагрузке часы не слетели. Но вот как рассчитать при перезагрузке на старте, что надо выполнить например через 1 час 2 минуты и 13 секунд?
Таких будильников будет несколько. Т.е. например
1 в 04:00
2 в 12:44
3 в 14:05
И т.д. количество может меняться.
 

poty

★★★★★★✩
19 Фев 2020
3,261
948
Если есть DS1307, то время можно получить в реальных величинах, а не относительно старта Ардуино. Сравниваете с массивом будильников и выполняете действие.
 

MrNikto

✩✩✩✩✩✩✩
12 Сен 2021
44
0
@poty, Надо получить на старте, т.к. потом я хочу отправить МК в сонный режим и чтобы проснулся ровно через столько, когда будет время срабатывания.
 

bort707

★★★★★★✩
21 Сен 2020
3,067
915
@MrNikto, на старте получаете реальное время сейчас, реальное время будильника, вычитаете первое из второго = это и будет нужное вам время " будильник сработает через 1 час 33 мин 12 сек"
 

poty

★★★★★★✩
19 Фев 2020
3,261
948
Вы сначала определитесь что будет источником пробуждения МК. Потому что в достаточно глубоких "снах" внутренние таймеры не работают.
В этом случае лучше применять DS3231.
 
  • Лойс +1
Реакции: Boroda22

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
Если принципиально хочется делать на DS1307, то настраиваем выход SQW/OUT на 1Гц, от которого контроллер пробуждается каждую секунду, добавляет счетчик секунд, сравнивает время, если еще не пришло, то уходит в сон до следующей итерации.

Но лучше всего как предложил @poty использовать DS3231, в нем можно настроить выход INT/SQW на совпадение по заданному времени, от которого и будет просыпаться контроллер.