基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
周期処理(MsTimer2)
時計(RTC)
時計(RTC)
時計として使うためのライブラリです。年、月、日、曜日、時、分、秒を設定後、時計として機能します。アラームを設定してアラーム発生時に特定の処理を行うこともできます。クラス用のライブラリも用意されていますが、このリファレンスでは記述していませんので、適宜ライブラリソースを参照してください。ライブラリを使用するには、#include <RTC.h>
を記述してください。
rtc_init
- 概要
- 初期化を行います。
- 文法
- int rtc_init()
- パラメータ
- なし
- 戻り値
- 0:失敗、1:成功、2:既に初期化済み
rtc_deinit
- 概要
- 時計を停止します。
- 文法
- int rtc_deinit()
- パラメータ
- なし
- 戻り値
- 0:失敗、1:成功
rtc_set_time
- 概要
- 時間を設定します。
- 文法
- int rtc_set_time(RTC_TIMETYPE *time)
- パラメータ
- time: RTC_TIMETYPE型で設定した時刻の構造体を指定します。
- 戻り値
- 0:失敗、1:成功
- 補足
- 時刻設定についてはサンプルプログラムを参照ください。
rtc_get_time
- 概要
- 時刻を取得します。
- 文法
- int rtc_get_time(RTC_TIMETYPE *time)
- パラメータ
- time: 時刻を格納するRTC_TIMETYPE型の構造体を指定します。
- 戻り値
- 0:失敗、1:成功
rtc_attach_alarm_handler
- 概要
- アラーム発生時に処理する関数を登録します。
- 文法
- rtc_attach_alarm_handler(void(*)(void) function)
- パラメータ
- function: 処理する関数
- 戻り値
- なし
rtc_set_alarm_time
- 概要
- アラーム時間を設定します。
- 文法
- int rtc_set_alarm_time (int hour, int min, int week_flag)
- パラメータ
- hour: 時
min: 分
week_flag: 曜日(複数指定の場合は論理和で指定) - 戻り値
- 0:失敗、1:成功
rtc_alarm_on
- 概要
- アラームをONにします。
- 文法
- rtc_alarm_on()
- パラメータ
- なし
- 戻り値
- なし
rtc_alarm_off
- 概要
- アラームをOFFにします。
- 文法
- rtc_alarm_off()
- パラメータr
- なし
- 戻り値
- なし
マクロ定義
- 曜日
- RTC_WEEK_SUNDAY: 0x00
RTC_WEEK_MONDAY: 0x01
RTC_WEEK_TUESDAY: 0x02
RTC_WEEK_WEDNESDAY: 0x03
RTC_WEEK_THURSDAY: 0x04
RTC_WEEK_FRIDAY: 0x05
RTC_WEEK_SATURDAY: 0x06 - アラーム用曜日
- RTC_ALARM_SUNDAY: 0x01
RTC_ALARM_MONDAY: 0x02
RTC_ALARM_TUESDAY: 0x04
RTC_ALARM_WEDNESDAY: 0x08
RTC_ALARM_THURSDAY: 0x10
RTC_ALARM_FRIDAY: 0x20
RTC_ALARM_SATURDAY: 0x40
RTC_ALARM_EVERYDAY: 上記全ての論理和
サンプルプログラム
時刻とアラームを設定するプログラムです。シリアル通信で時刻を出力し、10秒後にアラームでメッセージを表示します。
#include <Arduino.h>
#include <RTC.h>
void alarm_handler();
RTC_TIMETYPE t;
void setup()
{
Serial.begin(9600);
pinMode(PIN_LED0, OUTPUT); //blue led for alarm
digitalWrite(PIN_LED0, HIGH); //turn off
int err = rtc_init();
t.year = 2016;
t.mon = 3;
t.day = 22;
t.weekday = RTC_WEEK_TUESDAY;
t.hour = 9;
t.min = 20;
t.second = 50;
err = rtc_set_time(&t);
rtc_attach_alarm_handler(alarm_handler);
err = rtc_set_alarm_time(t.hour, t.min + 1);
}
void loop()
{
int err;
err = rtc_get_time(&t);
Serial.print(t.year, DEC);Serial.print("/");
Serial.print(t.mon, DEC); Serial.print("/");
Serial.print(t.day, DEC); Serial.print(" ");
Serial.print(t.hour, DEC); Serial.print(":");
Serial.print(t.min, DEC); Serial.print(":");
Serial.println(t.second, DEC);
delay(500);
}
void alarm_handler()
{
digitalWrite(PIN_LED0, LOW);//blue led for alarm
}