🛒
0 товар.
0 руб.
Логотип

Интернет-магазин «Неглупый Дом»

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

⏰ Проект: напоминание-будильник по расписанию на часах реального времени DS1307

В другом проекте DS1307 включает реле на заданный интервал. Здесь часы проще — напоминание самому человеку: в заданные моменты звучит короткая мелодия через зуммер, без управления нагрузкой.

Как это работает

Работа с часами такая же: DS1307 хранит точное время, код в `loop()` спрашивает час и минуту. Разница — в реакции: вместо интервала проверяется точное совпадение часа И минуты с одним из моментов напоминания, и один раз проигрывается мелодия.

Важно: напоминание должно сработать ровно один раз в заданную минуту, не повторяться всю минуту (`loop()` выполняется много раз в секунду) — код запоминает, для какой минуты уже было напоминание.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Убедитесь, что в DS1307 установлена батарейка CR2032 и записано правильное текущее время.
  2. DS1307: SDA → A4, SCL → A5, VCC → 5V, GND → GND.
  3. Зуммер: сигнал → D8, GND → GND.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.

#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 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина

Поиск


Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA