SPI液晶 ILI9341をTouchGFXで使おう2 の続きです。
せっかく作ったプログラムですが、タッチパネルの調整をしていない為、タッチする位置が合っていないと思います。
今回は、キャリブレーションをしてみましょう。
4-CALIBRATION
プロジェクトをコピーする
今回は、せっかく作ったプログラムがあるのでまずは コピー をします。
iocファイル はプロジェクトと同じ名前にしないといけない為、Rename します。
Pinout&Configulation において X-CUBE-TOUCHGFX のチェックを外し Device Configuration Tool code Generate を押します。
ファイルの追加
1-HOWTO のファイルをすべてダウンロードし Inc と Src にファイルを配置し main.h の USER CODE BEGIN Includes を以下に変更します。
/* USER CODE BEGIN Includes */
#include "fonts.h"
#include "z_displ_ILI9XXX.h"
#include "z_displ_ILI9XXX_test.h"
#include "z_touch_XPT2046.h"
#include "z_touch_XPT2046_test.h"
#include "z_touch_XPT2046_menu.h"
/* USER CODE END Includes */
z_displ_ILI9XXX.h
z_displ_ILI9XXX.h の45行目をコメントアウトします。
//#define DISPLAY_USING_TOUCHGFX
main.cの変更
main.c をキャリブレーションに変更します。
/* USER CODE BEGIN 2 */ // "USER CODE BEGIN 2" is after all system initializations and before entering the main loop. Good place to initialize display
Displ_Init(Displ_Orientat_0); // initialize the display and set the initial display orientation (here is orientaton: 0°) - THIS FUNCTION MUST PRECEED ANY OTHER DISPLAY FUNCTION CALL.
Displ_CLS(BLACK); // after initialization (above) and before turning on backlight (below), you can draw the initial display appearance. (here I'm just clearing display with a black background)
Displ_BackLight('I'); // initialize backlight and turn it on at init level
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
Touch_TestDrawing(); // テスト
Touch_TestCalibration(); //キャリブレーション
/* USER CODE END WHILE */
設定変更
このまま Touch_TestCalibration を実行しても結果が表示されないので設定を変更します。
Project⇒Properties をクリックします。
Settings⇒Tool Settings⇒MCU SettingsUse⇒Use float with printf from newlib-nano(-u_printf_float) にチェックを入れます。
これで、キャリブレーションの結果が表示されるようになりました。
キャリブレーションデータの反映
表示されている内容をもとにz_touch_XPT2046.hの#ifdef ILI9341を変更します。
Touch_TestDrawing(); にてタッチと実際の軌道が一致するかを確認し z_touch_XPT2046.h を最初に作ったプログラムに上書きします。
また、私が使った液晶は STEP 2 の #define DELAY_TO_KEY_REPEAT -1 を0にした方が良好な動作になっていました。
/***************** STEP 2 *****************
//#define DELAY_TO_KEY_REPEAT -1
#define DELAY_TO_KEY_REPEAT 0
SPI液晶 ILI9341をTouchGFXで使おう4~表示テストを行う~