IchigoJamでアナログ入力を使った6ボタン入力
IchigoJamのアナログ入力(IN2ピン)を使った6ボタン ON/OFF判定を試してみました。
IchigoJamとの接続は3線のみのです。外観は次のような感じです。
ボタン名称は左から、A、B、C、D、E、Fボタンとします。
プログラムは、次のような感じです。
アナログ値を読み取り、値によってどのボタンが押されたか判定します。
10 CLS
20 LET[0],100,200,400,500,700,800
30 A=ANA():B=-1:I=0
40 IF A<[I] THEN B=I:GOTO 60
50 I=I+1:IF I<6 GOTO 40
60 LC 0,0
70 IF B<0 ? "---";" ";A:GOTO 30
80 ? "[";CHR$(65+I);"]";" ";A;" "
90 GOTO 30
実行して、動作確認をします。押したボタンとアナログ値(0~1023)を表示します。
ボタンを押していない場合
Aボタンを押した場合
Bボタンを押した場合
Cボタンを押した場合
Dボタンを押した場合
Eボタンを押した場合
Fボタンを押した場合
ちゃんと判定出来ました。
結線は次の通りとなります。ブレットボード上にタクトスイッチと抵抗を結線し、
配線をIchigoJamのVCC(3.3V)、ANA(IN2ピン)、GNDに接続します。
ボタンを押した場合は、GND-ANA間の電圧は図の右表のようになり、
IchigoJamのANA(IN2)から読み取った値はほぼ、表の数値となります。
この値と比較してどのボタンが押されたかを判定します。
計算式は下記の通りです。 Bボタン: 330/(330+2200)*1024-1 = 132 |
Cボタン: (330+680)/(330+680+2200)*1024-1 = 321 |
Dボタン: (330+680+1000)/(330+680+1000+2200)*1024-1 = 487 |
Eボタン: (330+680+1000+1800)/(330+680+1000+1800+2200)*1024-1 = 648 |
Fボタン: (330+680+1000+1800+3300)/(330+680+1000+1800+2200+3300)*1024-1 = 781 |
押していないとVCC-ANA間はVCC(3.3V)なので、1023となります。
Aボタンを押すと、ANAがGNDにつながるのでANAの電圧は0Vで値は0となります。
B~Fのボタンを押すと、抵抗による分圧で上記の式の計算値となります。
判定処理が必要なので、シューティングゲームなどのリアルタイム操作を
行う場合は遅くなりそうですが、3線でボタンが増やせるのは便利です。
この回路では、ボタンの同時押しには対応していません。
同時に押した場合、図では上部のボタンが押されたと判定します。
(例:Bボタン、Eボタンを同時に押すとBボタンと判定します)
今回の実験では、6ボタンでしたが頑張れば12ボタンくらいは実装出来そうです。
もっと頑張れ15ボタンくらいいけるかもしれません。
最新ファームウェア 1.0.0b6ではアナログ入力が2ポートに増えたので、
4線の接続で30ボタンいけるかもしれませんね。
2015/05/05 追記
12ボタンバージョンを基板実装しました。
以前購入した、「秋月電子 お楽しみ袋」にタクトスイッチがいっぱい入っていたので
有効活用しました。
この基板では12個が限界です。基板が大きければ頑張れば15個はいけますね。
裏はいつもの、段ボールです。
ねじを外せばいつでも配線にアクセス可能です。
動作確認のIcigoJamソース
10 CLS
20 LET[0],80,150,250,400,500,600,650,720,780,840,880,950
30 B=-1:I=0
40 A=ANA()
50 IF A<[I] THEN B=I:GOTO 70
60 I=I+1:IF I<12 GOTO 40
70 LC 0,0
80 IF B<0 ? "---";" ";A;" ":GOTO 30
90 ? "[";CHR$(65+I);"]";" ";A;" "
100 GOTO 30
問題なく動作しました。
3線で12個のボタンが使えます。
基板のレイアウトはこんな感じです。
2015/05/06 追記
このスイッチの他に、色々とデバイスを接続すると電源の電圧変動やノイズがのり
アナログ値が揺らぐようです。ですのでボタン間の数値の幅が狭いとご判定するようで
12個当たりが限界のようです。
« IchigoJamとArduinoでI2Cバス通信を試してみる (2) | トップページ | IchigoJamでDVR8830を使ったロボットカー制御(1) »
「IchigoJam」カテゴリの記事
- Ichigojam Rが届きました(2021.02.05)
- β版 IchigoJam Rを予約注文しました(2021.01.23)
- IchigoJamのファームウェア 1.4.1が正式に公開されました(2019.12.10)
- 「ichigoツール」をGithubにて公開しました(2019.11.09)
- ichigojamのファームウェアを1.4b13にアップデートしました(2019.11.06)
コメント
« IchigoJamとArduinoでI2Cバス通信を試してみる (2) | トップページ | IchigoJamでDVR8830を使ったロボットカー制御(1) »
初心者です。
Ichigojamで、可変抵抗でアナログ入力する方法がわからず難儀していました。
こちらのサイトの回路図通り、VCCとIN2を2.2kで繋ぐとようやくアナログ入力できました。
他のサイトにはどこにも載っていなかったので助かりました。
ありがとうございました。
投稿: まるやま | 2016年6月26日 (日) 03時48分