50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
# Simple demo of reading and writing the time for the DS1307 real-time clock.
|
|
# Change the if False to if True below to set the time, otherwise it will just
|
|
# print the current date and time every second. Notice also comments to adjust
|
|
# for working with hardware vs. software I2C.
|
|
|
|
import time
|
|
import board
|
|
|
|
# For hardware I2C (M0 boards) use this line:
|
|
import busio as io
|
|
|
|
# Or for software I2C (ESP8266) use this line instead:
|
|
# import bitbangio as io
|
|
|
|
import adafruit_ds1307
|
|
|
|
# Change to the appropriate I2C clock & data pins here!
|
|
i2c_bus = io.I2C(board.SCL, board.SDA)
|
|
|
|
# Create the RTC instance:
|
|
rtc = adafruit_ds1307.DS1307(i2c_bus)
|
|
|
|
# Lookup table for names of days (nicer printing).
|
|
days = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
|
|
|
|
|
|
# pylint: disable-msg=bad-whitespace
|
|
# pylint: disable-msg=using-constant-test
|
|
if False: # change to True if you want to set the time!
|
|
# year, mon, date, hour, min, sec, wday, yday, isdst
|
|
t = time.struct_time((2017, 10, 29, 15, 14, 15, 0, -1, -1))
|
|
# you must set year, mon, date, hour, min, sec and weekday
|
|
# yearday is not supported, isdst can be set but we don't do anything with it at this time
|
|
print("Setting time to:", t) # uncomment for debugging
|
|
rtc.datetime = t
|
|
print()
|
|
# pylint: enable-msg=using-constant-test
|
|
# pylint: enable-msg=bad-whitespace
|
|
|
|
# Main loop:
|
|
while True:
|
|
t = rtc.datetime
|
|
# print(t) # uncomment for debugging
|
|
print(
|
|
"The date is {} {}/{}/{}".format(
|
|
days[int(t.tm_wday)], t.tm_mday, t.tm_mon, t.tm_year
|
|
)
|
|
)
|
|
print("The time is {}:{:02}:{:02}".format(t.tm_hour, t.tm_min, t.tm_sec))
|
|
time.sleep(1) # wait a second
|