鹹魚ESP32實例—RTC
每一個電子愛好者心中都希望擁有屬於自己製作的一個電子時鐘,接下來我們就用 MicroPython 開發板來製作一個屬於自己的電子時鐘。
ZTWF開發板
0.96oled屏幕
構造函數 |
---|
rtc=machine.RTC() |
構建 RTC 對象。 |
使用方法 |
rtc.datetime((2020, 6, 1, 0, 0, 0, 0, 0)) |
設置日期和時間。按順序分別是:(年,月,日,星期,時,分,秒,微秒)其中星期使用 0-6 表示週一至週日。 |
rtc.datetime() |
獲取當前日期和時間 |
基礎用法
和PYB基本一樣
>>> from machine import RTC
>>> rtc=RTC()
>>> rtc.datetime()
(2000, 1, 1, 5, 0, 1, 39, 288498)
>>> rtc.datetime((2020,06,03,1,15,15,0,0))
>>> print(rtc.datetime())
(2020, 6, 3, 2, 15, 15, 17, 79590)
示例代碼
from machine import Pin, I2C, RTC, Timer
from ssd1306 import SSD1306_I2C
# 定義星期和時間(時分秒)顯示字符列表
week = ['Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
time_list = ['', '', '']
# 初始化所有相關對象
i2c = I2C(sda=Pin(26), scl=Pin(25)) # I2C 初始化:sda-->13, scl -->14
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
rtc = RTC()
# 首次上電配置時間,按順序分別是:年,月,日,星期,時,分,秒,次秒級;這裏做
# 了一個簡單的判斷,檢查到當前年份不對就修改當前時間,開發者可以根據自己實際情況
# 來修改。
if rtc.datetime()[0] != 2020:
rtc.datetime((2020, 6, 3, 3, 14, 47, 0, 0))
def RTC_Run(tim):
datetime = rtc.datetime() # 獲取當前時間
oled.fill(0) # 清屏顯示黑色背景
oled.text('RTC TEST', 0, 0) # 首行顯示
oled.text('RTC Clock', 0, 15) # 次行顯示實驗名稱
# 顯示日期,字符串可以直接用“+”來連接
oled.text(str(datetime[0]) + '-' + str(datetime[1]) + '-' + str(datetime[2]) + ' ' + week[datetime[3]], 0, 40)
# 顯示時間需要判斷時、分、秒的值否小於 10,如果小於 10,則在顯示前面補“0”以
# 達到較佳的顯示效果
for i in range(4, 7):
if datetime[i] < 10:
time_list[i - 4] = "0"
else:
time_list[i - 4] = ""
# 顯示時間
oled.text(time_list[0] + str(datetime[4]) + ':' + time_list[1] +str(datetime[5]) + ':' + time_list[2] + str(datetime[6]), 0, 55)
oled.show()
# 開啓 RTOS 定時器
tim = Timer(-1)
tim.init(period=300, mode=Timer.PERIODIC, callback=RTC_Run) # 週期 300m