前回、回路を修正してブレッドボードでテストしていたスケルトン電卓のタッチパネルですが、パネルからのアナログ入力がめちゃくちゃに変動する現象は起こらなくなりました。タッチパネルの入力電圧を下げた効果はあったのかもしれません。これならキーボードとして使えそうなので、PS/2インターフェースを実装してみます。
パネルの表記は電卓なのでとりあえずテンキーにしてみることにしました。操作性はあまり良くないかもしれませんが、PCにつないだときの見た目のインパクトはありそうです。
デバッグ表示用のLCDは取り外して、これまでのようにPS/2メスコネクタ(秋月電子AE-MiniDIN-6)とPIC16F876Aをつなぎます。配線は以下の通り。
PS/2 ⇔ PIC
1 DATA ⇔ RC5
3 GND ⇔ GND
4 VCC ⇔ VCC
5 CLOCK ⇔ RC4
スケルトン電卓とPICの接続は前回のままです。
プログラムは以下のようになりました。
newmain.c
タッチパネルの数字と四則演算はそのまま入力できるようにし、その他は以下のようにしました。
% → NumLock
MRC → ペースト(CTRL+V)
M− → カット(CTRL+X)
M+ → コピー(CTRL+C)
ON.C → Enter
このプログラムは前回のテストプログラムを元にしていますが、幾つか細かな部分を修正しています。特に大きな修正点は__interrupt()の割り込みエントリの中でPORTBの出力ポートをHIGHにする際、他の使用していないポートをINPUTに設定してハイインピーダンス状態にしました。これはマトリクス回路に他のポートから電流が回り込むのを防ぐ意味で行っています。このタッチパネルには必要がない処理かもしれないのですが、念の為追加しておきました。
タッチの判定に使用するしきい値は、前回の0x20のままです。この値は使用する抵抗などによって変わってくる可能性が有るので、プログラムを利用する場合はソースリスト前方の #define THRESHOLD 0x20 の値を適宜書き換えてください。
このプログラムを使って直にPCにつないでテストしてみたところ、ちゃんと押した文字が入力できました。レスポンスも良く普通のテンキーと同じように使用できました。
続いて、以前に作ったPS/2→USB変換デバイスにつないでテストしてみます。こちらも何の問題もなく使用でき、遅延なども感じることはありませんでした。全く普通のテンキーです。
ブレッドボードで長時間使用しても動作に問題がなかったので、基板に部品をハンダ付けすることにしました。
なかなか奇抜なテンキーに仕上がりました。
タッチパネルのテンキーは見たことがないので、とても新鮮です。もちろん、普通のテンキーよりは使い勝手はよくありません。入力のたびにパネルを見て指の位置を確認する必要があるのはちょっと面倒です。
でも頻繁にテンキーを使用しないのであれば、机の上に置いてあってもそんなに邪魔にならないし、パネルに物をのせてしまっても文字入力されることがあまりないので、テンキーとしての利用は有りかもしれません。
個人的にはAVRやPICの入力デバイスに使うつもりでしたが意外にちゃんと使えるので、よく使うショートカットや複数のキー操作などを割り当てておいて、普段使いのデバイスにしようかと考えているところです。
最新の画像[もっと見る]
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- M5Core2+ArduinoフレームワークでもLVGLを使う 16時間前
- ラスベリーパイのベアメタル環境でLVGLを使う 1週間前
- ラスベリーパイのベアメタル環境でLVGLを使う 1週間前
- ラスベリーパイのベアメタル環境でLVGLを使う 1週間前
※コメント投稿者のブログIDはブログ作成者のみに通知されます