電子工作

Arduino#11 DS1307RTCを使って、液晶ディスプレイに現在時刻を表示してみた‼

今回は、DS1307RTCを使って、液晶ディスプレイに現在時刻を表示してみようと思います。

プログラミングはAIにお願いしました。

配線図

この回路図の作図には fritzing を利用させて頂いております。https://fritzing.org/home/

使用部品

  • DS1307 RTC モジュール       ・・・(スターターキット:Amazon購入)
  • LCD 1602 Module(液晶ディスプレイ)・・・(スターターキット:Amazon購入)
  • シリアルインターフェースモジュール  ・・・(Amazon購入)
https://amzn.to/43MKkpw
https://amzn.to/4azm4ZY

Arduino IDE

AI(チャットGPT)にお願いしてみました。

「Arduino DS1307RTCを使って、液晶ディスプレイに現在時刻を表示 2行 

1行目年/月/日  2行目時刻表示」と入力し、送信。

あっ、という間に、答えが返って来ました。

スケッチをコピーして、Arduino IDEにペースト。


#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>

RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2); // アドレス 0x27、16列2行の液晶ディスプレイに合わせて設定してください

void setup() {
  lcd.begin(16, 2);
  Wire.begin();
  rtc.begin();
  
  // RTCが初期化されていない場合は、次の行のコメントを解除して現在の日付と時刻を設定します
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  lcd.setCursor(0, 0);
  lcd.print("        "); // 行の最初に空白を表示してから時刻を表示するために初期化

  lcd.setCursor(0, 1);
  lcd.print("        "); // 行の最初に空白を表示してから時刻を表示するために初期化
}

void loop() {
  DateTime now = rtc.now();
  
  lcd.setCursor(0, 0);
  lcd.print(now.year(), DEC);
  lcd.print('/');
  lcd.print(formatDigits(now.month()));
  lcd.print('/');
  lcd.print(formatDigits(now.day()));
  
  lcd.setCursor(0, 1);
  lcd.print(formatDigits(now.hour()));
  lcd.print(':');
  lcd.print(formatDigits(now.minute()));
  lcd.print(':');
  lcd.print(formatDigits(now.second()));
  
  delay(1000); // 1秒ごとに更新
}

// 1桁の数字を2桁の0埋め形式に変換するヘルパー関数
String formatDigits(int digits) {
  if (digits < 10) {
    return "0" + String(digits);
  }
  return String(digits);
}

スケッチをコンパイルする。

成功です。

まとめ

  • ArduinoとDS1307RTCを使って、LSD液晶ディスプレイに現在時刻を表示しました。
  • プログラミングは、またもChatGPTに頼りました。AIは恐ろしすごいです。