基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
Ethernet
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
PPG(パルス生成)
WiFiEsp
ICS(シリアルサーボ)
FreeRTOS Tips
時計(RTC)
時計として使うためのライブラリです。年、月、日、曜日、時、分、秒を設定後、時計として機能します。アラームを設定してアラーム発生時に特定の処理を行うこともできます。ライブラリを使用するには、#include <RTC.h>
を記述して、RTC rtcのようにインスタンスを作成してください。
begin
- 概要
- 初期化を行います。
- 文法
- bool rtc.begin()
- パラメータ
- なし
- 戻り値
- true or false
end
- 概要
- 時計を停止します。
- 文法
- bool rtc.end()
- パラメータ
- なし
- 戻り値
- true or false
setDateTime
- 概要
- 時間を設定します。
- 文法
- bool rtc.setDateTime(int year, int mon, int day, int hour, int min, int sec, int week)
- パラメータ
- year: Year
mon: Month
day: Day
hour: Hour
min: Minute
sec: Second
week: Use the following parameters.
RTC_WEEK_SUNDAY
RTC_WEEK_MONDAY
RTC_WEEK_TUESDAY
RTC_WEEK_WEDNESDAY
RTC_WEEK_THURSDAY
RTC_WEEK_FRIDAY
RTC_WEEK_SATURDAY - 戻り値
- true or false
getDateTime
- 概要
- 時刻を取得します。
- 文法
- bool rtc.getDateTime(int &year, int &mon, int &day, int &hour, int &min, int &sec, int &week)
- パラメータ
- setTimeと同様な変数
- 戻り値
- true or false
attachAlarmHandler
- 概要
- アラーム発生時に処理する関数を登録します。
- 文法
- void rtc.attachAlarmHandler(void (*function)(void))
- パラメータ
- function: 処理する関数
- 戻り値
- なし
setAlarmTime
- 概要
- アラーム時間を設定します。
- 文法
- bool rtc.setAlarmTime (int hour, int min, int week_flag)
- パラメータ
- hour: Hour
min: Minute
week_flag: Use the following week parameters:
RTC_ALARM_SUNDAY
RTC_ALARM_MONDAY
RTC_ALARM_TUESDAY
RTC_ALARM_WEDNESDAY
RTC_ALARM_THURSDAY
RTC_ALARM_FRIDAY
RTC_ALARM_SATURDAY
RTC_ALARM_EVERYDAY - 戻り値
- true or false
alarmOn
- 概要
- アラームをONにします。
- 文法
- rtc.alarmOn()
- パラメータ
- なし
- 戻り値
- なし
alarmOff
- 概要
- アラームをOFFにします。
- 文法
- rtc.alarmOff()
- パラメータ
- なし
- 戻り値
- なし
サンプルプログラム
時刻とアラームを設定するプログラムです。シリアル通信で時刻を出力し、10秒後にアラームでLEDが点灯します。
#include <Arduino.h>
#include <RTC.h>
RTC rtc;
int g_year = 2019;
int g_mon = 1;
int g_day = 30;
int g_hour = 9;
int g_min = 20;
int g_sec = 50;
int g_week = RTC_WEEK_WEDNESDAY;
void alarm_handler();
void setup()
{
Serial.begin(9600);
pinMode(PIN_LED1, OUTPUT); // led for alarm
digitalWrite(PIN_LED1, LOW); //turn off
rtc.begin();
rtc.setDateTime(g_year, g_mon, g_day, g_hour, g_min, g_sec, g_week);
rtc.attachAlarmHandler(alarm_handler);
rtc.setAlarmTime(g_hour, g_min + 1, g_week);
rtc.alarmOn();
}
void loop()
{
rtc.getDateTime(g_year, g_mon, g_day, g_hour, g_min, g_sec, g_week);
Serial.print(g_year, DEC);Serial.print("/");
Serial.print(g_mon, DEC); Serial.print("/");
Serial.print(g_day, DEC); Serial.print(" ");
Serial.print(g_hour, DEC); Serial.print(":");
Serial.print(g_min, DEC); Serial.print(":");
Serial.println(g_sec, DEC);
delay(500);
}
void alarm_handler()
{
digitalWrite(PIN_LED1, HIGH);// led for alarm
}