Raspberry Pi 3B+ Raspbian で格安液晶ディスプレー設定


なにかと便利なラズパイですが,小さなモニタがあると出先でも便利です.
banggoodでタッチパネル付き3.5インチの格安TFTモニタを見つけたので取り付け・設定しました.

プラスチックのケース付きで¥1703でした.
↓これ
https://www.banggood.com/Geekcreit-3_5-inch-TFT-LCD-Touch-Screen-Protective-Case-Touch-Pen-Kit-For-Raspberry-Pi-3B3B2B-p-1391232.html?rmmds=myorder&cur_warehouse=USA

取り付けはラズパイのヘッダピンに重ねるだけです.

問題はラズビアンでのタッチパネルの設定です.
当初 液晶画面上でタッチパネルのポイント取得がX軸とY軸で入れ替わっており,設定しなおしが必要でした.
設定する方法はいくつかあるようですが,
/usr/share/X11/xorg.conf.d/99-calibration.confに書く方法をとりました.

なぜかSwapAxesとSwapXYの設定が機能しなかったので,TransformationMatrixでX,Y軸を入れ替え,かつ両軸とも+-が逆となっていたのでInvertX,InvertYに1を設定しました.
99-calibration.confには細かいキャリブレーションの設定も書けます.

TransformationMatrix ですが,9つの数字は3x3のマトリックスを表します.
モニタの場合X,Yの2軸しかないので,XとYを入れ替える場合は0 1 0 1 0 0 0 0 1とすればよいと思います.(この9桁の数字で画面の回転なども設定できます)
左から数えて 1つめの1(2番目/全体),もしくは2つめの1(4番目/全体)を負にすると(-1)X軸(もしくはY軸)の動きが逆になるはずですが(InvertX/InvertYと同じ)それぞれの軸がバイアスされている(各軸が0からはじまっていない)ようで,モニタからポインタがはみ出てしまうようです.
なので,その場所は1のままにしておき,軸の正負の反転はInvertX/InvertYを使いました.
つまり,TransformationMatrixとInvertを併用しています.
ファイルは/usr/share/X11/xorg.conf.d/99-calibration.conf
/etc/X11/xorg.conf.dではありません.

99-calibration.conf
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3936 227 268 3880"
        Option  "InvertX"    "1"
        Option  "InvertY"    "1"
        Option  "TransformationMatrix" "010100001"

EndSection

画面を回転させる場合は
/boot/config.txtに
display_rotate=2(180°回転)
を書く

引用
https://ht-deko.com/RaspberryPi/aob_lcd35.html (99-calibration.confの設定について詳しい)

https://pub.slateblue.tk/memo/day3857.html
http://studior.synology.me/wordpress/2017/03/12/raspberry-pi-3-lcd/