RTC - 讀取 DS1307/DS3231 RTC 時間模組
材料準備
- Ameba x 1
- DS1307/DS3231 RTC x 1
範例說明
DS1307是常見的RTC IC,像是TinyRTC就使用DS1307。如果需要高精準度的RTC,可以使用DS3231。請先下載DS1307RTC library:
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/DS1307RTC-1.0.0.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/DS1307RTC-1.0.0.zip
另外時間格式的部份會用到Time library:
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/Time-1.0.1.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/Time-1.0.1.zip
安裝library的方式請參考Arduino官方網站的教學文章將zip檔的library加入Ameba:
https://www.arduino.cc/en/Guide/Libraries#toc4
https://www.arduino.cc/en/Guide/Libraries#toc4
這個library支援了DS1307, DS1337 以及 DS3231。使用的介面為I2C,工作電壓為3.3V
請打開範例 “File” -> “Examples” -> “AmebaDS1307RTC” -> “ReadTest”
這個範例會從 DS1307/DS3231讀取時間,如果使用的模組是TinyRTC (DS1307)
接線如下:
如果是DS3231,接線如下:
RTL8710,接線如下:
然後我們編譯程式,並上傳至Ameba,完成之後按下Reset按鈕,可以在Serial Monitor看到底下的log:
程式碼說明
在loop()的地方宣告了tmElements_t的struct型態的變數,用來保存時間相關的內容
tmElements_t tm;
接著呼叫RTC.read()將時間資訊填入tmElements_t的變數裡
RTC.read(tm)
tmElements_t的資料成員:
typedef struct { uint8_t Second; uint8_t Minute; uint8_t Hour; uint8_t Wday; // day of week, sunday is day 1 uint8_t Day; uint8_t Month; uint8_t Year; // offset from 1970; } tmElements_t, TimeElements, *tmElementsPtr_t;
使用者可以取出裡面的內容使用
Realtek IoT/Wi-Fi MCU Solutions . All Rights Reserved. 使用條款