フォト
2026年1月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
無料ブログはココログ

« 本日2月22日は「猫の日」 | トップページ | arduinoがシリアル通信時にリセットされる原因が分かりました »

2014年2月23日 (日)

Arduinoで美咲フォントを使った8x8ドットマトリクスLED(3)

前回の続きです。前回から1か月も経過してしまいました。

時刻を表示するためのRTCモジュールでちょっとハマってしまいました。
バックアップ電池があるのに、電源を切るとなぜか時を刻んでくれない件です。
「DS1307のこれが仕様なのかなぁ」と思い、別モジュール等を調べていました。

ただ、こんな不便な仕様のはずはないと思い、DS1307の仕様を調べると
やはりバックアップ電池だけで時を刻んでくれるようです。

ボタン電池を抜くと時間が2000/01/01に初期化されるのでボタン電池のバックアップ
は機能しているようでした。

プログラムや回路が悪いのかと思い見直してもダメでした。

ところが、ダメ元でボタン電池を交換してみるとボタン電池だけで時を刻むようになりました。
どうも、ボタン電池の電圧が低くてデータは保持するが時刻は刻まない状態だったようです。
これで先に進めるようになりました。

ということで本日は作業再開で、外部EEPROMの書き込みツールとデバック環境を構築しました。
EEPROM AT24C1024Bにパソコンから指定したデータ(バイナリファイル)を読んで、
AT24C1024Bの任意のアドレスに配置するツールを作成しました。

シリアル通信でデータ転送を行うため、シリアルでデバックが出来ないため
LCDディスプレイを取り付けました。I2Cバス接続です。
デバック効率が良くなりました。書込み中の状況も把握できます。

フォント用のテーブルも外部EEPROMに配置しようと思っています。

Dscn2438

一応、パソコン(Linux CentOS 6.5)から書き込めるのですが、
パソコンからUSB接続でのシリアル通信をするタイミングでArduinoが
リセット(リブート)するのですが、初回は必ず通信エラーとなり、
2、3回目の接続で正常の通信が行えるようになります。

ちょっと不安定です。原因不明です。

« 本日2月22日は「猫の日」 | トップページ | arduinoがシリアル通信時にリセットされる原因が分かりました »

arduino」カテゴリの記事

AVR」カテゴリの記事

表示器制御関連」カテゴリの記事

コメント

初めまして、お世話になります。初心者です。
おかげさまで美咲フォントによる8x64ws2812(表示器)にパソコンよりのメッセージを表示することができました。
「現在日時と行事お知らせ」にしたいのですが、RTCモジュールによるシリアルプリントはできましたけれど、表示器への表示がうまくいきません。
ご教授いただけませんか。

茶々丸さん

処理としては、
RTCモジュールから取得した日時情報(整数型)を文字列に変換して
メッセージ文を作成すれば良いと思いますが
具体的にどういった処理がうまくいかないのでしょうか?

対応ありがとうございますドタバタしていた為ご迷惑をおかけしています。いろいろ調べて試行錯誤していましたが---具体的にとの事ですので。
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
Serial.println(); //ここまでは問題なくシリアルプリント出来ました
NeoMsg(####, 12, 12, 8, 100, Y_OFFSET); //ここがうまくいきません。 
  ・####へrtcデータをどうやれば良いかで止まっています。

茶々丸さん

前回の回答と同じで、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);

対応ありがとぅございます。田んぼ作業の合間の為時間がかかりますが、先が見えてきました。

たま吉様 本日挑戦しました。おかげさまで年月日時間の表示ができました。
原因はお恥ずかしいことに、初めに宣言していたyymmddにデーターが入っていなかった事のようです。
村の掲示板に使うことができそうです。
ラデオショックz80,シャープz80、シーケンサ機械語等で少しは分かったつもりでいましたが勉強が必要なようです。
ありがとぅございます。また次回ご指導をお願いいたします。

問題が解決出来てなによりです。
村の掲示板の製作、楽しいそうですね~
z80、私はPC8001で学びました。ハンアセンブルで二モニック→機械語コードの変換をやっていました。
今でも幾つかの主要命令コードは思えています。
気軽に質問してください。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Arduinoで美咲フォントを使った8x8ドットマトリクスLED(3):

« 本日2月22日は「猫の日」 | トップページ | arduinoがシリアル通信時にリセットされる原因が分かりました »