ラズパイの拡張ボード「Sense HAT」に搭載された加速度計、磁力計、ジャイロスコープでサイコロを作る:名刺サイズの超小型PC「ラズパイ」で遊ぶ(第31回)(2/2 ページ)
ラズパイ向け拡張ボード「HAT」には加速度計と磁力計、ジャイロスコープの機能も搭載されています。今回はサイコロを作ってみましょう。
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サイトを参考にしながら、こちらの活用法についても考えてみてはいかがでしょうか。
関連記事
- ラズパイで気温と湿度を測定、LINEで通知を受け取る 〜前編〜
今回は温湿度センサーモジュールとラズパイを組み合わせ、LINEと連携させる方法を紹介します。 - ラズパイを無線LANルーター化する 〜アクセスポイント編〜
家庭内で無線LANルータを使っている人は多いかと思います。今回はそのルーター機能をラズパイに持たせて、ラズパイを使った無線LANルーターの構築方法についてご紹介します。 - 本格的な撮影が楽しめる公式カメラモジュール「Raspberry Pi High Quality Camera」を試す
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。Raspberry Pi公式のカメラとして本格的な撮影が楽しめる「Raspberry Pi High Quality Camera」を紹介します。 - ラズパイで新型コロナウイルス解析に参加する 〜Ubuntu Serverの構築編〜
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。今回はラズパイで。 - ラズパイでスマートスピーカーを作る 「アレクサ!あしたの天気は?」 〜ソフトウェア準備編〜
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。今回は米Amazonが開発したAIアシスタント「Alexa」をラズパイで使えるようにしてみます。 - これが“らずキャン△”だ! キャンプ場で役立つ「気温・湿度・気圧センサー」の作り方
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。まずはキャンプ場で気温、湿度、気圧を測れるデバイスを作ってみます。 - ラズパイで「YouTube」と「Amazon プライムビデオ」を見る
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。音楽や動画のメディアサーバ化するために入れたOS「OSMC」で、YouTubeやAmazon プライムビデオなどを楽しんでみましょう。 - ラズパイで自宅ファイルサーバを作る
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。ネット経由でアクセスできる自宅ファイルサーバをラズパイで構築してみます。 - ラズパイで動体検知対応の監視カメラを作る
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。ラズパイで動くソフト「motion」を使うと、カメラの前で何かが動いた瞬間に静止画や動画を撮影して記録できます。今回はラズパイで監視カメラを作ってみます。
Copyright © ITmedia, Inc. All Rights Reserved.