ピンアサインを替えただけではこのLCDライブラリは動かないのだった。このあいだADCの入力ピンをノイズを避けてPA0から一番最後(PA7)に移し、LCDのデータラインをひとつづつずらした。ヘッダーファイルで自由にピンを選べないことはわかっていたが、連続しているので大丈夫と思っていた。ソースを確認すると、それでも駄目で、きっちりLCD出力の4ビットデータピンはポートのbit4からbit7にないと動かないことがわかる。やれやれ、LCDライブラリも改修が必要なのだけど時間がない。ADCピンを戻す方が簡単なのでこちらを替え、とりあえずLCDのピンアサインを連続にして先を急ぐ。このLCDライブラリもヘッダーファイルの変更だけで動く移植性の高いコードにしてやる必要がある。LCDに表示がされるようになった。ところが、ADCポートに頻々とノイズが入る。測定は無茶苦茶になる。LCDを加えて起きていることは間違いない。LCDも立派なデジタルディバイスなので派手なノイズを出しているはずだ。これはやっかいなことになってきた。オシロで波形を見てみた。なんと、目一杯の電圧がピンにかかっている。ありゃ、これはノイズではない。ピンに何かのデジタル出力が出ている。LCDのポートADCのポートは同じでPORTAでピンが違うだけだ。LCDの処理で、ADCのピンをいじるようなことをしているのだろうか。目を皿のようにしてコードをチェックするがおかしなところはない。そのとき何気なく画面をスクロールした。あーっ、消したはずのLEDを点灯させる制御コードがまだ残っているところを見つけた。現在のADCのピンは、前はLEDを制御していた出力ピンで、ステートメントは全部消したはずだったが、ひとつ残っていた。やれやれ、デバッグは外へ外へ目を向けなさいと、昔、後輩に良く言って聞かせていた教訓を思い出した。ブレッドボード上だけれど、リズムキャプチャーの試作版が完成した。文字がブリンクして誤差を表す表示もちゃんと動く。平均の回数を5回にしかとっていないので連続的に正しいところへ戻っていく様子を見せることは難しい。目安だからこんなものか。それより解決しなければならないことがある。LCDドライバーの位置指定コマンドがうまく動かないときがあり、表示がずれる。このコマンドもビジーフラグを見ているのだが、どうも連続してデータが来ると正しいポジションに移らない。このために文字が画面上に残って見苦しい。公開できるレベルにない。こいつを退治したところでソースだけでも公開しよう。ケースの加工にいそしむ(10/10/08)実装するケースは以前、AC電力ロガーにしようと買ってあった、タカチのSW-100(100×65×45)を使うことにしている。LCDを上面につける十分な高さがある。電源に単3三つを使うので基板が半分以下になり、オペアンプなどのアナログ部が全部はいるか少し心配である。このあいだ東急ハンズで買ってあった、「ピラニア糸鋸」でいよいよLCDの窓枠工作に入る。この糸鋸、実演販売で、「この糸鋸の刃は、こーんなに曲げても折れません!」と実演者が大見得を切った途端、「ポキッ」と見事に折れ、みんなが固唾を飲んでどう対応するか見ていたら、「いや、まあこういうこともハハハ」と見事にその場を納めたのが気に入って、つい買ってしまったのだが、刃の断面が円形でどの方向にでも切れるというのが売りである。糸鋸の取り付け金具が長さ1センチ以上あり(11×3mm)、それだけの穴を開けないと、LCD表示フレームのような中空の窓は開けられない。金属でなく合成樹脂なので気楽に電動ドリルで適当に穴を開けて刃を通し、所定の大きさに切っていく。ピラニアと名づけるだけあって気持ちよく切れる。このあと作る予定のFG(ファンクションジェネレーター)の方はアルミなのでこうはいかないだろうが、楽しみである。枠は大雑把に切り抜いてあとはやすりで整形する。LCDの固定ネジの穴あけは緊張する。ドリルスタンドのお陰で作業はとても楽だ。このドリルスタンドは最初穴あけだけでなく、丸鋸などの切削作業にも使おうと考えていたのだが、ドリルだけの用途でも十分価値がある。いう化粧面での穴あけは失敗が許されないだけにその効果は絶大だ。やすりの整形は気を遣う。ケースの表面に張った養生テープの上に鉛筆で正確に枠を書いてそれを目安に削っていくのだがどうしても製図そのものと現物とは誤差が出ているので、現物が入ったときはだいたい大きく削りすぎてしまっている。今度のLCDのように本体にベゼルが固定されているとケースとの隙間が目立ってしまうが仕方がない。スイッチやマイクはまだだが、LCDの表示枠だけ完成した。ありあわせの2ミリの丸ねじ(本番は平底2.5ミリの予定)でLCDを固定し、とりあえず配線してブレッドボードにつけてみる。おお、塩梅が良さそうだ。文字も大きく見やすい。スイッチなどの穴あけはLEDブラケットとお揃いの形にするため今度の買い物までおあずけである。LCDライブラリとアートワーク(10/11/08)LCDライブラリを書き直そうと、PCの中を整理していたら、これまでダウンロードしてあったLCD表示ソースコードが4つも出てきた。Webに出回っているソースは、7年前にkusunokiさんが公開されたソースがどうもオリジナルらしく、そこから色々な派生コードが生まれている。AVR用でなかったので良く見ていなかったのだが、何と、すんさんのサイトで公開されているMSP430用のLCDライブラリは、ビジーフラグを見て表示をしており、しかもデータビットが不連続でも動くようになっている。それに公開されたのは2年近くも前だ(1/14/07)。AVR用でなかったのでうっかり見落としていた。いう感じもしないわけではないが、まあ、あれはAVR用ではないし、AVR用として公開しても悪くはないだろうとソースをダウンロードできるようにした。このソースはこのあいだのアドレス指定コマンド(lcd_gotopos())の直後、表示させるとアドレス指定が効かず、次のカーソルに表示してしまうバグは解消してある。ビジーフラグはRead/Write処理だけ有効で、ハングせず表示はされるが、正しいRAMアドレスがセットされないようだ。公開するソースのもうひとつの売りは、制御ピン、データピンが完全にヘッダーファイルの定義だけで、ポートに関係なく、自由に設定できることである。コード量は元のソースより100バイトほど増えるのが難点と言えば難点だが、ソースをいじる必要がない完全なライブラリとなっているので汎用性は高いと思う。本題のリズムキャプチャーは、スイッチの買い物待ちでハード工作が一段落したので、基板のアートワークにとりかかった。懸念したとおり、アナログ回路はCR部品が多く、レイアウトに苦心する。LCDとマイク、スイッチなどは上蓋に固定し、そのあいだを14ピンのピンコネクターで接続する。Tiny861は、アナログ用のVccとGNDがあるので、デジタル部と完全に回路を分割できる。アートワークはそれだけ面倒になる。分離できると言っても今度の電源はUM3×3の共通電源なので、まあ、気休め程度だが、一応、LCDを含めたデジタル部とアナログ部のVccとGNDは電池のコードのところまで分けてレイアウトすることに成功した。出来上がってみるとかなりな集積度だ。掲載した手書きのアートワークは少しインチキがあって、抵抗2つが正規の形をしていない。描き直すのが大変なので実体配線のとき補正する予定だ(こういうのが落とし穴になるのだが)。ここに自由にポート、ピンを選べるLCDライブラリのソースとヘッダーファイルを置きます。「AVR」カテゴリの記事ソフトI2Cはクロックストレッチまで手を出してあえなく沈没(2017.09.02)オシロのテストどころかソフト開発で大はまり(2017.07.26)超音波方式の人感センサーI2C化と新しいオシロ(2017.06.29)motionの動体検知はRaspi3の電源が安定しない(2017.04.16)赤外線学習リモコンはデータ再現で挫折したまま進まず(2016.07.21)コメントコメントありがとうございました。脈拍計のセンサーは何でやっているのでしょうね。それとデータを取りこぼしたときに補正するインテリジェントなロジックが入っているはずです。脈拍が1/2になってあわてることになりますから。01時25分これを発展させて脈拍計に出来そうですね。18時43分コメントを書く名前:メールアドレス:(ウェブ上には掲載しません)アドレス(URL):この情報を登録するコメントは記事投稿者が公開するまで表示されません。リズムキャプチャー完成。