「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
タッチパネルは、銀行ATM、PDA(個人用の携帯情報端末)、携帯ゲーム機など身近なところで多く使用されるようになってきました。
タッチパネルの方式には、抵抗膜方式、光学方式、静電容量方式、超音波方式などいくつかの方式がありますが、今回はPDAなどで使われている抵抗膜方式(アナログ)を例に、ソフトウェアでどのようにタッチパネルを制御し、ペンタッチ座標位置を検出しているのか説明したいと思います。
抵抗膜方式タッチパネルは、上部フィルムと下部ガラスの対向する面に透明導電膜を形成しています。フィルム面とガラス面はある距離で通常離れており、ペンや指で押下することでフィルム面とガラス面の透明導電膜が接触し、通電する構造となっています。ガラス側のドットスペーサはフィルムのたわみなどで誤接触が起こらないようにするためのものです。
図 1. 抵抗膜方式タッチパネルの断面図
フィルム面の左右両端(X座標)およびガラス面の上下両端(Y座標)には電極が設けられており、ガラス面、フィルム面それぞれの透明導電膜の抵抗による分圧比を測定することで押された位置を検出します。
それでは次に、ソフトウェアでタッチパネルを制御するとき、どのような処理が行われているのか説明します。大まかな処理の流れは図 2の通りです。
図 2. ソフトウェアの処理の流れ
それぞれの処理でどのような処理が行われているか説明します。
ペンタッチが行われたことを検出してから、(2)以降の処理を行いますが、押下直後は人間の指および外的要因によるチャタリング(信号がON/OFFを繰り返す現象)が発生するため、一定間隔でペンタッチ入力をサンプリングし、継続してペンタッチ入力が行われたことを確認してから(2)以降の処理に移ります。
例えば、500μ秒間隔でペンタッチ入力を20回サンプリングし、20回中16回以上のペンタッチ検出で押下と判断するなどです。
X方向(水平方向)の座標を測定するため、フィルム面両端の電極に基準電圧を印加します。入力接触点に応じて、抵抗で分圧された電圧が出力されます。その出力値をADコンバータへ入力し、X座標値(デジタル値)を取得します。
図 3. X座標位置測定
X座標位置測定と同様に、ガラス面両端の電極に基準電圧を印加し、Y座標値を取得します。
図 4. Y座標位置測定
(1)〜(3)の処理で、ペンタッチされたX座標、Y座標を測定できました。しかし、タッチパネルが押下されていても押下力が不安定なため、同じ場所を押下していてもばらつきが発生します。
そのため、1度の座標測定で座標位置を確定させるのではなく、 (1)〜(3)を複数回繰り返し、複数取得した座標データを元に、座標位置を判定します。
ここでは、3点の座標データをもとに座標判定する場合を例に説明します。
3点の座標点を(X0, Y0)、(X1, Y1)、(X2, Y2)とします。まず、X座標3点の座標差の絶対値を求め、その中で座標差の小さい2点を選びます。Y座標も同様に座標差の小さい2点を選びます。
次に、X座標、Y座標それぞれで2点の座標の平均を求めます。その値が確定座標となります。
図 5に示す1〜3のような入力があった場合、X座標は2と3の中間点、Y座標は1と2の中間点がペンタッチ座標と判定します。
座標データを使用してアプリケーションソフトの仕様に従い、各処理を実行します。
いかがでしたでしょうか?
上記で説明した内容は、あくまでも一例であり、使用するタッチパネルやCPUなどによっても精度が変わってきますので、使用する環境によってプログラムの調整が必要となります。
身近に使用している製品が、どのようなソフトウェア制御を行って動いているのかを知ることで、また違った視点で製品を見ることが出来るのではないかと思います。
(M.A.)
関連ページへのリンク
関連するソフテックだより