名刺サイズの超小型PC「ラズパイ」で遊ぶ(第31回)
ラズパイの拡張ボード「Sense HAT」に搭載された加速度計、磁力計、ジャイロスコープでサイコロを作る(2/2 ページ)
Sense HATを使ったサイコロを作ってみよう
ここまでの内容を踏まえて、Sense HATを使ったサイコロを作ってみましょう。サンプルのプログラムが公開されていますので、それをなぞりながら解説します。
Sense HATには、以下のような内容をプログラムの中に記述すると、8×8のLEDそれぞれをコントロールできます。まず変数に代入する色を以下のようにします。
b = [0, 0, 0]
g = [0, 255, 0]
r = [255, 0, 0]
bは黒(非点灯)、gで緑、rで赤に点灯するように指定したあと、8×8のマトリックスを以下のように指定すると、指定した場所のLEDがそれぞれの色で表示されます。
x= [
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
]]
この場合は真ん中にある4つのLEDが緑に点灯するという指定です。これを応用すれば、サイコロの1から6までの目を作ることができそうですね。プログラムは以下のようになります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sense_hat import SenseHat
import time
import random
sense = SenseHat()
sense.clear()
sense.show_message("Shake to roll!")
b = [0, 0, 0]
g = [0, 255, 0]
r = [255, 0, 0]
one = [
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
]
two = [
b,b,b,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,g,g,b,
b,b,b,b,b,g,g,b,
b,b,b,b,b,b,b,b,
]
three = [
g,g,b,b,b,b,b,b,
g,g,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,g,g,
b,b,b,b,b,b,g,g,
]
four = [
b,b,b,b,b,b,b,b,
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
b,b,b,b,b,b,b,b,
]
five = [
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
]
six = [
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
]
def roll_dice():
r = random.randint(1,6)
if r == 1:
sense.set_pixels(one)
elif r == 2:
sense.set_pixels(two)
elif r == 3:
sense.set_pixels(three)
elif r == 4:
sense.set_pixels(four)
elif r == 5:
sense.set_pixels(five)
elif r == 6:
sense.set_pixels(six)
try:
while True:
x, y, z = sense.get_accelerometer_raw().values()
x = abs(x)
y = abs(y)
z = abs(z)
if x > 1.4 or y > 1.4 or z > 1.4:
roll_dice()
time.sleep(1)
except KeyboardInterrupt:
sense.clear()
このプログラムでは、先ほどのようにLEDの色を変えることで1~6の目を表現するとともに、「r = random.randint(1,6)」でランダムに選んで表示されるようにしています。ラズパイを振ると、それぞれの色の目が表示されます。
プログラムの以下の部分で色を指定します。0~255までの値を入れて変更できます。
b = [0, 0, 0]
g = [0, 255, 0]
r = [255, 0, 0]
サイコロなら背景は白だろうと、試しに「b = [255, 255, 255]」にしてみましたが、あまりにまぶしくてやめました。青で表示したい場合は「[0, 0, 255]」としてください。
これまで3回にわたってSense HATを紹介してきました。これにはあとジョイスティックが取り付けられているので、ラズベリーパイ財団のWebサイトを参考にしながら、こちらの活用法についても考えてみてはいかがでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
資さんうどん、従業員の退職理由などが外部から閲覧可能に 委託先の勤怠システムに設定不備
-
2
NEC、委託先の情報漏えいで謝罪 「セキュリティ事業を手掛ける企業として反省」
-
3
VTuber「兎田ぺこら」グッズにSNSで風評被害→示談成立 「保護者同伴で謝罪などがあったため」
-
4
JALの予約システムに不正アクセス 約9万人分の予約情報が漏えい 一部ではパスポート番号も
-
5
GMO、ランサム被害にあった顧客に新しいPC提供へ 犯行グループは1人の顧客情報公開か
-
6
NECのルータ「Aterm」、PHP脆弱性の影響なし 設定画面URLの「.php」は無関係
-
7
メアドを検索→AIで“その人専用フィッシングメール”を生成する手法、クリック率が約2.7倍に 7000人以上で実験
-
8
GMO不正アクセスの犯人サイト、ドメイン停止を確認
-
9
「対策を後回しにしたサーバが軒並み狙われている」 相次ぐ不正アクセスにラックCTOが警鐘
-
10
Anthropic、独自の“創薬活動”に着手 社員1人のバイオ企業を買収、小児難病の治療薬研究を進める
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR