NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Genuino101の使い方(RTC編)

Arduino/Genuino 101
 
 前回のGenuino101 BluetoothLE編に引き続き、今回はRTC機能を使ってみました! 

1. RTCとは?

 RTCとは、リアルタイムクロック(real-time clock)の略でコンピュータが内蔵する時計です。
 オペレーティングシステムが持つ時刻機能はタイマーにより「時間」を測定しそれを積算するものであるのに対し、コンピュータの電源が切られていてもバッテリバックアップなどにより「時刻」を刻み続けることが特徴です。が、Genuino101の電源を落とす1970年に戻ってしまいました・・・。
 どうやらバックアップ電源は無いようです

2. プログラム

2.1 サンプルプログラム
 Arduino IDEIntel CurieボードパッケージをインストールしておけばGenuino101のRTC機能を使ったサンプルプログラムも入っています。
 図1のサンプルプログラムを呼び出すにはArduino IDEで「ファイル」→「スケッチの例」→「CurieTime」→「SetTime」の順に開きます。
#include <CurieTime.h>
void setup() {
  while (!Serial);
  Serial.begin(9600);
  setTime(21, 41, 00, 18, 1, 2017);
}

void loop() {
  Serial.print("Time now is: ");
  print2digits(hour());
  Serial.print(":");
  print2digits(minute());
  Serial.print(":");
  print2digits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print("/");
  Serial.print(month());
  Serial.print("/");
  Serial.print(year());
  Serial.println();
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.print('0');
  }
  Serial.print(number);
}
イメージ 1
図1:プログラム例
2.2 実行結果
 上記サンプルプログラムを実行した結果が図2です。
 初期状態では1970年からカウントを開始する様で「Time now is:00:00:13 1/1/1970」と表示されました。
 時刻表示は「Time now is:時:分:秒 日/月/西暦」で、各関数に関する詳細は表1の通りです。
 起動から10秒後にsetTime関数で設定した時刻が反映され「Time now is:21:41:10 18/1/2017」と表示されました。
 そこから一秒毎に現在の時刻が表示されます。
イメージ 1
図2:シリアルモニタ出力結果
 
表1:CurieTime.hライブラリ 各種関数
関数 機能
setTime(,,,,,) (時,分,秒,日,月,西暦)を入力し初期化する
hour() 現在の「時」を00~23で返す
minute() 現在の「分」を00~59で返す
second() 現在の「秒」を00~59で返す
day() 現在の「日」を00~31で返す
month() 現在の「月」を00~12で返す
year() 現在の「念」を1970~で返す
  

3. まとめ

 この機能を使えばハイテク目覚ましであるとか、毎週月曜日にサボテンに水をあげるとか、誕生日の日になると音楽が鳴りだすとか色々出来そうです!
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【Genuino101の使い方!】目次に戻る