概要
Adafruitの2.8" TFT Touch Shield for Arduino with Resistive Touch Screenを使った実験です。この実験はESP-WROOM-32を接続したものです。利用するライブラリは、Arduino Unoと同じものが使えます。Arduino Unoを接続した実験はこちら。
ライブラリのインストール
ライブラリのインストールは、こちらを参照してください。
実験
接続
ESP32 DevkitCは、Arduinoのピン配置ではないので、Arduino Unoのときとは異なり、そのままシールドを差し込むということができません。このため、ESP32とシールドとを自分で接続する必要があります。Arduino Unoでの実験の際に、そのままでは使えないと書いた、touchpaint_featherwingを見ると、ESP32用の定義が書いてあったので、それを参考に接続しました。SDカードは試していないので、間違えているかもしれません。
CIPO/COPI/SCKは、SPI接続のために必要なピンで、すべての機能に共通です。電源は、3.3Vでも5Vでも動作しますが、タッチシールド側は、Arduino Unoでいう5Vのピンに接続する必要があるようです。
ESP32のピン | 意味 | タッチシールドのピン (番号は、Arduino Unoのピン番号と同じ読み方をしています) |
---|---|---|
15 | TFT用CS | 10 |
33 | TFT用D/C | 9 |
32 | タッチセンサ用CS | 8 |
14 | SDカード用CS | 4 |
19 | CIPO | 12 |
23 | COPI | 11 |
18 | SCK | 13 |
3.3V | 電源 | 5V |
GND | GND | GND |
スケッチ例
スケッチ例は、touchpaint_fetherwingを利用しました。ただし、少し修正が必要でした。
修正箇所は以下の通りです。63行目あたりの定数を変更します。
オリジナルの定義
|
|
修正後の定義
|
|
SPI接続
ESP-WROOM-32で、ハードウェアSPIとソフトウェアSPIの性能差を見てみました。tftを生成する際のコンストラクタの違いで、ハードウェアの機能を利用するのか、ソフトウェアで処理するのかを選ぶことができます。通常は、ソフトウェアSPIを利用する理由はないと思いますが。
|
|
|
|
ここでは、graphicstest_featherwingを利用しました。結果を以下に示します。左側が、ハードウェアSPI、右側がソフトウェアSPIです。5倍から12倍程度、ハードウェアSPIのほうが早いという結果になりました。
バージョン
Hardware: | ESP-WROOM-32 |
Software: | Arduino IDE 1.8.4/Arduino core for the ESP32 |
最終更新日
July 14, 2024