Часы реального времени DS3231

Та же шина I2C, что у дисплея: SDA на A4, SCL на A5, адрес 0x68. Время модуль держит сам, от батарейки, поэтому adjust() зовут один раз, а не в каждом setup().

Программа

// Часы реального времени DS3231 — та же шина I2C, что и у дисплея.
//
// Смысл модуля в том, что время он держит САМ, от своей батарейки: плату можно
// обесточить, а часы не собьются. Поэтому adjust() зовут один раз — при первом
// запуске или после потери питания, — а не в каждом setup().
//
// Чип в инспекторе устройства (DS3231 или DS1307) должен совпадать с классом в
// скетче: DS1307 не умеет getTemperature() и вернёт 0.
#include <RTClib.h>

RTC_DS3231 rtc;

void setup() {
  Serial.begin(9600);
  if (!rtc.begin()) {
    Serial.println("часы не найдены — проверьте SDA/SCL и питание");
    return;
  }
  if (rtc.lostPower()) {
    rtc.adjust(DateTime(2026, 9, 1, 8, 30, 0));   // год, месяц, день, час, минута, секунда
  }
}

void loop() {
  DateTime now = rtc.now();
  Serial.print(now.hour());
  Serial.print(":");
  if (now.minute() < 10) Serial.print("0");
  Serial.print(now.minute());
  Serial.print(":");
  if (now.second() < 10) Serial.print("0");
  Serial.print(now.second());
  Serial.print("   на плате часов ");
  Serial.print(rtc.getTemperature());
  Serial.println(" C");
  delay(1000);
}

Схема примера появится, когда загрузится страница: её собирает и считает движок цепей.

← Ко всем примерам