【Arduino】リアルタイムクロック(DS3231)で現在時刻の表示

はじめに
こんなこと、やります。 - ArduinoでリアルタイムクロックDS3231を使う - リアルタイムクロックに現在時刻をセットする - シリアルモニタで現在時刻の表示 - 液晶ディスプレイで現在時刻の表示
DS3231ライブラリのインストール
Arduino IDEで簡単にDS3231を扱えるように、ライブラリをインストールしましょう。
Ardino IDEを立ち上げて、メニューから「Sketch」→「Include
Library」→「Managed
Libraries…」を選択し、「DS3232RTC」で検索して次のライブラリをインストールしてください。
「依存関係のライブラリをインストールしますか?」と問われますので、「Install
all」を押します。
https://github.com/JChristensen/DS3232RTC
Arduinoとリアルタイムクロックの配線
Arduinoとリアルタイムクロックの配線を次の通り行います。
Arduino UNOでは、SDAとA4、SCLとA5は導通してますので、A4、A5ピンを使ってもらっても大丈夫です。
ArduinoとDS3231のプログラミング
ArduinoとDS3231のプログラミングを行っていきます。RTCから現在時刻を取得するには、一度だけ現在時刻をセットしてあげる必要があります。
現在時間を書き込む
内容を現在時刻に合わせて書き換えてください。
#include <DS3232RTC.h>
void setup() {
(15, 21, 0, 22, 1, 2022);
setTime.set(now());
RTC}
void loop() {
}
時刻はsetTime(時、分、秒、日、月、年の順で入力)
で指定します。プログラムを一度だけArduinoで実行し、リアルタイムクロックに現在時刻を記録させます。
シリアルモニタで現在時刻を表示する
シリアルモニタで現在時刻を表示させてみましょう。
#include <DS3232RTC.h>
void setup() {
.begin(115200);
Serial}
void loop() {
tmElements_t tm;
.read(tm);
RTC.print(tm.Year + 1970, DEC);
Serial.print('/');
Serial.print(tm.Month, DEC);
Serial.print('/');
Serial.print(tm.Day, DEC);
Serial.print(' ');
Serial.print(tm.Hour, DEC);
Serial.print(':');
Serial.print(tm.Minute,DEC);
Serial.print(':');
Serial.println(tm.Second,DEC);
Serial(1000);
delay}
こんな感じで、シリアルモニタに現在時刻が表示されれば成功です。
【発展】LCDで現在時刻を表示する

実用的な発展として、液晶ディスプレイ(LCD)を使って時刻を表示させてみましょう。LCD1602にシリアル変換モジュールをつなげて、I2C通信できるようにしてます。
ArduinoとRTC、LCDの配線
図のように、ArduinoとRTC、LCDを配線します。I2Cモジュールは各々アドレスがありますので、並列につないでも大丈夫です。

LCDに現在時刻を表示するプログラム
#include <DS3232RTC.h>
#include <LiquidCrystal_I2C.h>
(0x27,16,2);
LiquidCrystal_I2C lcd
void setup() {
.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Ready...");
lcd(3000);
delay}
void loop() {
tmElements_t tm;
.read(tm);
RTC
(
displayLCD.Year + 1970,
tm.Month,
tm.Day,
tm.Hour,
tm.Minute,
tm.Second
tm);
(1000);
delay}
void displayLCD(int Y, int M, int D, int h, int m, int s) {
char line1[15];
char line2[15];
(line1, 15, "%d-%02d-%02d", Y, M, D);
snprintf(line2, 15, "%02d:%02d:%02d", h, m, s);
snprintf.clear();
lcd.setCursor(0, 0);
lcd.print(line1);
lcd.setCursor(0, 1);
lcd.print(line2);
lcd}
▼ こちらの動画のように、現在時刻をLCDに表示することができました。
RTCのボタン電池を外さなければ、Arduinoの電源を切っても設定した時刻が継続されます。いちどArduinoの電源を落として、しばらくしてから起動して時刻が合っているか確認してみましょう。
関連記事
- ArduinoでLCDに文字表示
- 【Raspberry Pi】はじめてのI2C設定
- DS18B20の使い方|Arduino・ESP32・Raspberry Pi
- ESP32でST7735 TFT LCD液晶ディスプレイを使ってみる
- ArduinoでC++で作った自作ライブラリを使う方法