Sense HAT でドット絵( set_pixcel , set_pixel )

メモ:  Category:raspberry_pi

Sense HAT で LED に文字を出力する」に引き続きチュートリアルを参考にしながら SenseHAT で LED を制御していきたいと思います。

LED を1つずつ点灯させる

8 x 8 の LED を使ってドット絵を描いていきます。 LED は、縦 8 ・ 横 8 の 64 個用意されておりそれぞれ独立して点灯させることができます。

それでは、次の画像のようなイメージでプログラムを作成してみます。

ドット絵の完成図
from sense_hat import SenseHat

sense = SenseHat()
sense.clear(80, 100, 40)
sense.set_pixel(3, 1, [255, 255, 255])
sense.set_pixel(4, 1, [255, 255, 255])

sense.set_pixel(2, 2, [255, 255, 255])
sense.set_pixel(3, 2, [255, 255, 255])
sense.set_pixel(4, 2, [255, 255, 255])
sense.set_pixel(5, 2, [255, 255, 255])

sense.set_pixel(1, 3, [255, 255, 255])
sense.set_pixel(2, 3, [255, 255, 255])
sense.set_pixel(3, 3, [255, 255, 255])
sense.set_pixel(4, 3, [255, 255, 255])
sense.set_pixel(5, 3, [255, 255, 255])
sense.set_pixel(6, 3, [255, 255, 255])

sense.set_pixel(2, 4, [255, 255, 255])
sense.set_pixel(3, 4, [255, 255, 255])
sense.set_pixel(5, 4, [255, 255, 255])

sense.set_pixel(2, 5, [255, 255, 255])
sense.set_pixel(3, 5, [255, 255, 255])
sense.set_pixel(5, 5, [255, 255, 255])

sense.set_pixel(2, 6, [255, 255, 255])
sense.set_pixel(3, 6, [255, 255, 255])
sense.set_pixel(5, 6, [255, 255, 255])

脱インタラクティブシェル!(エディタで作成したプログラムの実行)」で開発環境を変更している場合、作成したプログラムを保存し [F5] キーを押下することでプログラムを実行します。

set_pixel は、1つの LED を点灯させることができ x , y , 点灯色を引数とします。また、 sense.clear(80, 100, 40) で全ての LED を緑色にした後 set_pixel で描いています。

引数 Type 説明
x Integer LED の位置 左から数えて 0~7
y Integer LED の位置 上から数えて 0~7
pixel List 点灯色(RBGでそれぞれ指定)

又は

引数 Type 説明
x Integer LED の位置 左から数えて 0~7
y Integer LED の位置 上から数えて 0~7
r Integer
g Integer
b Integer

まとめて設定する set_pixels

set_pixel では、1つずつ LED の設定をしましたが、 set_pixels を使うとすべてのLEDの点灯(色)設定できます。

from sense_hat import SenseHat

sense = SenseHat()

X = [255, 0, 0]
O = [255, 255, 255]

question_mark = [
O, O, O, X, X, O, O, O,
O, O, X, O, O, X, O, O,
O, O, O, O, O, X, O, O,
O, O, O, O, X, O, O, O,
O, O, O, X, O, O, O, O,
O, O, O, X, O, O, O, O,
O, O, O, O, O, O, O, O,
O, O, O, X, O, O, O, O
]

sense.set_pixels(question_mark)

X と O に出力したい色を設定し、 8 x 8 の LED に合わせて question_mark の配列(結果的に2次元配列)を作成しています。 LED と配列が対応しており分かりやすくなったかと思います。

引数 Type 説明
pixel_list List 点灯色の配列64個

bluenote by BBB