sense hatのLEDマトリクス上に様々なイメージを表示する

2017年4月26日

新チュートリアルを基にリニューアルしました。  2018/10/6

前回記事では sense hatをraspberrypiに取りつけた後、チュートリアルに従って64個の LED に文字を表示しました。

第2弾である本記事では、LED全体にイメージを表示してみましょう。

前回と同様に、sense hat のチュートリアルに従って進めていきます。

今回は、チュートリアルにあるDisplaying images の章の内容を実行していきます。

スポンサーリンク

LEDマトリックス全体を単一の色で塗りつぶす

始めに、選択した色で clearメソッドを使用して、LEDマトリックス全体を単一の色で塗りつぶしてみましょう。

from sense_hat import SenseHat
sense = SenseHat()
r = 255
g = 255
b = 255
sense.clear((r, g, b))

結果はこうなりました(動画にしたのは、こうしないときれいな結果が取れなかったためです)。

チュートリアルに、以下の説明が出ています。

変数 r、g、及び b は赤、緑、青の色を表します。それらの値は、各色の明るさを指定します。各値は 0 から 255 の間です。上記のコードでは、各色の最大値が使用されているため、結果は白になります。


シングルピクセルの設定

Sense HATのLEDマトリクスは、x軸とy軸の座標系を使用します。両方の軸の番号付けは、左上隅の0(1ではなく)から始まります。各LEDは画像の1ピクセルとして使用でき、x、y表記を使用してアドレス指定できます。

チュートリアルにある表を転載していますが、下記のように軸の番号付けがされています。

上記の青及び赤の座標は、上記の説明に従って、青は (0, 2)、赤は (7, 4) になります。

sense hat を図のように光らせるには、set_pixelメソッドを使用します。

from sense_hat import SenseHat
sense = SenseHat()
sense.set_pixel(0, 2, [0, 0, 255])
sense.set_pixel(7, 4, [255, 0, 0])

動かしてみると同じように LED が光りました。写真だと色がキレイに写りませんが、ご容赦ください。

さて、チュートリアルでは、下記のコードが示され、さあ、何が表示されるかなと問うています。

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

8個の LED を表示することで何が現れるでしょうか?

早速やってみましたが、これは何でしょうか?笑顔のように見えますが…。

60爺は、暫く考えてやっとわかりました。

写真では LED が10ヶ所光ってます。しかし、プログラムでは8箇所しか LED 指定をしていません!

2箇所多いです。

即ち、一つ前の演習で表示した青と赤のLEDが、そのまま残っているので、このような形になってしまったのです。

原因がわかりましたので、LEDをクリアしてからやってみました。

そうしたところ、以下のように笑顔が表示されました。

笑顔の表示の画像

複数のピクセルを設定する

ピクセルを個別に設定すると鮮やかに動作することができますが、複数のピクセルを設定したい場合はかなり複雑になります。

1つのピクセルをすべて変更するには、set_pixelsコマンドを使用します。

新チュートリアル1つ目のプログラム

新しいチュートリアルに出ているプログラムは2つあります。

まず一つ目がこれです。

from sense_hat import SenseHat
sense = SenseHat()
# Define some colours
g = (0, 255, 0) # Green
b = (0, 0, 0) # Black
# Set up where each colour will display
creeper_pixels = [
g, g, g, g, g, g, g, g,
g, g, g, g, g, g, g, g,
g, b, b, g, g, b, b, g,
g, b, b, g, g, b, b, g,
g, g, g, b, b, g, g, g,
g, g, b, b, b, b, g, g,
g, g, b, b, b, b, g, g,
g, g, b, g, g, b, g, g
]
# Display these colours on the LED matrix
sense.set_pixels(creeper_pixels)

実行するとこんな感じです。

新チュートリアル2つ目のプログラム

二つ目がこれです。4つのカラーを指定しています。

from sense_hat import SenseHat
sense = SenseHat()
# Define some colours
B = (102, 51, 0)
b = (0, 0, 255)
S = (205,133,63)
W = (255, 255, 255)
# Set up where each colour will display
steve_pixels = [
B, B, B, B, B, B, B, B,
B, B, B, B, B, B, B, B,
B, S, S, S, S, S, S, B,
S, S, S, S, S, S, S, S,
S, W, b, S, S, b, W, S,
S, S, S, B, B, S, S, S,
S, S, B, S, S, B, S, S,
S, S, B, B, B, B, S, S
]
# Display these colours on the LED matrix
sense.set_pixels(steve_pixels)

何か、よくわからない表示ですね。

旧チュートリアルのプログラム

以前のチュートリアルに出ていたプログラムを載せておきます。こちらは、8種類ものカラーをして指定していますね。

  o = [255,127,0]
  y = [255,255,0]
  r = [255,0,0]
  g = [0,255,0]
  b = [0,0,255]
  i = [75,0,130]
  v = [159,0,255]
  e = [0,0,0]
image = [
  e,e,e,e,e,e,e,e,
  e,e,e,r,r,e,e,e,
  e,r,r,o,o,r,r,e,
  r,o,o,y,y,o,o,r,
  o,y,y,g,g,y,y,o,
  y,g,g,b,b,g,g,y,
  b,b,b,i,i,b,b,b,
  b,i,i,v,v,i,i,b
  ]
sense.set_pixels(image)

実行すると、色とりどりの表示がなされました。色使いも鮮やかできれいです。

なぜ、このプログラムを外したのでしょうか?

スポンサーリンク

最後に

今回の記事では、LED全体にイメージを表示してみました。

今回は、チュートリアルにあるDisplaying images の章の内容を実行してみました。

色々な演習が出来ましたが、前回の演習の内容が残っており、うまく表示が出来ない場合もありました。

新たなチュートリアルでは、消えてしまった演習もありました。過去のが良かったように思ったものもありましたね。

■「sense hatで遊ぶ!」の記事は次の通りです

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら