Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // CONNECTIONS:
- // DS3231 SDA --> SDA
- // DS3231 SCL --> SCL
- // DS3231 VCC --> 3.3v or 5v
- // DS3231 GND --> GND
- /* for software wire use below
- #include <SoftwareWire.h> // must be included here so that Arduino library object file references work
- #include <RtcDS3231.h>
- SoftwareWire myWire(SDA, SCL);
- RtcDS3231<SoftwareWire> Rtc(myWire);
- for software wire use above */
- /* for normal hardware wire use below */
- #include <Wire.h> // must be included here so that Arduino library object file references work
- #include <RtcDS3231.h>
- RtcDS3231<TwoWire> Rtc(Wire);
- /* for normal hardware wire use above */
- long n;
- #define countof(a) (sizeof(a) / sizeof(a[0]))
- void printDateTime(const RtcDateTime& dt)
- {
- char datestring[20];
- snprintf_P(datestring,
- countof(datestring),
- PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
- dt.Month(),
- dt.Day(),
- dt.Year(),
- dt.Hour(),
- dt.Minute(),
- dt.Second() );
- Serial.print(datestring);
- }
- void resetAlarm(RtcDateTime time) {
- RtcDateTime alarm =(time + 30);
- DS3231AlarmOne alarm1(
- alarm.Day(),
- alarm.Hour(),
- alarm.Minute(),
- alarm.Second(),
- DS3231AlarmOneControl_MinutesSecondsMatch);
- Serial.println("RTC to trigger at : ");
- printDateTime(alarm);
- Rtc.SetAlarmOne(alarm1);
- delay(500);
- Rtc.LatchAlarmsTriggeredFlags();
- Serial.println("----");
- }
- void setup ()
- {
- Serial.begin(9600);
- Serial.print("compiled: ");
- Serial.print(__DATE__);
- Serial.println(__TIME__);
- //--------RTC SETUP ------------
- // if you are using ESP-01 then uncomment the line below to reset the pins to
- // the available pins for SDA, SCL
- // Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL
- Rtc.Begin();
- RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
- printDateTime(compiled);
- Serial.println();
- if (!Rtc.IsDateTimeValid())
- {
- // Common Cuases:
- // 1) first time you ran and the device wasn't running yet
- // 2) the battery on the device is low or even missing
- Serial.println("RTC lost confidence in the DateTime!");
- // following line sets the RTC to the date & time this sketch was compiled
- // it will also reset the valid flag internally unless the Rtc device is
- // having an issue
- Rtc.SetDateTime(compiled);
- }
- if (!Rtc.GetIsRunning())
- {
- Serial.println("RTC was not actively running, starting now");
- Rtc.SetIsRunning(true);
- }
- RtcDateTime now = Rtc.GetDateTime();
- if (now < compiled)
- {
- Serial.println("RTC is older than compile time! (Updating DateTime)");
- Rtc.SetDateTime(compiled);
- }
- else if (now > compiled)
- {
- Serial.println("RTC is newer than compile time. (this is expected)");
- }
- else if (now == compiled)
- {
- Serial.println("RTC is the same as compile time! (not expected but all is fine)");
- }
- // never assume the Rtc was last configured by you, so
- // just clear them to your needed state
- Rtc.Enable32kHzPin(false);
- Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeAlarmOne);
- n = millis();
- }
- int count = 0;
- void loop ()
- {
- if (count >= 10) {
- resetAlarm(Rtc.GetDateTime());
- }
- if (!Rtc.IsDateTimeValid())
- {
- // Common Cuases:
- // 1) the battery on the device is low or even missing and the power line was disconnected
- Serial.println("RTC lost confidence in the DateTime!");
- }
- RtcDateTime now = Rtc.GetDateTime();
- printDateTime(now);
- Serial.println();
- RtcTemperature temp = Rtc.GetTemperature();
- Serial.print(temp.AsFloatDegC());
- Serial.println("C");
- delay(1000); // ten seconds
- count++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement