お父にゃんの電子工作 -16ページ目

お父にゃんの電子工作

暇なおじさんが、電子工作(主にラジオ製作)をして勝手な感想を書く

Raspberry Pi Zero 2WでWebラジオを作っているのだが、手持ちの2インチLCDでは画面が小さくて見にくいい。

そこで、Ali-Expressで2.8インチLCDを購入。

 

2インチ版LCDと同じST7789を使ったLCDパネルなのである。

他にもまとめて買ったので割引と送料無料で576円で買えた。

 

表面

裏面

 

で、いつものように2インチLCDと並べて表示してみる。

以前に2.4インチLCDの時に試した↓  同じ回路、スケッチで動作させてみる。

 

すると、2.8インチ版LCDの表示色が反転している。

 

色も、なんだかおかしい。

え~、どうしよう。困った。

 

ぬぁ~~にぃ~、やっちまったなぁ~

男は黙って、ネット検索!

 

ネットで調べると、液晶の種類によって、色反転設定が必要らしい。

 

液晶は、主にTN方式と、IPS方式のパネルが有るようで、今回購入したものは、おそらくTN方式のものと思われる。(視野角が狭めで斜めから見た時に色の変化が大きい。Ali-Expressの商品説明ではTFT(IPS)と書いてあるのに・・・)

TN方式は無電圧では透過だが、IPS方式では遮蔽(黒)となる。つまりIPS方式と論理が逆になるので、色が反転してしまうようなのだ。

 

で、具体的にどうすれば良いかわからなかったので、ChatGPTに訊いてみた。

すると、

Adafruit_GFX/Adafruit_ST7789 ライブラリには反転制御関数が用意されている。

tft.invertDisplay(true);   //←反転制御

または tft.invertDisplay(false); 

 

初期化後にこのコードを入れて試してみろというので試した。

結果的には、tft.invertDisplay(false); を入れることで、ちゃんと動いた。

ST7789のLCDの初期値は反転onになっているみたい。

  // 1台目初期化
  tft1.init(240, 320); //
  tft1.setRotation(3);
 
  // 2台目初期化
  tft2.init(240, 320);
  tft2.setRotation(3);
  tft2.invertDisplay(false);

 

ようやく正常な色になった

 

 

文字が大きくて読みやすい

 

ああ、やはり画面が大きいのは、とても良いのである。

 

 

次にRaspberry Pi のPythonではどうするかも訊いた。

結論は、LCD初期化後に、直接コマンドを叩くのが正解。

device.command(0x20)  # INVOFF

# SPI設定、LCD初期化
serial = spi(port=0, device=0, gpio_DC=24, gpio_RST=25,gpio_LIGHT=None,bus_speed_hz=52000000)
device = st7789(serial, width=320, height=240, rotate=0)
 
# LCD反転OFF
device.command(0x20)  # INVOFF
 
# LCD反転ON (上の行をコメントアウトだけでも可)
# device.command(0x21)  # INVON

 

 

修正前  色が反転。でも背景が白も悪くないかも・・・

 

修正後

画面が大きくなって文字がすごく大きい

 

老眼のおじさんが、詳細表示モードでも文字が大きくて問題なく読むことが出来る。

大型パネルにして良かった。

 

ああ、最初はどうなるかと思った。

おじさんは、何かあるとすぐ凹んでしまうのである。

でも、まぁ、今回も何とかなって良かった~。

 

 

「そんなことより、ご飯をくれニャ~」