RaspberryPiでセンサーが反応したらレッドショルダーマーチを流す

センサーが反応したらレッドショルダーマーチを流す

f:id:ueponx:20160529164041j:plain

最近、dアニメストアでボトムズをみたので触発されました。

レッドショルダーとは

レッドショルダー (RED SHOULDER) とはテレビアニメ『装甲騎兵ボトムズ』に登場するギルガメス軍という架空の国家の軍隊に所属する架空の部隊。 正式名称はギルガメス宇宙軍第10師団メルキア方面軍第24戦略機甲歩兵団特殊任務班X-1。(Wikipediaより引用)

詳細については

装甲騎兵ボトムズ - Wikipedia

レッドショルダー - Wikipedia

あたりを見てもらえればよいかと思います。

劇中、サンサ編のレッドショルダー関連映像の場面や『野望のルーツ』の終盤に流れる行進曲は、本作のために作成された曲ではなく、サントラ盤に収録されておらず、ファンの間では通称「レッドショルダーマーチ」と呼ばれていた(Wikipediaより引用)

このレッドショルダーマーチが劇中しつこいぐらいに流れるようになります。もう耳から離れません。

血塗られた右肩

そこで自分も主人公のキリコと同じ気分を味わうためにつくってみることにしました。 やることは単純なのですが、過去に書いた以下のエントリーの内容を利用する形になります。

uepon.hatenadiary.com

uepon.hatenadiary.com

簡単な仕組み

人感センサーを使ってセンサーが反応したらレッドショルダーマーチを流すことにします。 GPIOの18ピンで人間がいることを検知したら音楽再生トリガを発生させるといった単純なものになります。 ほとんど変更しなくてもよいのですが、曲がながれている間に再再生されてしまうと微妙な気分の悪さがあるので再生完了まではセンサー検知はしないようにしています。

人感センサーに関しては昔のエントリー同様

www.aitendo.com

を使用します。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import time
import RPi.GPIO as GPIO
import pygame.mixer

PLAYTIME = 49
SLEEPTIME = 1
SENSOR_PIN = 18

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)

pygame.mixer.init()
pygame.mixer.music.load("march.mp3")
pygame.mixer.music.play(-1)

try:
  while True:
    print GPIO.input(SENSOR_PIN)
    if(GPIO.input(SENSOR_PIN) == GPIO.HIGH):
      print("キリコを感知しました")
      pygame.mixer.music.unpause()
      time.sleep(PLAYTIME)
    if(GPIO.input(SENSOR_PIN) == GPIO.LOW):
      pygame.mixer.music.pause()
    time.sleep(SLEEPTIME)
except KeyboardInterrupt:
  pygame.mixer.music.stop()
  pygame.mixer.quit()
  pygame.quit()
  GPIO.cleanup()

これまでに書いたエントリーとの変更部分はあまりないのですが、キーボードで終了させた場合のキーボード割り込みの処理をいれています。

完成するとわかりますが、かなりむせる


PSソフト 青の騎士ベルゼルガ物語から「レッドショルダーマーチ」