2015年08月10日 | Ver. 1.00公開。 |
アナログI/Oピン一つで使える抵抗分圧方式のキーパッドのArduino用ライブラリ
マイコンで組み込み機器を作っている時に、キーパッドを付けて、数値の入力などをしたい事があります。キーパッドの読み取りは、キーマトリックス方式を用いることが一般的です。例えば、4X4のキーパッドを読み取るなら、図1に示すように、行方向に4本、列方向に4本のGPIO線を割当て、それらの交点にスイッチ(場合によってはダイオードも)を配置するのが一般的です。
図1の回路は、16個のGPIOピンを使う単純な回路よりはましではありますが、それでも8本ものGPIOピンを使ってしまいます。マイコンは、ピン数が増えると、価格が急激に上がる物が多いので、できればもう少しピン数を減らせる方法があれば便利です。
一方で、安価な家電製品に搭載されるマイコンでは、キーパッドの読み取りに、押すスイッチによって出力電圧が変わる抵抗分圧回路の出力を、A/D変換入力に接続して読み取る回路(図2参照)がよく使われます。この回路では、たったひとつのI/Oピンで、複数のスイッチの状態を監視できますが、(1)同時に複数のスイッチを押すと、その内のひとつしか読み取れない、(2)抵抗値の誤差やA/D変換の誤差を考えるとあまり多くのスイッチを接続できず、多くても5つくらいのスイッチで使われる事が多い、という欠点があります。
抵抗分圧方式の出力電圧の発生要因を詳しく考察したところ、抵抗値をよく吟味することにより、5%の精度の抵抗でも最大20個程度のスイッチを読み取れる事が分かりました。この話は、理論的な考察をついてはI/Oピン一つで読み取れるキーパッドの製作という記事で紹介しました。
このページで紹介するResKeypadライブラリは、抵抗分圧方式のキーパッドのスイッチの状態の取得をするための、Arduino用のライブラリです。A/D変換値から押されたスイッチへの変換や、チャタリング処理などは、ライブラリ内部で行いますので、ResKeypadライブラリを使えば、理論的な背景を十分理解していなくても、手軽に抵抗分圧方式のキーパッドを使う事ができます。
ResKeypadライブラリは、多くの8ビットのArduinoおよび一部の32ビットArduinoで動作します。実際に動作確認が取れたArduinoは、次の通りです。
ResKeypadライブラリは、Arduino IDE 1.0.1~1.0.6、1.6.X、1.7.X (Xは任意の数字)で動作します。
ResKeypadライブラリの使い方を詳しく説明したユーザーマニュアルをご覧になるには、次のリンクをクリックしてください。
ユーザーマニュアルはまだできていませんが、このページをみるとResKeypadライブラリの使い方がおおむね分かります。
ResKeypadライブラリの関数や定数の一覧表が載ったリファレンスマニュアルをご覧になるには、次のリンクをクリックしてください。
ResKeypadライブラリをダウンロードするには、以下のリンクをクリックしてください。
ResKeypadライブラリのインストールの方法を、Arduino IDE 1.0.5以降をお使いの場合と、Arduino IDE 1.0.4以前をお使いの場合の2つのケースに分けて説明します。
Arduino IDE 1.0.5以降(1.6.Xや1.7.Xも含む)をお使いの場合は、ダウンロードしたResKeypadライブラリのZIPファイルを解凍することなく、Arduino IDEにインストールしていただけます。
まず、Arduino IDEを起動し、スケッチ→ライブラリを使用→ライブラリをインストール...メニュー(Arduino IDE 1.7.6の場合)を選んでください。なお、メニューの表記がArduino IDEのバージョンにより一定していませんのでご注意ください。下のスクリーンショットを参考にメニューを選んでください。
そうすると、インストールするライブラリのZIPファイルを選択するダイアログボックスが開きますから、ResKeypad_XXX.zip (XXXの部分はバージョンによって異なる)を選択して、開くボタンをクリックしてください。ライブラリがインストールされます。
ライブラリが無事インストールされかを調べるには、スケッチ→ライブラリを使用メニュー(Arduino IDE 1.7.6の場合)に、ResKeyPadが追加されている事を確認してください。なお、メニューの表記はArduino IDEのバージョンにより一定しませんので、下のスクリーンショットを参考にしてください。
Arduino IDE 1.0.4以前をお使いの場合は、ダウンロードしたResKeypadライブラリのZIPファイルを、一旦解凍してからインストールする必要があります。
私がWindows環境で開発しているので、それを前提に説明します。
まず、何らかのソフトを使って、ZIPファイルを解凍してください。(Windows標準の圧縮フォルダ機能を使ってもよい)そうすると、ResKeypadというフォルダができるはずです。
Arduinoのライブラリのインストール先は、スケッチブックの保存場所(標準では"マイドキュメント\Arduino")の下のlibrariesフォルダとなります。スケッチブックの保存場所が分からない場合は、ファイル→環境設定メニューを選ぶと確認できます。
エクスプローラでスケッチブックの保存場所を開き、librariesフォルダがある事を確認してください。
まだ1度も外部ライブラリをインストールした事のない人は、librariesフォルダが見つからないかも知れません。その場合はlibrariesフォルダを新たに作ってください。
最後に、librariesフォルダの中に、ResKeypadフォルダをコピーまたは移動してください。
当方にMacの環境がないので未確認ですが、Arduino公式サイトに載っている"Installing Additional Arduino Libraries"によると、Mac環境の場合は"Documents/Arduino/libraries"フォルダ(日本語環境なら"書類/Arduino/libraries"フォルダか?)の中にReskeypadフォルダを移動あるいはコピーすればいいようです。