LoginSignup
0
0

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

Posted at

SPI液晶 ILI9341をTouchGFXで使おう2 の続きです。

せっかく作ったプログラムですが、タッチパネルの調整をしていない為、タッチする位置が合っていないと思います。
今回は、キャリブレーションをしてみましょう。

4-CALIBRATION

プロジェクトをコピーする

今回は、せっかく作ったプログラムがあるのでまずは コピー をします。
image.png
iocファイル はプロジェクトと同じ名前にしないといけない為、Rename します。
image.png
image.png
Pinout&Configulation において X-CUBE-TOUCHGFX のチェックを外し Device Configuration Tool code Generate を押します。
image.png
image.png

ファイルの追加

1-HOWTO のファイルをすべてダウンロードし IncSrc にファイルを配置し main.hUSER CODE BEGIN Includes を以下に変更します。

image.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

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

設定変更

このまま Touch_TestCalibration を実行しても結果が表示されないので設定を変更します。
Project⇒Properties をクリックします。
image.png
Settings⇒Tool Settings⇒MCU SettingsUse⇒Use float with printf from newlib-nano(-u_printf_float) にチェックを入れます。
これで、キャリブレーションの結果が表示されるようになりました。
image.png

キャリブレーションデータの反映

表示されている内容をもとにz_touch_XPT2046.hの#ifdef ILI9341を変更します。
IMG_20240123_185900.jpg
image.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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0