マイコン工作実験日記

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

キーはTAGで拾う

2013-09-30 00:31:52 | LCD
前記事でタッチパネルのキャリブレーションについて書いたので、今回はいよいよタッチパネル上に配置したキーを拾います。



上の写真は、この記事で配置したキーで入力した番号を表示した様子を示しています。通常、このようにタッチパネル上に配置されたキーを拾うためには、次のような手順が必要となります。
  1. タッチされた座標を求める
  2. スクリーン上の座標に変換する
  3. その座標に対応するオブジェクトを求める
  4. オブジェクトに対応するキーの値を求める
前回の記事でも書いたように、FT800は2の処理までをやってくれて、その座標を32ビット幅のレジスタを読み出すだけで求めることができます。そして、それだけではなく、3, 4の処理までもやってくれるのです。

FT800では描画されるオブジェクトに対してTAGという属性を与えることができます。そして、スクリーンがタッチされた際には、タッチされた座標に対応するオブジェクトを求めて、そのTAG属性値をREG_TOUCH_TAGに入れてくれます。したがって、キーに対応する値をTAG属性値として与えておけば、レジスタを見るだけでタッチされたキーの値を求めることができるのです。

さらに便利なことに、CMD_KEYSを使ってキーを描画した場合には、自動的に個々のキーに与えた1文字のラベルの値をTAG属性値として設定してくれちゃいます。CMD_BUTTONを使ってボタンを描画した場合には、事前にTAGコマンドを使って指定しておいたTAG属性値が設定されます。TAGの値は1~255の範囲となっており、0はタッチされていない状態を表現するために予約されています。

このように、キーやボタン処理のように、オブジェクトに与えた論理的な値を知りたい場合には、FT800のREG_TOUCH_TAGを調べるだけで良いということになります。例えばCMD_KEYSを使って描画した'1'をタッチすればREG_TOUCH_TAGの値は0x31になります。そして、指を離せばREG_TOUCH_TAGの値は0x00に変化します。

そして、ボタン処理をさらに簡単にしてくれるのが、割り込みです。REG_TOUCH_TAGの値が変化した場合に割り込みをかけることができます!! 結論として、FT800では
  1. TAG変化割り込みがかかるのを待つ
  2. REG_TOUCH_TAGを読む
という極めて単純な処理だけでキーやボタンの状態変化を知ることができます。