今回は、DS1307 RTC モジュールを使って、現在時刻をシリアルモニタに表示してみようと思います。
配線図
この回路図の作図には fritzing を利用させて頂いております。https://fritzing.org/home/
使用部品
- DS1307 RTC モジュール ・・・(スターターキット:Amazon購入)
https://amzn.to/43MKkpw
Arduino IDE
- 「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理」を選択。
- ライブラリマネジャーに、「DS1307RTC」と入力し、Enter。
- 「DS1307RTC by Michael」をインストールする。
- 「ファイル」>「開く」>「libraries」>「DS1307RTC」>「examples」>「ReadTest」>「ReadTest」を開く。
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 7 // DHT11センサーのデータピン
#define DHTTYPE DHT11 // 使用するDHTセンサーのタイプ
DHT_Unified dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println("DS1307RTC Read Test");
Serial.println("-------------------");
Serial.begin(9600);
// Initialize device.
dht.begin();
Serial.println(F("DHTxx Unified Sensor Example"));
// Print temperature sensor details.
}
void loop() {
// 現在時刻を取得
tmElements_t tm;
RTC.read(tm);
// 温度と湿度を取得
sensors_event_t event;
dht.temperature().getEvent(&event);
// データが有効か確認
if (isnan(event.temperature)) {
Serial.println("DHTセンサーからの無効な読み取り!"); // センサーからの無効な読み取りを警告
} else {
// 時刻、温度、湿度をシリアルモニタに表示
Serial.print("現在の時刻: ");
print2digits(tm.Hour);
Serial.print(":");
print2digits(tm.Minute);
Serial.print(":");
print2digits(tm.Second);
Serial.print(" 温度: ");
Serial.print(event.temperature);
Serial.print("°C 湿度: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
delay(2000); // 2秒待機
}
void print2digits(int number) {
if (number < 10) {
Serial.print("0"); // 1桁の場合は0を追加して2桁にする
}
Serial.print(number);
}
スケッチをコンパイルする。
画面右上部、シリアルモニタを表示させると、
現在時刻、日/月/年が表示されています。
完成です。
動画
まとめ
- ArduinoとDS1307リアルタイムクロックを使って、シリアルモニタに時刻を表示することができた。
- 表示の方法を変えることができるように、プログラミングを理解する必要があると感じた。
- Youtubeには配信していませんが、動画も掲載しました。