仕事納めはまだですが,年末の仕事もだいぶ落ち着いてきたところでブログ更新です. 今回も自作ネタですが,某所のクリスマスパーティにてだいぶ好評をいただいた早押しクイズ装置の詳細のご紹介.まずは完成品の画像と,動いているところの動画から.

早押し装置全景

上の写真の他に,USBモバイルバッテリーと,適当なアンプ内蔵スピーカーが必要です.動画で使っているのは,オーディオテクニカのBoogieBox ですね.

4つついているスイッチは千石電商で買ってきたゲームスイッチですね.発泡スチロールを切って作った台に接着してあります.右上にある丸いLEDは,NeoPixel 16連フルカラーLEDです.これらをArduino バニラシールドにつないで,Arduinoシールドとしてまとめてあります.プルアップ抵抗をつけるのが面倒だったので,スイッチのプルアップ抵抗は全てArduinoの内部プルアップ抵抗を使っています.

Arduinoとしては,タッチセンサーを12個もオンボードで搭載し,かつMicroSDカードスロットとMP3プレイヤー機能も持っている,Bare ConductiveのTouch Boardを使用しました.本来はタッチセンサーを導電性ペンなどで拡張して,手書きのスイッチなどを作れるところが特徴なんですが,今回は早押しの演出はやっぱりゲームスイッチだろう!ということで,あえて物理的なスイッチを使っています.

Touch Board用のスケッチはこちら.

コンパイルするためには,Touch Board上のタッチセンサーのライブラリNeoPixel LEDのライブラリMP3プレイヤーとSDカードのライブラリが必要です. Touch Boardに入れるSDカードには,6曲の適当な音声データをMP3にして入れておきます.上のスケッチだと,0番: 出題時の音,1番:早押しボタンが押された瞬間に鳴る音,2番: 正答時の音,3番: 誤答時の音,4番: 勝ち抜け時の音,5番: 回答時間中に流す音(カウントダウン的な),となっています.

そして上記のスケッチを動かすと,早押しクイズの流れは以下のようになります.

  1. まずタッチスイッチの0番を押し,出題者が問題を読み上げる
  2. (必要なら)タッチスイッチの2番を押し,カウントダウン的な音を鳴らして回答者にプレッシャーをかける
  3. 早押しボタンが押されると,スイッチの色と同色にLEDが点灯し,音が鳴る.これ以後,再びタッチスイッチの0番,10番,11番のいずれかが押されるまで,他の早押しスイッチは反応しなくなる.
  4. 正答か誤答かを判定し,正答ならタッチスイッチの10番,誤答ならタッチスイッチの11番を押す
  5. 勝ち抜けポイントがたまっていたら,タッチスイッチの1番を押して勝ち抜けさせる
  6. 問題がまだ残っていたら,最初の手順に戻る

今回の装置は作るのが簡単な割に,パーティでは大活躍した実用性が高いものになりました.ただ,これで完全ではなくて,

  • スイッチ1つがGPIO1つに対応するので,スイッチをあまりたくさん増やせない.
  • できればスイッチ自体が発光するLED内蔵のものを使いたい(高い&電流食うけど)
  • スイッチの配線が直接半田付けでは絡まるので,Groveコネクタとかにしたい
  • できれば例の帽子が(ry

というToDoもあるので,来年以降少しずつグレードアップさせていきたいと思っています. とりあえずMCP23017は調達したので,スイッチの増設対応かな.