[メモ] らずぱい: 320x240 2.8" TFT+ RESISTIVE Touchscreen (Adafruit PID #1601)

## 動機
- いままで、Adafruitの[Easy Install](https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/easy-install)というページにしたがって、設定してた。(その前にぜんぜんつかってなかったんだが..)
- プロジェクト：https://github.com/notro/fbtft/ <br>いろいろ書いてある
- 公式イメージで対応してるっぽい?

    ```
$ ls -l /boot/overlays/pitft*
-rwxr-xr-x 1 root root 1544 May  4 15:10 /boot/overlays/pitft22.dtbo
-rwxr-xr-x 1 root root 2385 May  4 15:09 /boot/overlays/pitft28-capacitive.dtbo
-rwxr-xr-x 1 root root 2802 May  4 15:09 /boot/overlays/pitft28-resistive.dtbo
```
- => `2016-05-10-raspbian-jessie-lite.img` を使用して、config.txtとcmdline.txtの設定変更して使ってみる。
- 商品は[こちら Adafruit PID #1601](https://www.adafruit.com/products/1601)
    ![c.png](https://qiita-image-store.s3.amazonaws.com/0/75594/7f79e36f-63fe-29df-1dbf-b52186134f91.png)


## 手順
### Display設定
1. 2016-05-10-raspbian-jessie-lite.img をmicroSDへ焼く
2. `/boot/config.txt` の編集

    ```txt:/boot/config.txtへ追加
dtoverlay=pitft28-resistive,speed=32000000,fps=20
#dtoverlay=pitft28-resistive,speed=62000000,fps=25
```
\# [パラメータ](https://github.com/raspberrypi/firmware/tree/master/boot/overlays)はお好みにより 

3. `/boot/cmdline.txt` の編集
    - `fbcon=map:10` を最後につける

    ```txt:/boot/cmdline.txt
pi@raspberrypi:~$ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fbcon=map:10
```
4. `sudo reboot`
5. フォントサイズ変更

    ```txt
sudo apt-get install kbd
sudo dpkg-reconfigure console-setup
```
メニューが出てきたら、
`UTF-8` > `Guess optimal character set` > `Terminus` > `6x12 (framebuffer only)` 
と選択
6. 設定確認

    ```shell-session:設定確認
pi@raspberrypi:~$ dmesg | grep graphics
[    6.883205] graphics fb1: fb_ili9340 frame buffer, 320x240, 150 KiB video memory, 4 KiB DMA buffer memory, fps=20, spi0.0 at 32 MHz
pi@raspberrypi:~$
```
![a.png](https://qiita-image-store.s3.amazonaws.com/0/75594/3a618bea-d804-fb84-c82d-ae9192701b26.png)

### タッチセンサー
これは、[Adafruitの手順](https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/touchscreen-install-and-calibrate)から

1. /etc/udev/rules.d/95-stmpe.rules

    ```txt:/etc/udev/rules.d/95-stmpe.rules
SUBSYSTEM=="input", ATTRS{name}=="stmpe-ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen"
```

2. ドライバ再起動

    ```shell-session:touchscreenがある
pi@raspberrypi:~$ ls /dev/input/
by-path  event0  mice  mouse0
pi@raspberrypi:~$ sudo rmmod stmpe_ts; sudo modprobe stmpe_ts
pi@raspberrypi:~$ ls /dev/input/
by-path  event0  mice  mouse0  touchscreen
pi@raspberrypi:~$
```

3. ツールのインストール

    ```
pi@raspberrypi:~$ sudo apt-get install evtest tslib libts-bin
 ... インストール... 
```
4. イベント確認

    ```
pi@raspberrypi:~$ sudo evtest /dev/input/touchscreen 
 ...
Event: time 1464818053.214686, type 3 (EV_ABS), code 0 (ABS_X), value 2222
Event: time 1464818053.214686, type 3 (EV_ABS), code 1 (ABS_Y), value 1527
Event: time 1464818053.214686, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 127
Event: time 1464818053.214686, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1464818053.214686, -------------- EV_SYN ------------
Event: time 1464818053.221391, type 3 (EV_ABS), code 0 (ABS_X), value 2187
Event: time 1464818053.221391, type 3 (EV_ABS), code 1 (ABS_Y), value 1489
Event: time 1464818053.221391, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 116
...
^Cpi@raspberrypi:~$
```

2. キャリブレーション
=> 画面を5箇所タッチする。

    ```
sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_calibrate
```
![b.png](https://qiita-image-store.s3.amazonaws.com/0/75594/5ab16725-b541-856a-039c-c520baa0ca8e.png)

3. テストプログラム

    ```
sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_test
```
![c.png](https://qiita-image-store.s3.amazonaws.com/0/75594/7f79e36f-63fe-29df-1dbf-b52186134f91.png)


## スクリーンショットのプログラム

```
sudo apt-get install fbcat
fbgrab -d /dev/fb1 screenshot.png
```