ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

4×4のキーパッドを試してみた

2012年04月07日 12時06分47秒 | Arduino
4×4のキーパッド Freaks KeyPad - 4x4 button を試してみました。
メーカーのページを見ると 8-pin 0.1" pitch connectorとありますが、実際は9ピンです。
この9ピンが実はくせ者でした。


端子に G A B C D E 1 2 3 4 と書いてあるので、縦にABCD、横に1234だと想像出来ます。
そしてGは当然GNDだと思うわけです。

実際、メーカーサイトの写真も、そうなっています。
ところが、この接続だと、メーカーサイトからリンクしている
Arduino PLAYGROUNDのKeypadスケッチは全く動作しません。

謎解きをしましょう。
おそらくこれは電子回路のことをよく分かっていない人が設計したのでしょう。
基板のパターンを見るとそのことが読み取れます。

まず、タクトスイッチの内部でつながっているピンを、わざわざパターンでつないでいます。
なぜ内部でつながっているか、そのことを全く理解していないことが分かります。
わざわざつないだのは「念のため?」(ソフト屋の発想?)でしょうか?
回路的には、そんなことは全く必要有りませんし、回路図を描いて見れば冗長なことは明らかです。

回路図はおそらく、こうですから、

これをわざわざこのようにする必要はありません。


さらに、もう一つは抵抗がキーパッドに実装されている点です。
しかも、Gと書いているのはプルダウンのつもりでしょう。
つまり、Hでスキャンしてプルダウンで受け、スイッチを押した時にHを得ようというつもりでしょう。
これがソフト屋の発想だと思うわけです。

では、ハード屋の発想ならどうするか。
まず、スイッチはLアクティブで受けます。
そしてプルアップ抵抗はキーパッド側に付けるのではなく、マイコンの近くに実装します。
それは、キーパッドを外してもプルアップを効かせるためです。
これにより、電源線をキーパッドまで延々と引き回すことなく、しかもピンが1本削減できます。

回路はもちろんこうですし、

冗長性もありあせん。


では、なぜタクトスイッチの端子が内部でつながっているか、それを説明しましょう。
実装の時に2本足より4本足の方が安定すると言う理由も有るでしょう。
でもそれだけでは内部でつながっている理由にはなりません。
その理由はズバリ、「キーマトリクスが片面基板で作れるようにジャンパの役目をするため」です。
パターンを描いてみましょう。

1層だけでパターンが引けています。

昔のVTRなどの本体を開けて見たことがある人なら分かると思いますが、
パネルの基板は実装密度が低く、片面のベーク基板が用いられています。
つまり、片面ベークでピン数を減らし、出来るだけコストを抑えることが量産品では重要な事なのです。

そろそろ結論にいきましょう。
先の「Keypadスケッチを使うためにはGのピンは使わない」これが正解。
抵抗がぶら下がっていますが、ほっときましょう。

おそらく、スケッチを書いた人はハード屋さんです。
だから、Lでスキャンしてプルアップで受けます。プルアップはマイコン内部のプルアップを使用しています。

とにかく、この基板を設計した人は、いらんことせん方が良かったと言うことです。
アホな考え休むに似たりとはよく言ったものですが、この場合実害が有るので困ったものです。

さらにもう一つ、Keypadスケッチにも問題があります。
CustomKeypadはまともに動きません。
下から2列目が入力出来ません。
これは、D1を入力に使っているからです。
このピンはTX1と兼用なので、出力としては使えますが、入力には使えません。

Arduinoにはこの様にちょっと抜けたところがあり、それが放置されているので気をつけないといけません。
日本ではあり得ないと思うのですが、イタリアンですからねぇ。
さらに、ライブラリの中身を見るとチャタリング除去も怪しげですが、見なかった事にしておきます。


これも、他山の石としたいと思います。
ハードもソフトも。