電子工作

Arduino#10 DS1307リアルタイムクロックを使って、シリアルモニタに時刻を表示してみた‼

今回は、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には配信していませんが、動画も掲載しました。