2011年5月18日水曜日

Arduino にスイッチをたくさんつけたい


Arduino Uno には、スイッチを何個繋げられるでしょうか?
少し前に、AppleStore のイベントで、「カスタネット30個をスイッチにして、Quartz Composer に送る」という事をやったのですが、そのときはMac との接続に Ethernet Shield を使っていた事もあり、スイッチ 30 個の読み取りに Arduino を 3台も使っていました。

その当時は気づいていなかったのですが、Analog ポートも普通のDigital ポート として使う事が出来ます。Arduino Uno のI/O は Digital Port が D0-D13 までの14 個、Analog Port がA0-A5 の計20個あります。D0,D1 は通信に使うので、残り18個にスイッチを繋いでみましょう。

今回も Pduino を使います。



Pduino は右上のスイッチパネルのような部分で、各ポートの設定を行うことができます。
A0-A5 は16-21 に対応しています。2-13(D2-D13), 16-21(A0-A5) をすべてインプットにします。

内蔵プルアップをON にします。
[digital N 1( というメッセージでポートN のプルアップをON にすることができます。

ここで、画像の中に [digital 13 1( が無いのには理由があります。
Arduino Uno のD13 はLED が繋がっています。このままプルアップしても、LED に電流が吸い取られてしまい、High になりません。
そこで、この LED をプルダウンとみなし、D13 だけ正論理にします。
(他のスイッチはGND に接続しますが、D13 だけ+5V に接続します。)

回路図、というほどのものではありませんが、典型的なマイコンのスイッチ接続と、今回(Arduino-Uno) の接続図。



Pduino に戻って、digital 値の取り出し口に [route] パッチを追加し、16-21 の値を取り出せば完成です。必要に応じて、D13 を反転させると良いでしょう。
(無理にD13 を使う必要もないですが、、、)

これ以上増やす場合は、PC のキーボードと同様の キーマトリックススキャン方式か、先述のイベントで使った Arduino 連結方式 などが考えられます。これらも今後紹介する予定です。

0 件のコメント:

コメントを投稿