Arduinoで美咲フォントを使った8x8ドットマトリクスLED(3)
前回の続きです。前回から1か月も経過してしまいました。
時刻を表示するためのRTCモジュールでちょっとハマってしまいました。
バックアップ電池があるのに、電源を切るとなぜか時を刻んでくれない件です。
「DS1307のこれが仕様なのかなぁ」と思い、別モジュール等を調べていました。
ただ、こんな不便な仕様のはずはないと思い、DS1307の仕様を調べると
やはりバックアップ電池だけで時を刻んでくれるようです。
ボタン電池を抜くと時間が2000/01/01に初期化されるのでボタン電池のバックアップ
は機能しているようでした。
プログラムや回路が悪いのかと思い見直してもダメでした。
ところが、ダメ元でボタン電池を交換してみるとボタン電池だけで時を刻むようになりました。
どうも、ボタン電池の電圧が低くてデータは保持するが時刻は刻まない状態だったようです。
これで先に進めるようになりました。
ということで本日は作業再開で、外部EEPROMの書き込みツールとデバック環境を構築しました。
EEPROM AT24C1024Bにパソコンから指定したデータ(バイナリファイル)を読んで、
AT24C1024Bの任意のアドレスに配置するツールを作成しました。
シリアル通信でデータ転送を行うため、シリアルでデバックが出来ないため
LCDディスプレイを取り付けました。I2Cバス接続です。
デバック効率が良くなりました。書込み中の状況も把握できます。
フォント用のテーブルも外部EEPROMに配置しようと思っています。
一応、パソコン(Linux CentOS 6.5)から書き込めるのですが、
パソコンからUSB接続でのシリアル通信をするタイミングでArduinoが
リセット(リブート)するのですが、初回は必ず通信エラーとなり、
2、3回目の接続で正常の通信が行えるようになります。
ちょっと不安定です。原因不明です。
« 本日2月22日は「猫の日」 | トップページ | arduinoがシリアル通信時にリセットされる原因が分かりました »
「arduino」カテゴリの記事
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
「AVR」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました(2018.10.30)
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
「表示器制御関連」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる(2024.03.14)
- Raspberry Pi Pico MicroPython用のマルチフォントライブラリ(2023.02.09)
- MicroPython(Raspberry Pi pico)で8x8ドットNeoPixcel文字表示(2023.02.08)
コメント
« 本日2月22日は「猫の日」 | トップページ | arduinoがシリアル通信時にリセットされる原因が分かりました »

初めまして、お世話になります。初心者です。
おかげさまで美咲フォントによる8x64ws2812(表示器)にパソコンよりのメッセージを表示することができました。
「現在日時と行事お知らせ」にしたいのですが、RTCモジュールによるシリアルプリントはできましたけれど、表示器への表示がうまくいきません。
ご教授いただけませんか。
投稿: 茶々丸 | 2025年3月13日 (木) 11時51分
茶々丸さん
処理としては、
RTCモジュールから取得した日時情報(整数型)を文字列に変換して
メッセージ文を作成すれば良いと思いますが
具体的にどういった処理がうまくいかないのでしょうか?
投稿: たま吉さん(管理者) | 2025年3月14日 (金) 08時34分
対応ありがとうございますドタバタしていた為ご迷惑をおかけしています。いろいろ調べて試行錯誤していましたが---具体的にとの事ですので。
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
Serial.println(); //ここまでは問題なくシリアルプリント出来ました
NeoMsg(####, 12, 12, 8, 100, Y_OFFSET); //ここがうまくいきません。
・####へrtcデータをどうやれば良いかで止まっています。
投稿: 茶々丸 | 2025年4月 9日 (水) 22時02分
茶々丸さん
前回の回答と同じで、RTCモジュールから取得した日時情報(整数型)を文字列(char*)に変換して
メッセージ文を作成すれば良いです。
具体的には、RtcDateTimeのメソッドで月、日などの整数値を取得できるので、
year = now.Year();
month = now.Month();
day = now.Day();
hour = now.Hour();
mon = now.Minute();
sec = now.Second();
その整数値から####の文字列を組み立てれば良いですね~
printDateTime()の関数内のプログラムソースを見ればsnprintf_P()で組み立ていることが分かると思います。
ArduinoならStringオブジェクトを使った方が文字列の組み立ては楽かもです。
char* msg;
String str;
str = String("今日は") + year + "年" + month + "月" + day + "日です。";
msg = (char *)str. c_str();
NeoMsg(msg, 12, 12, 8, 100, Y_OFFSET);
str = String("時刻は") + hour + "時" + min + "分" + sec + "秒です。";
msg = (char *)str. c_str();
NeoMsg(msg, 12, 12, 8, 100, Y_OFFSET);
投稿: たま吉さん(管理者) | 2025年4月10日 (木) 06時55分
対応ありがとぅございます。田んぼ作業の合間の為時間がかかりますが、先が見えてきました。
投稿: | 2025年4月12日 (土) 21時20分
たま吉様 本日挑戦しました。おかげさまで年月日時間の表示ができました。
原因はお恥ずかしいことに、初めに宣言していたyymmddにデーターが入っていなかった事のようです。
村の掲示板に使うことができそうです。
ラデオショックz80,シャープz80、シーケンサ機械語等で少しは分かったつもりでいましたが勉強が必要なようです。
ありがとぅございます。また次回ご指導をお願いいたします。
投稿: | 2025年4月13日 (日) 15時27分
問題が解決出来てなによりです。
村の掲示板の製作、楽しいそうですね~
z80、私はPC8001で学びました。ハンアセンブルで二モニック→機械語コードの変換をやっていました。
今でも幾つかの主要命令コードは思えています。
気軽に質問してください。
投稿: たま吉さん(管理者) | 2025年4月13日 (日) 18時26分