TFTってなんじゃらほい??
thin film transistor の略で液晶のことだと思う。
以前もLCDについては書いたがそのときは画像の表示しかできなくて,
せっかく購入したタッチパネルを活かせていなかった。
そこで今回はタッチパネルを使えるようにしたい。
と言っても問題は,自分がマイコンとかソフトウェアとか全くのド素人であること。
必死にLCDの型番2.8inch SPI Module ILI9341 SKU:MSP2807を用いてタッチパネルを実現しているブログを探した。
その結果こんな記事を見つけた。
まずは配線を行う。
表示のみのガイドから入っているため、タッチパネルのピン配置されていない。
*上記ブログの引用
以前使用した配線と異なるのでGPIOを入れ替える・・・・(´;ω;`)
次にブログに従ってコマンドを入れていく。
まずはSPI通信が可能かどうか
sudo raspi-config
次にSPIDEVのインストール(SPIDEV??なんだろう)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev python3-dev
cd ~
git clone https://github.com/doceme/py-spidev.git
cd py-spidev
make
sudo make install
pipのインストール
sudo apt-get install python-pip
PIL Pillowのインストール
sudo pip install Pillow
デモサンプルのダウンロード
git clone https://github.com/BehindTheSciences/ili9341_SPI_TouchScreen_LCD_Raspberry-Pi.git
サンプルダウンロード後は
デモサンプルのディレクトリに移動して以下を実行すれば動作した。
sudo python BTS_SPI_LCD_DEMO.py
次にタッチパネルの配線
SPI0だけでなくSPI1を使うらしい。
最終的な配線図はこんな感じ
上記のブログではSPI1を使用するときに以下のコマンドを使用している。
/boot/config.txtに記載する。(たぶんsudoコマンド必要)
#enable spi1 with a single CS line
dtoverlay=spi1-1cs
だが、他のブログを確認すると、
config.txtをいじると遅くなる例もあるらしく、回避策が書いてあった。
よく理解できてない僕はなんとなく二つのブログを参考にして
/boot/config.txtに以下を記載した。
dtoverlay=spi1-3cs
記載後再起動を行う。
ここまでいけばサンプルプログラムも動くはずである。
タッチパネルのキャリブレーションのコマンドを記載する。
python BTS-ili9341-
touch
-calibration.py
なぜかエラーが起きた・・・どうやら分母が0になっているらしい。
原因はどうやらlib_tft24T.pyの中のdef readValue(self,channel)にあるっぽい。
spi.open(0, self._ce_tch)
を変更して以下にしてみる。
spi.open(1,self._ce_tch)
はっきり言って根拠はない。
タッチパネルの方はSPI1つかってるんだから1でいいんじゃね??
こんなもんだ。
でも動いたから良しとしよう。
python BTS-
touch
-penprint-trail.py
上記コマンドを実行したところ、一応タッチした場所の座標がでたので成功だと思う。