Lispと一緒(45) Wio Terminal、LCD画面の設定

Joseph Halfmoon

前回より練習台をラズパイPico2機からWio Terminalに変更。LCD画面表示用の関数どもの練習のためです。今回はディスプレイ設定のキホン的なところを確認。とりあえず前回同様のLCDへの文字列の出力を使って設定を確認してみました。しかしデフォルトの文字サイズでは老眼の目には見えんぞなもし。

※Lispと一緒 投稿順 index はこちら

※実機確認は Wio Terminal で行ってます。

※使用させていただいとります uLisp のバージョンは 4.6b (Arm用)です。

Graphics extensions

前回、uLisp4.6b の再ビルドを行いましたが、グラフィクス機能はオプションの扱い(といってコメントアウトを1か所外すだけでビルドできますが)です。御本家マニュアルページでは以下に解説があります。

Graphics extensions

上記を読めばわかる話ですが、お惚け老人が理解したところをかいつまんだものが以下に。

標準登載されている文字セットは、IBM PCのコードページ437(PC-DOS使っていた人には多分お馴染みさん)に準拠している。サイズは横5 縦7(チイセーです。老人には辛いよ。)、デフォルト色は黒字に白色。なお Wio Terminalは320×240ドット(QVGAて言っていたサイズ。)

色指定はハード的には16ビット整数、MSB側からR5,G6,B5。黒が0で白が65535。しかし、上記のマニュアルページで定義されている rgb 関数を定義すると R G Bの各数値から設定できるのでお楽。

(defun rgb (r g b)
  (logior (ash (logand r #xf8) 8) (ash (logand g #xfc) 3) (ash b -3)))

ただし、上記関数はRGB各色について、0~255の数値で受け取り、それぞれの上位ビットを設定してくれる(256で正規化的な。)

今回設定確認に利用した関数

前回、(with-gfx (str) … でuLispからの文字出力先をLCDに向けることをやったので、今回もその方法をチョイ変で画面出力する関数が以下に。

(defun testprint (rt x y pstr c)
  (set-rotation rt)
  (fill-screen)
  (set-text-size 2)
  (with-gfx (str)
    (set-cursor x y)
    (set-text-color c)
    (princ pstr str)))

老眼の老人用に文字サイズは2倍に固定っす。

まずは画面のローテーション確認

LCD画面は4通りの「ローテーション」を設定できます。上記のテスト関数で4通り全てをやってみるシーケンスが以下に。文字色は白なのよ。

(testprint 0 0 0 "set-rotation 0" (rgb 255 255 255))
(testprint 1 0 0 "set-rotation 1" (rgb 255 255 255))
(testprint 2 0 0 "set-rotation 2" (rgb 255 255 255))
(testprint 3 0 0 "set-rotation 3" (rgb 255 255 255))

結果が以下に。rotation

ローテーションは、「3」にしておくのがWio Terminalのスタイル的にはフツー。でも回転も簡単。

画面の反転

また、画面の反転も簡単、invert-display関数に真(t) を与えるか偽(nil)を与えるかで制御できます。(invert-display t)した結果が以下に。inv

背景色の設定(クリア)

デフォルトの背景色は黒(0)ですが、色の設定も簡単。RGBのGにだけ最大値をたててみるのが以下です。

(fill-screen (rgb 0 255 0))

画面は緑ね。fillGreen

文字表示のラップアラウンド

テキスト出力を画面上でラップさせるか否かのスイッチもあり。以下でラップ。

(set-text-wrap t)

ラップさせたくなければ以下で。

(set-text-wrap nil)

wrap上記の左がラップ、右がラップせずです。なお、両方とも文字サイズは2倍なので、デフォルトの1倍サイズであればこの2倍の文字幅が表示できる筈。老眼老人は知らんけど。

Lispと一緒(44) Wio Terminalでグラフィクス出力の準備 へ戻る

コメントを残す

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