Raspberry pi OS(32bit) で画面を縦方向に変更する

これ別に難しくなかったのですが、はまってしまったので書き加えておきます。

画面を縦方向にする

適当にぐぐると、 config.txt に display_rotate=n を書き加える方法が出てきます。ところが私の環境下ではうまくいきません。 display_lcd_rotate / display_hdmi_rotate というのもやってみましたが、これもうまくいきません。

そこで、いったんこの方法は置いておいて最近の Raspberry PiOS にあるディスプレイの変更を行うアプリがありましてそこで変更しました。こちらはうまく変更できました。

pygame が画面変更を認識しない?

実は画面を縦置きにしたかったのは、サイネージのような使い方を想定していたんですね。 OS は縦置きに対応しているわけですが、画面表示をさせたかったのは python のライブラリ pygame を使ったものになります。ここでトラブルが発生します。

pygame で画面を initialize しようとするのですが、どうもうまくいかない。エラーが出るわけではなく、描画のエリアがこちらが想定しているものとは違う。どうも pygame.FULLSCREEN で帰ってくる値が横置きのものになっているっぽいのです。どうやっても描画エリアが中途半端になってしまいます。

config.txt に戻ってみる

先ほど、うまくいかないからと言うことで保留にしていた config.txt を使った方法をもう一度試してみます。 OS が最近のバージョンになってからうまくいかなくなったようですね。 dtoverlay=vc4-kms-v3d というのが config.txt の最後の方にあります。これをコメントアウトさせて、 display_hdmi_rotate で回転方向を指定してやることでうまくいくことを確認しました。

config.txt の方は、 pygame も正常に認識してくれています。

半日つぶれました

ササッと書きましたが、半日つぶれました。ググっては修正・リスタート。ググっては修正・リスタート。この繰返し。特にリスタートが苦痛。時間かかりますからね。 pygame の方は、最初画像のポジショニングを間違えているのではないかと思って、そちらの方をいじっていました。

どうやっても特定のエリアにしか画像が表示されない。なんかおかしい。フルスクリーンではなく、画面いっぱいのウィンドウ表示だとうまくいく。フルスクリーンがうまくいかない。ということに気がついて、 initialize 段階での FULLSCREEN が正常な値を返していないのではないか。ということに気がつくまで長かった。

知識のなさを露呈するようなものですが、同じことで悩んでいる人に届くといいなぁと思って記事にしました。

投稿者プロフィール

kaizawa
kaizawaブロガー
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA