2013/09/16

GR-SAKURAでタッチパネル付きQVGA液晶

aitendoから発売された液晶with基板(2.4インチforさくら)[LCD024GR-NP]を購入。
aitendoが紹介している「松浦光洋さんの研究開発ページ」から「動作確認用カラーバー」をダウンロードして、Webコンパイラでコンパイルして、GR-SAKURAで動きました。【多謝⇨松浦光洋様】

ColorBar

サンプルコードは液晶にカラーバーを表示するだけのシンプルなものです。
通常マイコンにこのような液晶(VRAMを搭載したスマートディスプレイ)を接続する場合、データ転送するには、転送するデータの他にコントローラとのハンドシェークのために(レジスタの選択や書き込み指示のための)ポート操作が必要で、それなりに煩雑で、手間のかかる処理が必要でしたが、このサンプルコードでは、EXDMAの初期設定後は、ポートに書き込むだけで、データ転送してくれます。【カッコよくて、速い】
サンプルソースは、液晶の表示動作の確認用で、タッチパネルのサンプルは含まれていません。
この液晶に貼り合わせてあるタッチパネルは、今ではちょっと時代遅れの感がある「4線式抵抗膜」仕様のようです。
取りあえず、以前にPICマイコンに接続したタッチパネルの読取りプログラムを参考にしながらコードを書いてみました。
結果、タッチ位置がなかなか安定して読み取れません。 タッチパネルの説明書には、「信号が安定するのを待って読むこと」、「ローパスフィルターが必要」と書かれていますが、具体的な対処は書かれていません。
連続5回読み取って平均値を取るとか、中央値を採用するとか、いくつか思いつくことを試しましたが、良い結果は得られませんでした。
仕方なく、オシロで見ると下図のように波形(ピンクの丸がY座標)が暴れているのが分かります。

NG3

コンデンサ無し

暫定対策として、0.01uFのコンデンサをX、Y座標読取り端子に付けてみた結果の波形が下図です。

C103

コンデンサー有り

プログラム的には、コンデンサによって立上りが鈍るので十分に立ち上がるまで(60uS前後)待ってから読み取るようにしています。
波形的には、随分と安定しました(暴れているヒゲが目立たない)。
下は、約5ms置きに読取った電圧を座標変換して、そこを起点として2×2の黄色のBOXを描画してみた画面の写真です。
左がコンデンサ無しで、右がコンデンサ有りの画面です、左の画面にはタッチした場所の周囲に飛び散っている点が多いのが分かります。

コンデンサー無し  コンデンサ有り 0.01uF

メニュー用のボタンを押すぐらいであれば、十分に使えそうです。

また、抵抗膜タッチパネルにつきもののキャリブレーションですが、説明書には「キャリブレーションプログラムを用意すること」と書かれているだけです。
見た感じでは、直線性は悪くなさそうなので、簡単な比率計算で対応できそうです。