基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
EEPROM
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
Ethernet
Ethernetサーバー
Ethernetクライアント
Firmata
周期処理
省電力
時計(RTC)
SoftwareSerial
ユーティリティ
時計(RTC)
時計として使うためのライブラリです。年、月、日、曜日、時、分、秒を設定後、時計として機能します。アラームを設定してアラーム発生時に特定の処理を行うこともできます。クラス用のライブラリも用意されていますが、このリファレンスでは記述していませんので、適宜ライブラリソースを参照してください。ライブラリを使用するには、#include <RLduino78_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()
パラメータ
なし
戻り値
なし
マクロ定義
曜日
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: 上記全ての論理和
rtc_attach_constant_period_interrupt_handler
概要
周期処理を行いたい関数を登録します。
文法
rtc_attach_constant_period_interrupt_handler(function)
パラメータ
function: 関数
戻り値
なし
rtc_set_constant_period_interrupt_time
概要
周期処理の間隔を指定します。
文法
int rtc_set_constant_period_interrupt_time(period);
パラメータ
period:
RTC_CONSTANT_PERIOD_TIME_NONE :周期なし
RTC_CONSTANT_PERIOD_TIME_HALFSECOND :0.5秒
RTC_CONSTANT_PERIOD_TIME_1SECOND :1秒(デフォルト)
RTC_CONSTANT_PERIOD_TIME_1MINUTE :1分
RTC_CONSTANT_PERIOD_TIME_1HOUR :1時間
RTC_CONSTANT_PERIOD_TIME_1DAY :1日
RTC_CONSTANT_PERIOD_TIME_1MONTH :1週間戻り値
なし
rtc_constant_period_interrupt_on
概要
周期処理をONにします。
文法
rtc_constant_period_interrupt_on()
パラメータ
なし
戻り値
なし
rtc_constant_period_interrupt_off
概要
周期処理をOFFにします。
文法
rtc_constant_period_interrupt_off()
パラメータ
なし
戻り値
なし
サンプルプログラム
時刻とアラームを設定するプログラムです。シリアル通信で時刻を出力し、1分後にアラームでメッセージを表示します。
#include <Arduino.h>
#include <RLduino78_RTC.h>
void alarm_handler();
RTC_TIMETYPE t;
void setup()
{
Serial.begin(9600);
pinMode(24, OUTPUT); //blue led for alarm
digitalWrite(24, HIGH); //turn off
int err = rtc_init();
t.year = 13;
t.mon = 10;
t.day = 12;
t.weekday = RTC_WEEK_THURSDAY;
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(2000 + 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(24, LOW);//blue led for alarm
}
1秒ごとにLEDをチカっとするサンプルです。
#include <Arduino.h>
#include <RLduino78_RTC.h>
#define LED_GREEN 23
void rtcInterrupt1s(){
digitalWrite(LED_GREEN, LOW);
delay(10);
digitalWrite(LED_GREEN, HIGH);
}
void setup(){
digitalWrite(LED_GREEN, HIGH);
pinMode(LED_GREEN, OUTPUT);
rtc_init();
rtc_attach_constant_period_interrupt_handler(rtcInterrupt1s);
rtc_set_constant_period_interrupt_time(RTC_CONSTANT_PERIOD_TIME_1SECOND);
rtc_constant_period_interrupt_on();
}
void loop(){
}