Интернет-магазин «Неглупый Дом»
В другом проекте DS1307 включает реле на заданный интервал. Здесь часы проще — напоминание самому человеку: в заданные моменты звучит короткая мелодия через зуммер, без управления нагрузкой.
Работа с часами такая же: DS1307 хранит точное время, код в `loop()` спрашивает час и минуту. Разница — в реакции: вместо интервала проверяется точное совпадение часа И минуты с одним из моментов напоминания, и один раз проигрывается мелодия.
Важно: напоминание должно сработать ровно один раз в заданную минуту, не повторяться всю минуту (`loop()` выполняется много раз в секунду) — код запоминает, для какой минуты уже было напоминание.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
const int BUZZER_PIN = 8;
const int REMINDERS[2][2] = {{9, 0}, {18, 30}};
int lastReminderMinute = -1;
void playChime() {
tone(BUZZER_PIN, 1500, 150);
delay(200);
tone(BUZZER_PIN, 2000, 150);
delay(200);
tone(BUZZER_PIN, 2500, 300);
}
void setup() {
Serial.begin(9600);
pinMode(BUZZER_PIN, OUTPUT);
if (!rtc.begin()) { while (1) delay(1000); }
}
void loop() {
DateTime now = rtc.now();
for (int i = 0; i < 2; i++) {
if (now.hour() == REMINDERS[i][0] && now.minute() == REMINDERS[i][1]) {
if (lastReminderMinute != now.minute()) {
playChime();
lastReminderMinute = now.minute();
}
}
}
delay(1000);
}
Библиотека RTClib ставится через Менеджер библиотек. Массив `REMINDERS` можно расширить до любого числа моментов.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 142 ₽ 128 ₽ (экономия 14 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.