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