カニ食べたい

そこまででもない

Raspberry Pi Quimat 3.5インチタッチスクリーンをUbuntuで使う

これです 

LCDがGPIOじゃなくてHDMI接続なのでGPIOが塞がらないというか実際電源供給やらで塞がるんですが、他の安物と違ってGPIOが全部使えるようにピンヘッダが外部に出ていて便利
ラズパイ用LCDはコレ一択な感じすらある


環境
Raspberry Pi 3 Model B
Ubuntu Mate 16.04


初めにconfig.txtを編集して解像度の変更とタッチパネルを有効化させます

$ sudo nano /boot/config.txt

ファイルの最下部にこれらを記述します
途中にも色々それっぽい項目はあるのですが全部コメントアウトされてるので気にしなくてよいです

hdmi_drive=2
hdmi_group=2
hdmi_mode=87
hdmi_cvt=800 480 60 6 0 0 0

dtparam=spi=on
display_rotate=2
dtoverlay=ads7846,penirq=25,speed=10000,penirq_pull=2,xohms=150,swapxy=1

再起動するといい感じの表示になってると思います
 

タッチパネルのキャリブレーションをします

$ sudo apt-get install xinput-calibrator
$ DISPLAY=:0.0 xinput_calibrator

キャリブレーション画面になるので赤い十字のマーカーの中心をタッチしていきます
終わると結果がこんな感じで出てきます

pi@pi-desktop:~$ DISPLAY=:0.0 xinput_calibrator
    Setting calibration data: 0, 4095, 0, 4095
Calibrating EVDEV driver for "ADS7846 Touchscreen" id=6
    current calibration values (from XInput): min_x=0, max_x=4095 and min_y=0, max_y=4095

Doing dynamic recalibration:
    Setting calibration data: 206, 3949, 172, 3866
    --> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
Section "InputClass"
    Identifier "calibration"
    MatchProduct "ADS7846 Touchscreen"
    Option "Calibration" "206 3949 172 3866"
    Option "SwapAxes" "0"
EndSection


Ubuntuの場合/usr/share/X11/xorg.conf.d/99-calibiration.confにファイルを作成します

$ sudo nano /usr/share/X11/xorg.conf.d/99-calibiration.conf


結果のSection~EndSectionをコピペするか写経します

Section "InputClass"
    Identifier "calibration"
    MatchProduct "ADS7846 Touchscreen"
    Option "Calibration" "206 3949 172 3866"
    Option "SwapAxes" "0"
EndSection

再起動して正常に動作することを確認します

おわり


追記というかなんというかおまけというか

タッチパネルに向きを合わせるためにdisplay_rotate=2で画面の向きを180度回転させてるんですけど、そうするとHDMI端子が手前側にくるんですね
自分はGPIOを手前にしたくて少し調べたんですけどタッチパネルを反転するにはX
windowのほうを設定を変えなくてはいけないみたいです
昔はlcd_rotate=2で反転できたらしいんですけど
とりあえずはそのままの向きで使おう思います


追記の追記
画面とタッチパネルの反転ができました

config.txtのdisplay_rotate=2のところを編集

display_rotate=0

下記コマンドを実行しタッチパネルを反転

$  xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1

反転が確認できたら起動時にコマンドが実行されるようにスタートアップに登録します
System>Personal>Startup Applicationsを開き上記コマンド追加します

必要に応じてキャリブレーションをしたりしましょう
ただ、自分の環境ではタッチパネルを反転させた後にキャリブレーションしたら逆にズレが大きくなったので補正の値は反転前のを使っています