カテゴリー
IchigoJam

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 120
900 '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日に下記で発売開始予定です

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es