電子工作

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

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

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

配線図

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

使用部品

  • DS1307 RTC モジュール       ・・・(スターターキット:Amazon購入)
  • LCD 1602 Module(液晶ディスプレイ)・・・(スターターキット:Amazon購入)
  • シリアルインターフェースモジュール  ・・・(Amazon購入)
Amazon.co.jp: WayinTop Raspberry Pi用センサーキット 電子工作キット スターターキット ラズベリー パイ用 超入門 初心者向け 中級者向け 学習キット 電子部品セット プログラミング JAVA C++ Python 日本語チュートリアル : 産業・研究開発用品
Amazon.co.jp: WayinTop Raspberry Pi用センサーキット 電子工作キット スターターキット ラズベリー パイ用 超入門 初心者向け 中級者向け 学習キット 電子部品セット プログラミング JAVA C++ Py...
Amazon.co.jp: LCDアダプターコンバーターモジュール 3-6V IIC I2C TWI SPI シリアルインターフェイスボードポート LCD2004 LCD1602 アダプタプレート LCD アダプタコンバータモジュール IIC/I 2 C/インターフェースLCD 1602液晶スクリーンシリアル For PCF8574AT/PCF8574T Arduino 用 : パソコン・周辺機器
Amazon.co.jp: LCDアダプターコンバーターモジュール 3-6V IIC I2C TWI SPI シリアルインターフェイスボードポート LCD2004 LCD1602 アダプタプレート LCD アダプタコンバータモジュール II...

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は恐ろしすごいです。