コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark


さて、前回(といってもかなり前ですが!) I2C接続で表示できるLCDモジュールを作製した。
これのシリーズとして今度は I2C 経由で読み取れるボタンと、LEDチカチカテストができるコンソールパネルを作製したいと思う。


以前なんとなくLEDとタクトスイッチが対になったモジュールを作ったらこれが便利だった物で。
ちょっとしたテストとか評価とかの時にLCDモジュールとセットで使うと、もうそれだけで簡易アプリになったりするのだ。
ただ、LCDモジュールもスイッチもベタで使うとGPIOを沢山消費してしまう。他のテスト用の足がなくなってしまったりするのだ。


そこでこういったテストコンソールは全部 I2C 等のシリアルインターフェースでぶら下げてしまえばよいのではないかと考えるにいたった。
I2C であればアドレスを持つので、適当にハブかなんかを使って繋いでいけば 127個まで繋いでも 2線しか消費しないで済む。

というわけで、LCDモジュールに続き 8個の LED と 8個のボタンスイッチを持つテストコンソールを作製する。
LED内蔵スイッチを使って、チカチカとスイッチ入力の両方を行うのが目標だ。


いきなり 8個版をつくるのもしんどいのでまずは小手調べに 3個版を作ることにした。
無理せず簡素な規模。


GPIO が 0番、 2番、 4番 と連続していないのが難点だが、無理しない方針のおかげで片面基板ジャンパ無しで配線することができた。
とりあえず問題無く動作。

Download: i2c_button_console.zip
PSoC CY8C27443 用のプロジェクト。

ソフトウエアの解説。
I2C の Slave アドレスは 2Eh。
1バイト読み出しで、ボタンのOn/Off 状態が 8bit 値で取れる。1で押し下げ。
1バイト書き込みで、LED の On/Off 状態を 8bit 値で設定する。
書き込みは1~9バイトを許容していて、2バイト以上のとき、その値は対応する LED の PWM 値になる。つまり、8つのLEDそれぞれに明暗を 255 段階でつけることが可能となっている。
On/Off は PWM 値と別に設定することになっているので、On しても PWM値が0だと点灯しない。
とりあえず最初は PWM に FFh を書き込んでおくと良いのではないだろうか。

8つの PWM 全部ハードウェアモジュールだというのが PSoC ならではの贅沢w


次は 8個版。

Leave a Reply