時計製作(フィラメント管) その3
今日の進捗はRTCのテストです。
秋月さんで売られているRTC-8564NBを使用しました。
ライブラリについては「Arduinoで遊ぶページ」さんものを参考にしています。
蛇足ですけど、この方のホームページは隅から隅まで読む価値があるので
Arduinoに興味ある方にお勧めです。特にトラブルもなく、無事動きました。
日差:0.46秒 月差:13.8秒(30日)
#include <Wire.h> #include "RTC8564.h" int latchPin = 8; int dataPin = 9; int clockPin = 10; int interruptPin = 12; const byte num[10] = { 0b11011110, // 0 0b00000110, 0b11101010, 0b01101110, 0b00110110, 0b01111100, 0b11111100, 0b00001110, 0b11111110, 0b01111110, // 9 }; void setup() { pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); struct dateTime dt = {50, 0, 0, 1, 1, 13, 2}; // 2013 January 1st, Tue 00:00:50 RTC8564.begin(&dt); } void loop() { struct dateTime dt; memset(&dt, 0x00, sizeof(dt)); RTC8564.getDateTime(&dt); for(int i=0; i<10; i++) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, num[dt.second / 10]); shiftOut(dataPin, clockPin, MSBFIRST, num[dt.second % 10]); digitalWrite(latchPin, HIGH); } delay(1000); }
取得した時間はCRCチェックなどしていないのでヘタすると
妙な数字が入ることもあるかも。本番ではifチェックを入れる予定です。