マイコン工作実験日記

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

キャリブレーション

2013-09-28 00:13:23 | LCD
さて、いよいよタッチパネルからの入力を拾う説明に入るのですが、タッチパネルを扱うに際して必ず必要となるのが、キャリブレーション操作です。タッチパネルとLCD画面は別のデバイスですから、それぞれ独立の座標系をもっています。そのため、タッチパネルが検出した座標をLCD画面上の座標に変換する処理が必要となります。この変換に要する係数は個々のデバイスに依存するために、キャリブレーション操作を実施するわけですが、この操作や処理もFT800ではCMD_CALIBRATEコマンドを一発送るだけで実施してくれます。FTDIのサンプルで用意されているAPIを使えば、操作指示のテキストも表示してくれるので、例えば以下のように呼び出します。
  Ft_Gpu_CoCmd_FgColor(phost, 0xe0e000); /* Button color is yellow */
  SAMAPP_CoPro_Widget_Calibrate();

タッチ位置を示すボタンを黄色で表示するように指示してみました。これが実行されると、画面は次のようになります。





タッチ位置を示す円がブリンクするように、その大きさを変化させながら表示されます。カッケーなぁ。
このボタンをタッチすると、続いてふたつのボタンが表示されます。




よくみるキャリブレーションでは、四隅の4点を使いますが、こういう3点方式もあるんですね。3点タッチしたところで、コマンドキューが空になって割り込みがかかります。それまでホスト側は何もする必要なし。FT800が勝手に3点を順に表示、座標検出して、変換係数を計算してくれます。そして、以後はタッチすると、求めた変換係数を用いて画面座標を求めてくれます。タッチ有無の状態やタッチ座標はREG_TOUCH_SCREEN_XYを読み出して調べることができます。別のレジスタを読めば変換前の座標を知ることもできますが、まぁ使うこと無いんじゃないでしょうか。