マイコン工作実験日記

Microcontroller を用いての工作、実験記録

タッチパネルで圧力を感知する

2008-05-17 16:02:40 | LCD
TechToysのLCDボードで使用されているタッチパネルは4線の抵抗膜方式と呼ばれる種類のもので、安価で入手しやすいものです。最近話題のiPhoneなんかは静電容量方式という方式のようです。以前にも書いたように、このタッチパネルはちょっと指が触れたくらいでは感知してくれなくて、ある程度の圧力がかからないと感知してくれません。2枚の電極膜が接触するために、ある程度の圧力が必要なためでしょう。そのため、指の腹で軽く触っての操作はうまくできません。タッチペンを使うか、指の爪先で触ることで必要な圧力がかかるようにしてやる必要があります。指の腹でタッチする場合には、ちょっと押し込むくらいに意識してやれば、感知してくれます。

LCDボードに搭載されているタッチパネルコントローラADS7846のデータシートを読んで知ったのですが、このコントローラではタッチによって生じる2枚の電極間の抵抗を調べることができます。この抵抗はタッチされる際にかかった圧力や、圧力のかかった部分の面積によって変化するので、タッチ圧力のかかり具合を識別することができるようです。Linuxのドライバに含まれるADS7846のコードでも、この機能を利用できるようです。

こんな芸当ができるとは知らなかったので、この機能を実際に実験してみることにしました。以前の表示デモにちょっと手を加えて、圧力のかかり具合に応じてプロットする四角形の大きさを変化させるようにしただけです。指の腹で押しこんだり、ペン先の面積を広くして操作した場合には、軌跡が太くなっていることがわかります。



普通のタッチパネルの使い方だとマウスのエミュレーションだったりしますので、ペンダウン、ペンアップ、そして座標変化のイベントを拾うような使い方です。このように圧力のかかりかたの違いを検出できるとは思ってもいなかったので、いい勉強になりました。