0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elecrow の5インチ液晶。
IMG_20240708_225324.jpg

これにRaspberryPiをつなげて、framebuffer を使って描画してみる。

環境

  • Raspberry Pi WH
  • Raspberry Pi OS Lite (2024-07-04-raspios-bookworm-armhf-lite.img.xz)
  • Elecrow 5 Inch 800x480 TFT Raspberry Pi Touch Display with GPIO Backlight Control

下準備

$ sudo apt install fbi
$ sudo apt install imagemagick
$ sudo apt install fbcat

操作

適当に作った heartbeatbg2.png を使って、

$ sudo fbi -d /dev/fb0 -a  /home/pi/heartbeatbg2.png 

とすると以下のようにエラーが出た。

using "Noto Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)

これは ssh で操作していたので、以下のようにターミナルを指定すると問題なく表示された。

 $ sudo fbi -T 7 -d /dev/fb0 -a  /home/pi/heartbeatbg2.png 

-T 7 の後ろの数字は1とか2とかでも問題ありませんでした。

これはディスプレイに表示したもの。
IMG_20240708_204628.jpg

HDMIケーブルを5inLCDに繋ぎ変えて表示。

IMG_20240708_213501.jpg

以下のようにすると framebuffer に表示しているイメージを画像ファイルにキャプチャできる。

$ sudo fbgrab -c 1 -d /dev/fb0 -i image.png

キャプチャしたもの。

image.png

下に余計な情報がついているのでそれを表示しなくして、時刻のダミー文字列を合成してを表示してみる。

$ convert -font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf -pointsize 130 -fill "#C00000"  -draw "text 520,350'60'" heartbeatbg2.png image2.png ; convert -font /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf -pointsize 45 -fill "#FFAA00" -draw "text 60,450'2024/07/08'" image2.png image3.png ;convert -font /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf -pointsize 160 -fill "#FFFFAA" -draw "text 40,150'22:25:35'" image3.png image4.png ; sudo fbi -T 2 -d /dev/fb0 -noverbose image4.png

image.png

正しい時刻を取得するようにして、無限ループ。 なお HeartBeat は単にかっこつけるだけのランダム数字。


#!/bin/bash
while true
do
  convert -font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf -pointsize 130 -fill "#C00000"  -draw "text 520,350'$((RANDOM % 50 + 30))'" heartbeatbg2.png image2.png
  convert -font /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf -pointsize 45 -fill "#FFAA00" -draw "text 60,450'`date +"%Y/%m/%d %A"`'" image2.png image3.png
  convert -font /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf -pointsize 160 -fill "#FFFFAA" -draw "text 40,150'`date +"%H:%M:%S"`'" image3.png image4.png
  sudo pkill fbi
  sudo fbi -T 1 -d /dev/fb0 -noverbose image4.png
done

2024/07/10 追記:
sudo pkill fbi を追加しました。

fbi は起動すると終了せずずっとプロセスに残っており、これが無い状態だとしばらくすると fbi プロセスばっかりでシステムがハングしてしまいました。

image.png

RaspberryPi WH だとノーウェイトで2秒ぐらいでループ。まあこれでいいかな。

2024/7/10 追記:
image.png
ちらつきが激しかったり、convvert などの負荷が高かったりするので別のやり方で作り直しました。

「RaspberryPi で pygame で x11 を使わず(?) 遊ぶ」
https://qiita.com/nanbuwks/items/96538470dacd3fb217de

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?