Интернет-магазин «Неглупый Дом»
Часы реального времени DS1307 хранят точное время независимо от скетча, а реле включает нагрузку строго по расписанию — например, с 18:00 до 23:00 каждый день, без привязки к тому, когда Arduino включили.
DS1307 — часы реального времени на I2C с собственным генератором: счётчик времени продолжает идти даже при выключенном Arduino. Для этого нужна батарейка CR2032 в держателе на плате — модуль продаётся без неё, без батарейки время сбрасывается на 2000 год при каждом отключении питания.
Время один раз записывается в модуль, после чего DS1307 сам продолжает отсчёт. В `loop()` Arduino просто спрашивает текущий час и сравнивает с границами интервала — внутри интервала реле включено, иначе выключено.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
const int RELAY_PIN = 2;
const int ON_HOUR = 18;
const int OFF_HOUR = 23;
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
if (!rtc.begin()) {
Serial.println("DS1307 не найден!");
while (1) delay(1000);
}
if (!rtc.isrunning()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
int h = now.hour();
bool shouldBeOn = (h >= ON_HOUR && h < OFF_HOUR);
digitalWrite(RELAY_PIN, shouldBeOn ? HIGH : LOW);
delay(30000);
}
Библиотека RTClib (Adafruit) ставится через Менеджер библиотек. После первой прошивки строку `rtc.adjust(...)` рекомендуется закомментировать, чтобы перезагрузки Arduino не сбивали время на момент компиляции.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 177 ₽ 159 ₽ (экономия 18 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.