背景
表示用に使っているのは、以下の SPI 接続ディスプレイ。
3.5インチ TFT LCD(480×320)
SPI 接続
ILI9486 framebuffer
ADS7846 タッチ
CUQI RP-01
Raspberry Pi 5 を PBX(電話交換機)として 稼働させる場合、PBX はバックグラウンドで動作するため、
デスクトップが長時間表示される。
そのため、TFT LCD の 焼き付き(イメージリテンション) が起きないか気になった。
SPI液晶の制約
この系統のディスプレイは以下が使えない。
DPMS
/sys/class/backlightバックライト OFF 制御
X11 用スクリーンセーバー
仕様上、バックライト制御インターフェースが存在しない。
参考:
https://www.lcdwiki.com/3.5inch_RPi_Display
つまり、
OS 任せの画面消灯は不可能(らしい)
方針
ハード改造は避けたい。
ならば ソフトウェアで画面を動かすしかない。
そこで、
/dev/fb0に直接描画常に動く表示
タッチしたら即復帰
という アプリ型スクリーンセーバーを自作することにした。
作ったもの
Windows 98 時代にあった、3D 文字が画面内を動くスクリーンセーバー風の表示。
特徴:
フレームバッファ直描画(RGB565)
擬似 3D(押し出し+陰影)
画面端で反射しながら移動
常時移動するため焼き付き防止になる
ADS7846 タッチで即終了し元画面に復帰
X11 / Wayland 不要
SPI 液晶向けとしては、これが一番素直な解決策ではないでしょうか。
サービスとして起動する
PBX なので、起動時から常駐させたい。
systemd サービスとして登録する。
インストール
有効化(自動起動)
これで、
起動後は常に待機
一定時間無操作でスクリーンセーバー起動
タッチで即復帰
という動きになる。
停止・無効化
プログラムは以下にあります。
https://github.com/7m4mon/rpi-spi-fb-screensaver

