前回購入したCYDが XH-32Sという謎のモジュールが載った怪しい物。しかも技適マークの無い「ハズレ」だった。
でも、もったいないので無線機能無しで何か動かして遊んでみる。
正規のCYDの場合、2つのUSBコネクタのついた新しい2.8インチCYDではLCDコントローラはST7789が使われていると、複数の記事で書かれていた。
しかし、最初にインストールされているデモプログラムではシリアルモニタで以下のようにILI9341が載っているかのよう。
21:42:06.962 -> disp_spi->Adding SPI device
21:42:06.962 -> disp_spi->Clock speed: 40000000Hz, mode: 0, CS pin: 15
21:42:07.146 -> ILI9341->ili9341 Initialization....
21:42:07.346 -> [0;32mI (940) ILI9341: Enabling backlight.[0m
21:42:07.346 -> ILI9341->Display orientation: LANDSCAPE_INVERTED
21:42:07.346 -> ILI9341->0x36 command value: 0xE8
21:42:07.384 -> lvgl_helpers->Initializing SPI master for touch
21:42:07.384 -> [0;32mI (950) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 [0m
21:42:07.384 -> [0;32mI (960) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 [0m
21:42:07.384 -> [0;32mI (960) XPT2046: XPT2046 Initialization[0m
おいおい・・・ どっちなんだい?
まず、記事を信じてChatGPTにST7789でコードを書いてもらう。
何度もやり取りして、動き始めた。やはりST7789だったのか・・と思ったのだが
なんじゃこりゃ? 文字が左右に鏡写しになっている。
ChatGPTに直せないのか訊いて、いろいろ試してみたのだが効果なし。
仕方が無いのでILI9341前提で、動作確認のコードを書いてもらった。
気のせいかもしれないが、最近のChatGPTのコード出力の精度が悪いような気がする。間違いを指摘しても、まるで指示したおじさんが悪いかのような文面で修正してくるのだ。
コードを書く前によく考えて欲しいもんである。(お前が言うか?)
めげずに何度かやり取りして動くようになった。
今度はLCDの表示に TFT_eSPI.h を使う。TFT_eSPI.hでタッチパネルも扱えるのだが、CYDでは何故かタッチパネルのSPIは完全独立しているので、扱う事が出来ない。
独自に XPT2046_Touchscreen.h を使って動かす必要がある。
SPIを共通にしておけば使えるGPIOも増えるのに・・・
最初に、Arduino/libraries/TFT_eSPI/User_Setup.h を編集して以下に変更:
#define ILI9341_DRIVER
#define TFT_MISO 12
#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_CS 15
#define TFT_DC 2
#define TFT_RST -1
#define LOAD_GLCD
#define LOAD_GFXFF
#define LOAD_FONT2
#define SMOOTH_FONT
Arduino IDEのコード
今度は、ちゃんと動いた。
やはりLCDコントローラーは ILI9341が使われているようだ。
むむむむ・・・ 偽物を掴まされると苦労するのである。
次に、CN1コネクタから出ているGPIO 22と27を使ってI2C通信出来るか試してみる。
前回描いてみたCYD内部回路図の右下部分
接続するのは以前に秋月電子で買った温湿度センサDHT20。
過去に何度か使ったことが有るので、特に迷うことは無い。





