お久しぶりです。企画ポシャったと思ったでしょ?俺も思ってました。
最小構成で画像の表示をしてみるよ。
SPI通信について勉強した
なんとなくで敬遠してたけどめっちゃ簡単なことだった。嬉しい。
vscodeで作業するために準備
vscodeの拡張機能「MicroPico」がなんだかすごいらしいから入れた
MicroPico導入から使うまでの流れはこちらを参考にしました。
Raspberry Pi Pico W の LED を VS Code を使って、点滅させてみた。(RP-Pico チュートリアル) #VSCode – Qiita
大事そうなドライバをラズパイに入れる
有志作成(?)公式(?)の便利ドライバ
ボタン類の初期設定とか、画面に何かを表示するときに楽なメソッドがもう入ってる
↑このページの右上の[<> code]からzipをDL
これらをラズパイ内に配置
画像を表示するのに必要なpyファイルは以下の3つ
st7789py_mpy-master\lib
・st7789py.py
st7789py_mpy-master\tft_configs\waveshare_114
・tft_buttons.py
・tft_config.py
ラズパイの直下にlibフォルダを作ってそこに3つとも突っ込んだ

動作テストのためのソースを作る
動作チェックだけなら公式のデモソースでもいいんだけど、
あれはドライバを使わずゴリゴリ書かれてるから
ドライバの使い方の理解もしたいし自分で作った。
テストソースを作る① 描画テスト
LCDtest1.py
import time
import st7789py
import tft_config
# LCD 初期化
tft = tft_config.config()
print('赤')
# 画面を赤で塗りつぶし
tft.fill(st7789py.color565(255, 0, 0))
time.sleep(2)
print('緑')
# 画面を緑で塗りつぶし
tft.fill(st7789py.color565(0, 255, 0))
time.sleep(2)
print('青')
# 画面を青で塗りつぶし
tft.fill(st7789py.color565(0, 0, 255))
print('完了')
赤→緑→青の順に2秒間隔で切り替わって完了
テストソースを作る② ボタンテスト
LCDtest2.py
import time
import st7789py
import tft_config
import tft_buttons
# LCD 初期化
tft = tft_config.config()
# ボタン初期化
btn = tft_buttons.Buttons()
# ボタンの状態を保持するための変数
prev_pressed = None
while True:
# 今回のボタン状態を取得(Low = 押されてる)
is_pressed = (btn.keyA.value() == 0)
# 前回と状態が変わったときだけ処理する
if is_pressed != prev_pressed:
prev_pressed = is_pressed
if is_pressed:
tft.fill(st7789py.color565(255, 255, 255)) # 白
else:
tft.fill(st7789py.color565(0, 0, 0)) # 黒
ボタンを押してる間だけ白い画面になる
vscode側で停止押すまで動き続けるよ
テストソースの配置
ラズパイピコ直下に置いた

結線(配線)

Pico-LCD-1.14とラズパイピコは対になって
ガッチリ嵌め込める仕様になってるからぶっさすだけ。
自分は後々microSDのリーダーモジュールとも接続したいから
ブレッドボード上で線繋いでるよ

動かしてみよう
vscode上でテストソースを開いた状態で

vscode左下の「▷ Run」をクリックしたら実行できるよ

結果
LCDtest1.py 描画のテスト
LCDtest2.py ボタンのテスト
おわりに
数年ぶりに進捗あった。
次回は画像を表示させてみるよ。