LEDにイメージを表示する/sense hatを動かす part3

シェアする

Pocket

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

さて、「sense hatを動かす」も第3回目となりますね。ここでは、今まで文字を出していた64個のLEDそれぞれに、イメージ即ち色を出してみます。

1.sense hat 上に色を表示する

さて、次のプログラムを動かしてみましょう。

from sense_hat import SenseHat

sense = SenseHat()

r = 255
g = 255
b = 255

sense.clear((r, g, b))

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

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

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

2.sense hat LEDマトリックス座標

Sense HAT LED matrix coordinatesから

Sense HATのLEDマトリクスは、x軸とy軸の座標系を使用します。両方の軸の番号は、左上隅の0(1ではなく)で始まります。

各LEDは画像の1ピクセルとして使用することができ、x、y表記を使用してアドレス指定することができます。

チューリアルにある座標は、上記の説明に従えば、青は (0, 2)、赤は(7, 4)となるわけです。

図のように光らせるには、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])

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

3.このコードが何を作成するのか推測できますか?

チュートリアルでは、下記のコードが示され、さあ、何が出るかなと問うています。8個の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])

(1) はて?何だろう

なんじゃ、こりゃ?笑顔のように見えるけど、・・・・・。

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

LEDが10ヶ所光ってます。プログラムでは8箇所しか指定していません!2箇所多いです。即ち、1番目のプログラムで表示されていたものが、そのまま残っているので、このような形になってしまったのです。

(2) なるほど!

そこで、LEDをクリアしてからやってみると、ちゃんと笑顔になりました。

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

ピクセルを個別に設定すると鮮やかに動作することができますが、複数のピクセルを設定したい場合はかなり複雑になります。 1つのピクセルをすべて変更するには、set_pixelsコマンドを使用します。

(1) 新チュートリアル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) 新チュートリアル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)

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

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

こちらは、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)

実行すると、色とりどりの表示がなされました。色使いも鮮やかできれいです。なぜ、このプログラムを外したのでしょうか?

Raspberry Pi Sense HAT – 6 センサー、8×8 LEDマトリックス、ジョイスティック

新品価格
¥4,200から
(2017/4/19 12:27時点)

前後の記事もよろしくお願いします。

LEDにテキストを表示する/sense hatを動かす part2

sense hatを動かす part4 LED表示編 その3

スポンサーリンク

シェアする

フォローする