時計製作(フィラメント管) その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チェックを入れる予定です。