Objects迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。ArduinoにRTC-8564をつなぐ(2)回路をちょこっと変更2016-04-30バックアップ用の電気二重層コンデンサの減りがやたらと早い、半日と持たない。おかしいと思ってたら、理由がわかりました。RTCのCLKOUTを直接ArduinoのD2入力につないだのが原因です。電源をオフにするとRTCのCLKOUTから入力保護用のダイオードを通して電流が流れていたようです。ATmega日本語データシートの44ページから引用します。RTCのTimerを使ってINTピンから割り込みをかければいいのでしょうが、Timerを後で使う余地を残しておきたいのと、スケッチ書き換えがちょっと面倒(汗)なので、手持ちにあった2N7000を使いました。0ArduinoにRTC-8564をつなぐ(1)2016-04-30Arduinoに秋月のRTCモジュールをつないでみました。前に買ったものの、少しPSoC1で試したままで放置してました。デジット6行16桁LCDの一番上の行に日時を表示してやろうと思い、引っ張り出してきました。プルアップ抵抗に無駄に金属皮膜使ってますが、使わなくなった実験基板から外したものです、カーボンで充分、なおRTCモジュールのプルアップ抵抗は使いません。ArduinoにRTC-8564をつなぐのは、既に多くの方がネット上で公開されてます。今回はこちらの記事を主に参考にさせていただきました。回路図でRTCのCLKOUTからArduinoのD2につないでるのは割り込みでRTCを読み込むためです。CLKOUTを1Hzに設定し、両エッジで割り込みをかけます。0.5秒ごとに割り込みがかかります。1秒ごとにしないのは時間表示のコロンを1秒間隔で点滅させたいからです。シリアルモニタの出力。()内の数字は曜日です、0が日曜、1が月曜・・・・です。0.5秒で割り込みをかけてるので同じ表示が二回出てます。日時の設定はシリアルモニタから行います。2016年4月29日、13時25分15秒に設定したければ160429132515と打ち込みます。こちらの記事を参考にしました。苦手な割り込み処理を使ったものだから、悪戦苦闘させられました。RTC-8564とはI2C接続ですからWireライブラリを使うのですが、Wireライブラリで割り込みを使ってるようで、1Hzクロックの割り込み処理内でWireライブラリを使ったらハングしました。当初理由がわからず、あちこち検索して何とか解決できました。他にも訳のわからんトラブルに見舞われましたが、どうにか動いてるようです。スケッチはあちこちの記事からの合体みたいなもので、変数名のつけ方が無茶苦茶だし、スパゲッティプログラムだし・・・。016桁6行7セグメントLCDを試す(6)アドレスの調査2016-04-24間違いがあるかもしれません、念のため。セグメントアドレスの調査の追加。白文字がアドレス、黄文字はそのアドレスのdpビットに割り付けられていることを示します。私の場合、一番上の行から順にrow1row2row3row4row5row6と呼ぶことに決めました。以前はデータシートのCS番号で呼んでたんですが、ややこしいので変更しました。変態的^^;;なアドレス配置。(18,19)から始まり(30,31)、(0,1)・・・・(16,17)となってます(10進表記)これを調べるのにスケッチを書きました。シリアルモニタからコマンドを打ち込みます。-(マイナス)で全画面クリア行(1桁)、アドレス(2桁)、データ(2桁)の5桁の数値を入れると対応するセグメントが表示されます。下の例ではクリアした後11115と打ち込んでます。1行目、アドレスは11、データは15という意味です。(10進表記)するとこうなるわけです。016桁6行7セグメントLCDを試す(5)2016-04-23説明が手抜きです、悪しからず^^;;7セグメントパターンを作成しました。エクセルを使った簡単なパターンエディタで作成。間に合わせですが手計算ではやってられません。条件付き書式を使います。セグメントaをMSBとし、以下順にb、c、dp、f、g、e、dと並べてます。Arduinoとの接続、シリアルモニタを使うので配置変更。016桁6行7セグメントLCDを試す(4)2016-04-21このLCDはデジットで手に入れましたが、共立エレショップでも扱ってます。7セグメント液晶ディスプレイ簡易資料(PDF)がダウンロードできますし、動画もあります。この動画ですが、上の行から順に左から右へと表示されていきますが、8秒辺りで4行目を表示する際に、左から5番目のセグメントが表示され、そこから左へ表示が進んでいるのがわかります。前回までは全セグメントの表示と消去が出来るだけでした。基本的な接続が出来るようになっただけで、意味のある表示をさせるためにはさらに調べる必要があります。7セグメントですから7ビット必要です。HT1621のメモリは4ビット単位ですから、メモリは2つで一組になります。データシートから引用します。「メモリ番地は画面左側が下位になっています。」とあります、一番左の7セグメントのアドレスが0、1で次が2、3・・・一番右が30、31(10進表記)となっているはずなのですが、一部に違いがありました。上から4行目と5行目はそのようになっていません。4行目を調べた結果です。白文字がアドレスです。上に書いた動画のちょっと変な部分と一致します。これではやりにくいので、4行目と5行目にアクセスするときにはアドレステーブルを作って変換することにしました。今実験しているスケッチから引用します。変数のつけ方がデタラメなんでわかりにくいですが、CS3が上から4行目(下から3行目)、CS2が上から5行目(下から2行目)です。23};次はセグメントパターンを作って何とか数字の表示までいきたいです。016桁6行7セグメントLCDを試す(3)Arduinoにつないでみる2016-04-17今まではPSoC1で試してたのですが、Arduinoにつないでみました。いうコントローラが6個のってます。4ビットのメモリーが32個あるので、128ビットです、各ビットが各セグメントに対応しています。各HT1621が各行をコントロールしてます。データシートにある基本的な接続方法です。