nekoboardで早押しボタンをつくる

投稿者:

スイッチサイエンスでは、nekoboardというセンサーボードを販売しています。このボードは「Scratch」というビジュアルプログラミング環境で使うためのセンサーボードです。このセンサーボードを使って早押しボタンを作ってみました。

Scratchは、アメリカのマサチューセッツ工科大学(MIT)で開発されたビジュアルプログラミング環境で、ブロックの組み合わせで簡単にプログラミングを行えるのが特長です。下に貼った動画のように、ネコちゃんがマウスカーソルにくっついてくるようにしつつ、ネコちゃんをぐるぐる回すのも簡単にできます。

そんなScratchのプログラミングに、コンピュータの外の世界の要素を追加するためのセンサーボードがnekoboardです。Scratchとnekoboardだけでどんなことが出来るのか知りたい方はこちら

nekoboardには4つの抵抗センサー入力が用意されています。Scratch上では、0~5Vが0~100の数として表されます。さらに、繋がっているか繋がっていないかをチェックするブロックもあります(状態は「はい」か「いいえ」で取得できる)。そこで今回は、この入力を利用して早押しボタンを作ってみました。

100円均一ショップで、照明部分を押して電源のオンオフを切り替えることができるライトを購入してきました。今回はこれを早押しボタン代わりに使います。その他にも、ニッパーやドライバー、セロハンテープと1.5mくらいの電線を用意します。電線はあとでピンソケットに差し込むので、細めのタイプがお勧めです。

裏にあるネジを取って分解すると、4つの大きな部品と4つのネジに分類できました。今回は回路が載っている右上のパーツを改造します。

改造前は上の写真のような感じです。スイッチを押すと電源とLEDが点灯する回路が繋がってライトが光るしくみです。今回はスイッチの部分だけを利用します。

ニッパーでスイッチに繋がっている2つの線を切り、スイッチに繋がっている方の電線の被膜を1cm弱ほど剥がしておきます。LED側および電源(+)に繋がっている電線はもう使いません。

別に準備しておいた電線は半分に切り、こちらもそれぞれ片側の被膜を1cm弱剥がしておきます。

今被膜を剥がした電線と、スイッチにつながる電線とをねじって接続してセロハンテープで固定します。このセロハンテープには、固定だけではなく絶縁の効果もあります。きちんと絶縁しないと電線同士が接触して回路が繋がってしまい、スイッチが押されたのと同じことになってしまうことがあるため、絶縁はとても大事です。そしてもうひとつの電線でも同じ作業をしたら完成です。

改造後の本体。蓋をしてネジも締め、元通りに組み立てます。

最後に、nekoboardに差し込むために電線の橋の被膜を剥がしてねじっておきます。nekoboardに差し込みやすくなります。

nekoboardのセンサー端子に接続し、準備完了!Scratch上で試してみます。今回はAと書いてあるピンソケットに差し込みました。

上の図のようなプログラムを作成しました。ボタンが押されると猫が10歩進みます。押している間だけオンの押しボタンではなく、ボタンを一度押すとオン、もう一度押すとオフになるタイプのボタンだったので、プログラムには一工夫が必要です。ボタンの状態を保存しておいて、変化があったかないかをチェックしつづけます。ボタンの状態を保存しておく変数(上の図では"state")をつくるときは、「このスプライト用」の変数にしておきましょう。「ずっと」ブロックの前に初期化作業を入れておかないと、スタートのために旗ボタンを押した時にボタンが押されたと勘違いしてしまう場合があります。これでボタン押し検知の部分は完成です。抵抗センサー入力は4つあるので、せっかくですしプレイヤーは4人対応にします。先ほどと同じボタンをもう3つ作ったら、ねこのスプライトを複製して、コスチュームを好きなものに変えておきます。

四人プレイヤー対応のためにもう少しスクリプトを改良します。複数の人が同時にボタンを押した時、どのボタンが最も早く押されたかを確認する部分です。この機能の実装にはメッセージを使います。メッセージはスプライト全員への合図のようなものです。合言葉を決めておいて、その合言葉に合わせて動作をすることができます。ちょっとややこしいので、スクリプトを具体的に見ながら解説してみます。

上の図は猫のスクリプトです。ボタンが押されると猫は「はい!」と合図のメッセージを流します。誰からの合図なのかが分かるように、メッセージ内部に差出人の名前を書いておきます。

次の図は審判のスクリプトです。審判はそのメッセージを受け取ると、先に誰かがメッセージを送ってきていないかを確認するためにlockが0かどうかをチェックします。もし最初にメッセージを送ってきた(lockが0だった)人であれば、lockを1にして既に誰かがメッセージを送ってきた(lockを1にする)という証拠を残して、ねこを指名します。これを他の動物に対しても用意してあげればいいわけです。どうでしょうか、理解できましたか?スペースキーをリセットボタンの代わりにしたら、完成。できた作品がこちらです。

今回は簡単な工作も交えながら、nekoboardの活用例を取り上げてみました。Scratch単体でも面白いのですが、こうしたフィジカルな要素が加わるともっと楽しいものになります。ぜひ皆さんもセンサーボードを手に入れて遊んでみてください。nekoboardはこちらから購入できます。センサーボードを使った作品で何か面白いものが出来たらはんだづけカフェに持ってきてみるなどしてぜひ共有してみて下さいね。

なお、今回作ったプログラムはこちらからダウンロードできます。ダウンロードにはScratchサイトへの会員登録が必要です。

最後までお読みいただきありがとうございました!