BS21 Lab の製品 - 目覚めよ!xxduino!シールド - DS1337RTC ライブラリの解説

17/oct/2013 新規
20/oct/2013 更新

DS1337RTC ライブラリの解説です。

  1. 前提条件
  2. 添付のサンプル・スケッチ
  3. サポートしている機能

・前提条件

この DS1337RTC ライブラリは、Arduino IDE 付属の Wire ライブラリに加えて、 「Arduino Playground - Time」で公開されている Time ライブラリも必要になります。
Time ライブラリを download し、arduino フォルダの中の libraries フォルダの中に入れておいてください。

基本的には、アラーム設定関係は DS1337RTC ライブラリのメンバー関数を呼び出します。それ以外の日時関係は Time ライブラリのメンバー関数を呼び出します。

※ 現バージョンでは DS1337 のアラーム2を読み書きするメンバー関数はありません。


・添付のサンプル・スケッチ

「DS1337RTC ライブラリ」には、5つのサンプル・スケッチが添付されています。
Arduino IDE の「ファイルメニュー」⇒「スケッチの例」⇒「DS1337RTC」で選択する事が可能です。
スケッチの例の選択方法

・TimeRTCSetDS1337 に日時を設定するスケッチ例です。
・TimeRTCDS1337 の現在の日時を読み出してシリアルモニターに転送するスケッチ例です。
・print_clock_and_batt_capDS1337 の現在の日時と、単四電池6本の電圧を読み出してシリアルモニターに転送するスケッチ例です。
・wakeup_1min_demo1分ごとに Arduino を起動させるスケッチ例です。
・wakeup_5min_demo5分ごとに Arduino を起動させるスケッチ例です。

5分ごとに Arduino を起動させるスケッチ例

・サポートしている機能

「DS1337RTC ライブラリ」のサポートしている機能を、以下に列挙します。

wakeup の方法:
定義コメント
DS1337RTC_WAKEUP_EVERY_SEC1毎秒:使用しません(Arduinoの起動そのものに数秒かかる為、毎秒起動は逆立ちしても不可能です)。ただし、DS1337の初期状態によっては、この設定になっている場合がありえます。
DS1337RTC_WAKEUP_EVERY_MIN2毎分:指定の秒ごとに wakeup する
DS1337RTC_WAKEUP_EVERY_HOUR3毎時:指定の分/秒ごとに wakeup する
DS1337RTC_WAKEUP_EVERY_DAY4毎日:指定の時/分/秒ごとに wakeup する
DS1337RTC_WAKEUP_EVERY_WEEK5毎週:指定の曜日/時/分/秒ごとに wakeup する
DS1337RTC_WAKEUP_EVERY_MONTH6毎月:指定の日/時/分/秒ごとに wakeup する

曜日:DS1337では 1〜7 の範囲になります。Time ライブラリもこれと同じです。DS1337 以外の RTC では違う値になってたりするので要注意です。
定義コメント
DS1337RTC_DOW_SUN1日 ※timeDayOfWeek_t の dowSunday と同じです。
DS1337RTC_DOW_MON2月 ※timeDayOfWeek_t の dowMonday と同じです。
DS1337RTC_DOW_TUE3火 ※timeDayOfWeek_t の dowTuesday と同じです。
DS1337RTC_DOW_WED4水 ※timeDayOfWeek_t の dowWednesday と同じです。
DS1337RTC_DOW_THU5木 ※timeDayOfWeek_t の dowThursday と同じです。
DS1337RTC_DOW_FRI6金 ※timeDayOfWeek_t の dowFriday と同じです。
DS1337RTC_DOW_SAT7土 ※timeDayOfWeek_t の dowSaturday と同じです。


DS1337RTC クラスの public メンバー関数:
関数名戻り値パラメータコメント
DS1337RTC無し無しコンストラクタ
getCurrTimetime_tvoid現在の日時を取得。Time ライブラリの setSyncProvider 関数に渡します。
voidtmElements_t &tm通常はこちらの方が使いやすいです。
setCurrTimevoidtime_t t日時を設定
voidtmElements_t &tm
voiduint8_t hr, uint8_t min, uint8_t sec, uint8_t day, uint8_t month, uint16_t yr※引数の並びに注意:時/分/秒/日/月/年(2000〜2099)の順です
getWakeupTimeuint8_ttmElements_t &tm設定されている次回の wakeup 日時と、wakeup の方法 (DS1337RTC_WAKEUP_EVERY_XXX のいずれか) が返されます
setWakeupTimeEveryMinvoidtmElements_t &tm毎分、指定の秒に wakeup させます。
voidvoid0秒指定
voiduint8_t secsec秒指定
setWakeupTimeEveryHourvoidtmElements_t &tm毎時、指定の分/秒に wakeup させます。
voiduint8_t minmin分0秒指定
voiduint8_t min, uint8_t secmin分sec秒指定
setWakeupTimeEveryDayvoidtmElements_t &tm毎日、指定の時/分/秒に wakeup させます。
voiduint8_t hr, uint8_t minhr時min分0秒指定
voiduint8_t hr, uint8_t min, uint8_t sechr時min分sec秒指定
setWakeupTimeEveryWeekvoidtmElements_t &tm毎週、指定の曜日/時/分/秒に wakeup させます。
voiduint8_t dayOfWeek, uint8_t hr, uint8_t mindayOfWeek = DS1337RTC_DOW_xxx のいずれか
voiduint8_t dayOfWeek, uint8_t hr, uint8_t min, uint8_t secdayOfWeek = DS1337RTC_DOW_xxx のいずれか
setWakeupTimeEveryMonthvoidtmElements_t &tm毎月、指定の日/時/分/秒に wakeup させます。
voiduint8_t day, uint8_t hr, uint8_t min引数の並びに注意:日(day)から指定します
voiduint8_t day, uint8_t hr, uint8_t min, uint8_t sec引数の並びに注意:日(day)から指定します
getWakeupFlaguint8_tvoidwakeup フラグの状態を取得します。
指定の Wakeup 日時で電源 ON した時は 0 以外に、他の方法で電源 ON した時は 0 になります。
clearWakeupFlagvoidvoidwakeup フラグを強制的にクリアします。通常、使う事は無いでしょう。
powerOffboolvoid電源を OFF にします。目覚めよ!xxduino!シールドからの9V供給が停止します。
USB 接続されていない場合、直ぐに Arduino が停止しますので、直前で、各種データを保存or送信し、次に目覚める Wakeup 日時を設定してから、これを呼び出してください。
powerOffWithoutWakingboolvoid電源を OFF にします。目覚めよ!xxduino!シールドからの9V供給が停止します。Wakeup 日時も無視されますので、USB 接続するまで RTC/SRAM 以外は眠り続けます。
USB 接続されていない場合、直ぐに Arduino が停止しますので、直前で、各種データを保存or送信してから、これを呼び出してください。
目覚めよ!xxduino!シールドのアラーム1出力を強制 OFF する時も、この関数を呼び出してください。
calcDayOfWeekuint8_tuint8_t day, uint8_t month, uint16_t yr曜日の計算DS1337RTC_DOW_xxx のいずれか
注意:2000/3/1〜2100/2/28 の範囲でしか正しい値になりません。


グローバル変数:
変数名コメント
RTCDS1337RTC上記の DS1337RTC クラスをインスタンス化したグローバル変数


目覚めよ!xxduino!シールドに戻る

Copyright (C) 2013 BS21 Lab, All rights reserved.