Charry-charry工房(チャーリー・チャーリーコウボウ)

50歳の手習い
(県立秋田工業高校 機械科卒業後、40年目に自分用の旋盤・フライス盤を所有することに)

2023OCT23 RTC の変数はmyRTCにしよう。

2023-10-23 20:21:00 | arudino
リアルタイムクロックでは大変苦労致し
ました。
それは分からないから。

いくらやっても時計を合わせることがで
きませんでした。
まだ、正確な時間を表示させることが出来
る訳ではないのですが、1分位の乖離の時
計をなんとかシリアルモニタで確認するこ
とができました。
RTCに直接書き込むことができれば、時
計合わせが完了すると思われます。

いろいろなHPを見ましたが、私みたいに
苦労している人は居ないようでした。
私の場合は
変数にRTCと記載するとだめなようだと
言うことが分かりました。
よって、変数を
myRTCにしました。
これによって、なんとか解消したもようです。


今日の先生は
https://zenn.dev/megeton/articles/73051700566574
zenn様
実時間モジュールの使い方 

このRTCを変数に使わないようにとは
英語のQ&Aでも掲載されておりました。

スケッチは次のとおりです、

#include <DS3232RTC.h>
#include <TimeLib.h>

DS3232RTC myRTC;

void setup() {
Serial.begin(9600);
myRTC.begin();
setSyncProvider(myRTC.get);
if (timeStatus() != timeSet) {
Serial.println("Unable to sync with the RTC");
} else {
Serial.println("RTC has set the system time");
tmElements_t tm;
tm.Year = CalendarYrToTm(2023); // 2023年
tm.Month = 10; // 10月
tm.Day = 23; // 23日
tm.Hour = 20; // 19時
tm.Minute = 07; // 53分
tm.Second = 0; // 0秒
myRTC.write(tm);
}
}

void loop() {
char str[80];
tmElements_t tm;
myRTC.read(tm);
sprintf(str, "%04d/%02d/%02d %02d:%02d:%02d", tmYearToCalendar(tm.Year) , tm.Month, tm.Day, tm.Hour, tm.Minute, tm.Second);
Serial.println(str);
delay(1000);
}

ライブラリの選択では本当に迷いました。
結局
#include <DS3232RTC.h>
が一番良かったです。

このライブラリは
arudino
→libraries
  →DS3232RTC(ここではUNIX対応なので大文字小文字が関係あり)
  →src
          →ヘッダファイル
とならないとarudinoは認識しないようです。

まぁなんとか遊んでおります。
こんなに固執したことが今まであり
ませんでした。
次はこれをシリアルモニタではなく
LCDに表示させようと思います。

いやぁー わがらねぇ!
でもおもへぇ!

明日は待ちに待った魚釣りだぁ!
気温は8度とのこと沢山重ね着して
参戦します。



最新の画像もっと見る

コメントを投稿