名刺サイズの超小型PC「ラズパイ」で遊ぶ(第31回)

ラズパイの拡張ボード「Sense HAT」に搭載された加速度計、磁力計、ジャイロスコープでサイコロを作る(1/2 ページ)

 ラズパイの拡張ボード「Sense HAT」は、これまで紹介した湿度センサー、気圧センサーの他、加速度計と磁力計、ジャイロスコープの機能を備える「IMU」(Inertial Measurement Unit)を搭載しています。測定できる値は以下の通りです。

  • 加速度計:加速力を測定してSense HATがどちらに動いているのかを測定
  • 磁力計:コンパスのように地球の磁場を測定
  • ジャイロスコープ:Sense HATの運動量と回転を測定

 Sense HATは、IMUのセンサーでピッチ、ロール、ヨーのxyz軸3方向の動きを検出できます。

Sense HAT ピッチ、ロール、ヨーの3方向(ラズベリーパイ財団のWebページから抜粋)

 以下のプログラムを記述して「3jiku.py」のように名前を付けて保存し、実行させてみましょう。ラズパイを傾けて±1G以上の加速度を検知したときに、x、y、zの値が変化します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sense_hat import SenseHat
sense = SenseHat()
try:
    while True:
      acceleration = sense.get_accelerometer_raw()
      x = acceleration['x']
      y = acceleration['y']
      z = acceleration['z']
      x=round(x, 0)
      y=round(y, 0)
      z=round(z, 0)
      print("x={0}, y={1}, z={2}".format(x, y, z))
except KeyboardInterrupt:
  sense.clear()

 続いてはSense HATに流れている文字の向きが、Sense HATを傾ける方向によって変わるというプログラムを紹介します。ここではx軸が-1Gを検知すると180度向きを変え、y軸が1Gを検知すると90度、y軸が-1GWork270度というように変わっていきます。以下のプログラムを記述して「letter.py」などと保存し、実行してみましょう。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sense_hat import SenseHat
sense = SenseHat()
# "J"の文字を表示
sense.show_letter("J")
try:
  while True:
    acceleration = sense.get_accelerometer_raw()
    x = acceleration['x']
    y = acceleration['y']
    z = acceleration['z']
    x=round(x, 0)
    y=round(y, 0)
    z=round(z, 0)

    print("x={0}, y={1}, z={2}".format(x, y, z))
# 傾けた方向に応じて流れる向きを変える
    if x  == -1:
      sense.set_rotation(180)
    elif y == 1:
      sense.set_rotation(90)
    elif y == -1:
      sense.set_rotation(270)
    else:
      sense.set_rotation(0)
except KeyboardInterrupt:
  sense.clear()

 Sense HATの傾きに応じて、白い「J」という文字がくるくると変わったでしょうか。

Sense HAT 「J」の文字がくるくると変わる

 続いてご紹介するのは、x、y、z軸のいずれかの方向に強い加速度が加わると「!」が表示されるというプログラムです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sense_hat import SenseHat
sense = SenseHat()
red = (255, 0, 0)
try:
  while True:
    acceleration = sense.get_accelerometer_raw()
    x = acceleration['x']
    y = acceleration['y']
    z = acceleration['z']
    x = abs(x)
    y = abs(y)
    z = abs(z)
    if x > 1 or y > 1 or z > 1:
      sense.show_letter("!", red)
    else:
      sense.clear()
except KeyboardInterrupt:
  sense.clear()

 Sense HATを上下左右に振ってみると「!」という赤い文字が表示されたでしょうか。

Sense HATを使ったサイコロを作ってみよう

印刷する
SNSでシェア
SpecialPR

名刺サイズの超小型PC「ラズパイ」で遊ぶ

今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。

この連載の記事をもっと見る

この記事の著者

関連記事

こんなメディアも見られています

ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。

メールマガジンを配信中
メールマガジンを配信中

国内外の業界動向、AIやクラウドなどの最新技術、キャリア情報など今知りたい情報をまとめてお届けします。

いますぐご登録

本日の新着記事

アクセスランキング

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10

ITmedia NEWS SNS

X @itmedia_newsをフォロー

インフォメーション

ITmediaNEWSをフォロー

あなたにおすすめの記事PR