GPIO 접속 LCD(Razz Pi 3)의 화면 반전과 캘리브레이션



소개



Raspberry Pi 3 Model B에 GPIO 연결의 3.5인치 터치스크린 480*320을 연결했습니다.
이것은 HDMI 단자를 사용하지 않고, 외관이 간단하고 좋을 것 같습니다.
본 자료는 GPIO 접속 터치스크린의 화면 반전, 캘리브레이션 등에 대해 기재합니다.
OS는 Raspbian Stretch입니다.

화면 반전(:rotate=270)



전원 케이블 단자를 케이스 상단으로 하기 위해 화면을 반전합니다.
다음과 같이 「:rotate=270」을 추기해, reboot 합니다.

/boot/config.txt에 추가
dtoverlay=tft35a:rotate=270

다음 설정에서는 화면 반전하지 않았습니다.
lcd_rotate=2
display_rotate=2
display_hdmi_rotate=2

참고 정보 htps: //비츠 t. jp / 아 p ぃ カ チ オン / ふぃ ぇ s / 2215 / 0295 / 6474 / r 피 _ 카세 _35 인 ch_lcd_ 셋 p. pdf

입력 반전(Transformation Matrix)



터치 펜과 커서의 움직임을 정합시키기 위해서, 다음의 마지막으로 Transformation Matrix를 설정하고 있습니다.
$ DISPLAY=:0.0 xinput list
? Virtual core pointer                          id=2    [master pointer  (3)]
?   ? Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
?   ? ADS7846 Touchscreen                       id=6    [slave  pointer  (2)]
? Virtual core keyboard                         id=3    [master keyboard (2)]
    ? Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
$ DISPLAY=:0.0 xinput list-props 6
Device 'ADS7846 Touchscreen':
        Device Enabled (116):   1
        Coordinate Transformation Matrix (117): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix (248):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix Default (249):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (250):     1, 0
        libinput Send Events Mode Enabled (251):        0, 0
        libinput Send Events Mode Enabled Default (252):        0, 0
        Device Node (253):      "/dev/input/event2"
        Device Product ID (254):        0, 0
$ xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1

참고 정보 htps // 푸 b. s ぁ b ぅ. tk/메모/다 y3857. HTML

입력 캘리브레이션(Calibration Matrix)



터치 위치와 커서를 맞추기 위해 다음의 순서로 캘리브레이션합니다.

(1) 「DISPLAY=:0.0 xinput_calibrator -v」
를 사용자 pi로 실행합니다. 지정된 4점을 클릭하면 다음과 같이 좌표가 표준 출력으로 출력됩니다.
DEBUG: Adding click 0 (X=78, Y=54)
DEBUG: Adding click 1 (X=407, Y=53)
DEBUG: Adding click 2 (X=83, Y=268)
DEBUG: Adding click 3 (X=407, Y=267)

(2) 4개의 파라미터를 다음 식으로 계산합니다.
a = (screen_width * 6/8)/(click_3_X - click_0_X)
c = ((screen_width/8) - (a * click_0_X))/screen_width
e = (screen_height * 6/8)/(click_3_Y - click_0_Y)
f = ((screen_height/8) - (e * click_0_Y))/screen_height

각각 다음 값이 되었습니다.
1.094224924
-0.05281155015
1.126760563
-0.06514084507

(3) Calibration Matrix 설정
위의 매개 변수를 사용하여 다음과 같이 Calibration Matrix를 설정합니다.
xinput set-prop "ADS7846 Touchscreen""libinput Calibration Matrix"a, 0.0, c, 0.0, e, f, 0.0, 0.0, 1.0

실제 명령은 다음과 같습니다.
DISPLAY=:0.0 xinput set-prop  "ADS7846 Touchscreen" "libinput Calibration Matrix" 1.094224924, 0.0, -0.05281155015, 0.0, 1.126760563, -0.06514084507, 0.0, 0.0, 1.0

(4) 캘리브레이션이 되어 있는 것을, 화면 클릭해 확인합니다.

참고 정보 htps : // 우우키. 아 rch ㅃ x. rg / 어서 x. php / ta lk : kab 라칭 g_ To chsc Reen # 빈 t_b Rea ks_ 펜 t_ kab 등 r

입력 반전 및 입력 교정 고정



rotate_touch_screen.sh를 새롭게 작성해, 동작 확인한 2개의 xinput 커멘드를 기술합니다.
다음과 같이 화면이 시작될 때 자동으로 실행됩니다.

/home/pi/.config/lxsession/LXDE-pi/autostart 추가
@/home/pi/.config/lxsession/LXDE-pi/rotate_touch_screen.sh

기타



최종 Transformation Matrix 및 Calibration Matrix


$ DISPLAY=:0.0 xinput list-props 6
Device 'ADS7846 Touchscreen':
        Device Enabled (116):   1
        Coordinate Transformation Matrix (117): 0.000000, 1.000000, 0.000000, -1.000000, 0.000000, 1.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix (248):      1.094225, 0.000000, -0.052812, 0.000000, 1.126761, -0.065141, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix Default (249):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (250):     1, 0
        libinput Send Events Mode Enabled (251):        0, 0
        libinput Send Events Mode Enabled Default (252):        0, 0
        Device Node (253):      "/dev/input/event0"
        Device Product ID (254):        0, 0

세로 놓을 때의 파라미터




dtoverlay=tft35a:rotate=0


DISPLAY=:0 xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

stretch의 Xorg의 기본 input 드라이버는 libinput (jessie는 evdev)



폰트 도입 sudo apt-get install fonts-noto



소프트웨어 키보드 도입 sudo apt-get install matchbox-keyboard



화면 상단의 왼쪽 끝 메뉴에서 Accessories/Keyboard로 시작할 수 있습니다.

좋은 웹페이지 즐겨찾기