タッチスクリーン(XPT2046)を使う


手元に、ILI9341の2.4インチTFT/2.8インチTFTが、それぞれ2個あります。
タッチスクリーン・コントローラの有無と、実装されているコントローラICの型番が違いま す。
2.4インチTFT その1:タッチスクリーン・コントローラあり  HR2046
2.4インチTFT その2:タッチスクリーン・コントローラあり XPT2046
2.8インチTFT その1:タッチスクリーン・コントローラ無し
2.8インチTFT その2:タッチスクリーン・コントローラあり XPT2046



枠内がタッチスクリーン・コントローラ。右上の2.8インチはタッチ用のピンは出ていますが、コントローラ無しです。
基盤シルクの型番はどちらも「TJCTM24028-SP1」ですが、Aliではよくあることです。

下の写真は2.4インチのコントローラ部分ですが、実装されているタッチスクリーン・コントローラが違います。
基盤シルクの型番も微妙に違っています。


[TOUCH]のシルク印刷があるピンがタッチスクリーン用のピンです。



XPT2046が実装されているモジュールでは、2.4インチも2.8インチも、タッチスクリーンでの操作が可能です。
Raspberryとの結線は以下の通りです。

TFT Rpi(Pin#)
T_IRQ GPIO25(22)
T_OUT MOSI(19)
T_DIN MISO(21)
T_CS CS1(26)
T_CLK SCLK(23)
GND GND
VCC 3.3V

Raspberry用のソースはTFTのライブラリと同じこちらで公開して います。
こちらで公開されているソースを参考にさ せていただきました。
git clone https://github.com/nopnop2002/ili9340spi_rpi
cd ili9340spi_rpi
cc -o xpt xpt.c xpt2046.c -lbcm2835
sudo ./xpt

スクリーンを指でなぞるとこのように位置が戻ります。


TFTライブラリと組み合わせてみました。
TFTとタッチスクリーンを両方使う場合のRaspberryとの結線は以下の通りです。
Rpi側のMOSI SCLKは、TFTとタッチスクリーンで共通に使います。

TFT Rpi(Pin#)
T_IRQ GPIO25(22)
T_OUT MOSI(19)
T_DIN MISO(21)
T_CS CS1(26)
T_CLK SCLK(23)
MISO N/C
LED 3.3V(※1)
SCK SCLK(23)
MOSI MOSI(19)
D/C GPIO2(03)
RES GPIO3(05)
CS CS0(24)
GND GND
VCC 3.3V

git clone https://github.com/nopnop2002/ili9340spi_rpi
cd ili9340spi_rpi
cc -o touch touch.c fontx.c ili9340.c xpt2046.c -lbcm2835 -lm
sudo ./touch

スクリーンをタッチすると、タッチした数字が表示されます。


HR2046チップが実装されている2.4インチではY座標だけは取れましたが、どうやってもX座標が取れませんでした。

続く...