目次
IchigoJam用Personal Computer基板で 液晶キーパッドのキー入力
今日はSainSmart製のLCD Keypad Shieldのキーパッドを使用する実験をしてみました。この液晶を利用する記事は以前に(https://bokunimo.net/blog/ichigojam/159/)に紹介しました。
今回は4つの方向キーに応じて「ミギ」「ヒダリ」「ウエ」「シタ」のいずれかを表示します。雑誌「BASIC I/OコンピュータIchigoJam入門」用のパーツセットに含まれるキーパッドに比べると、プログラムが長くなってしまいます。その理由も後述します。
プログラム
プログラムです。液晶の上の行にアナログ入力値を表示し、下の行に方向を表示します。行番号110~190がメイン部分です。行番号140~170でキーを判定します。行番号900以降は液晶表示用のライブラリなので、理解する必要はありません。
rem LCD Keypad Example Code for IchigoJam BASIC 1.1
rem Copyright (c) 2015-2016 Wataru KUNINO
rem https://bokunimo.net/ichigojam/1 CLS:?"IchigoLCD for IJ":?" by Watt Kunino"
100 GOSUB 900
110 WAIT 180:CLS
120 K=ANA(0):IF K>1000 GOTO 120
130 LC0,0:?"Key value=";K;" "
140 IF K>600 ?"ヒダリ":K=-1
150 IF K>400 ?"シタ ":K=-1
160 IF K>200 ?"ウエ ":K=-1
170 IF K>=0 ?"ミギ ":K=-1
180 GOSUB 900
190 GOTO 120900 'LCD
910 out35:out3:wait3:out35:out3:out35:out3:out34:out2
920 out34:out2:out40:out8:out32:out0:out44:out12
930 out32:out0:out33:out1:out32:out0:out38:out6
940 forZ=#900to#90F:gosub960:next:out44:out12:out32:out0
950 forZ=#920to#92F:gosub960:next:return
960 ifpeek(Z)outpeek(Z)>>4+48:out6,0
970 ifpeek(Z)outpeek(Z)&15+48:out6,0
980 return
純正IchigoJamプリント基板との接続方法について
純正IchigoJamの接続する場合、液晶については、下記を参照ください。液晶の電源には5Vが必要です。
またA0(Analog 0)端子をIchigoJamのBTN端子に接続してください。
CQ出版オリジナルKeypad Shield基板との違い
下図はボクが設計したKeypad Shield基板です。7個のキーをIchigoJamのIN1、IN2、IN4に接続して使用します。IN3を避けたのはI2C用に使用するからです。
ところで、1,2,4という数字にピンとくるかもしれません。2倍ずつ増えてゆく数字は2進数と相性が良いのです。この基板では、基板上に書かれている1~7の数字の並びに合わせて、2進数に変換しています。上ボタンの「3」だと、2進数の「011」がIchigoJamに入力され、10進数に戻すとキー番号「3」が得られます。
さらに、4方向のキーに関しては、得られた数値に27を足すと、IchigoJamのカーソルキーのコードに一致します。そうです、わざわざ、その並びにしたのです。
パーツセットで製作できるキーパッド基板
(セットには1枚しか含まれていません)
これらの工夫により、以下のような簡単な方法で、キー入力が行えるようになりました。
700 'KEYPAD
710 K=inkey():ifKletK,K&3+1:return
720 K=~IN()&#F:K=K+K>>1&4:K=K&7
なお、回路や考え方を自由に応用していただいてかまいませんが、簡単で良いので出典元を記入していただけるよう、お願いいたします。
電源も一体型「ポケットコンピュータ」
最初の写真から分かるように、単3電池1本での動作に成功しました。少し、液晶のバックライトの輝度が下がるのと、DCDCコンバータの出力が4.5Vあたりまで低下してしまいましたが、ちゃんと動作しています。
課題
ここで、もとのSainSmart製のLCD Keypad Shieldのキーパッドの一番左にある「SELECT」ボタンを押してみてください。どんな反応があったでしょうか?
壊れているわけではありません。LCD Keypad Shieldは5V動作なのに対して、IchigoJamは3.3Vまでしか検出することが出来ません。このため、3.5VくらいになるSELECTキーを検出することが出来ないのです。
なお、本マイコンのADコンバータの入力の上限は3.3Vです。それを超過するのは良くありません。とはいえ、デジタル入力時は、トレラント機能によって5Vまでの入力に対応しているので、他のマイコンよりは壊れにくくなっているものと思います。もちろん、自己責任でお願いします。
実験が終わったら、プログラムをセーブしてから「RESET」ボタンも押してみてください。こちらは、ちゃんと動きます。リセット信号はローアクティブ、すなわちLレベルのときにリセットがかかる決まりになっているからです。
ボクにもわかるIchigoJamマイコンボード
基板とパーツセットは3月31日に下記で発売開始予定です