SPI液晶 ILI9341をTouchGFXで使おう３～キャリブレーションをする～

__SPI液晶 ILI9341をTouchGFXで使おう２__ の続きです。

https://qiita.com/usashirou/items/1671e1664f473ea01c59

せっかく作ったプログラムですが、タッチパネルの調整をしていない為、タッチする位置が合っていないと思います。
今回は、キャリブレーションをしてみましょう。
# 4-CALIBRATION
https://github.com/maudeve-it/ILI9XXX-XPT2046-STM32/tree/main/4-CALIBRATION

# プロジェクトをコピーする
今回は、せっかく作ったプログラムがあるのでまずは __コピー__ をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/fcf8a33b-1854-53ed-09c4-d6b527692ce2.png)
__iocファイル__ はプロジェクトと同じ名前にしないといけない為、__Rename__ します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/8658370e-2f28-e0b7-535f-1a6e59e13ce5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/e8168f34-8f4f-2d37-73d1-8ba837a13884.png)
__Pinout&Configulation__ において __X-CUBE-TOUCHGFX__ のチェックを外し __Device Configuration Tool code Generate__ を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/792da05e-21aa-1bc6-54ef-4705a418c810.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/4a57b529-ed44-c62b-288c-8dad020039ee.png)
# ファイルの追加
__1-HOWTO__ のファイルをすべてダウンロードし __Inc__ と __Src__ にファイルを配置し __main.h__ の __USER CODE BEGIN Includes__ を以下に変更します。

https://github.com/maudeve-it/ILI9XXX-XPT2046-STM32/tree/main/1-HOWTO


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/8492e38e-526b-a80e-3ae8-c717bea68a50.png)

```
/* 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
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/4cc61cf0-d4b1-a788-e21e-bd4afa2e8098.png)
# 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 */
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/9530954a-9ea8-4b09-7709-787f886e6b38.png)
# 設定変更
このまま __Touch_TestCalibration__ を実行しても結果が表示されないので設定を変更します。
__Project⇒Properties__ をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/57b93337-fdd7-3ed8-6769-9304a1df5729.png)
__Settings⇒Tool Settings⇒MCU SettingsUse⇒Use float with printf from newlib-nano(-u_printf_float)__ にチェックを入れます。
これで、キャリブレーションの結果が表示されるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/7047405d-f5bb-e0c4-d48e-cf2901d95eae.png)
# キャリブレーションデータの反映
表示されている内容をもとにz_touch_XPT2046.hの#ifdef ILI9341を変更します。
![IMG_20240123_185900.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/65aa7c5e-7b93-e73e-fa35-5339220385d6.jpeg)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/7b3b25c5-69a8-07a1-0f72-2c7f1baa4c0e.png)
__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で使おう４～表示テストを行う～
https://qiita.com/usashirou/items/54fe578f056473db11d4