MUDAなことをしよう。MUDAなことをしよう。バラエティキットを購入致しました。+オリジナルマスキングテープ+専用おまけパーツセット本当はロボットキットの方も購入したかったのですが、奥様に難色を示されたので断念。バラエティキットの方は「子ども(一歳数ヶ月)も一緒に遊べるから!」という説得で許可が下りました。実際遊びまくっているウチの長男。一緒に作ることは当然できませんでしたし、遊べて「おうち」と「ピアノ」だけなのですが、大変気に入ってくれているようで、朝起きるとまず私の部屋にやってきて「あれやらせろ」と手を伸ばします。用意されている5つのToy-Con(「リモコンカー」「つり」「おうち」「バイク」「ピアノ」)でも十分楽しめるのですが、やはりこのソフトのキモは『Toy-Conガレージ』でしょう。簡単にいうと、「Switch本体とJoy-Conの機能を好きに組み合わせて、あなただけのオリジナルの遊び(Toy-Con)を発明しよう!」という内容です。ネット上では色々なオリジナルToy-Conがアップされてきています。音ゲーを作ったり、ゲーム&ウォッチを再現したり、視力検査装置を作ったり、ただ自分の絵を見て褒めてくれる装置を作ったり。思うものがたくさんあって大変楽しいです。LABO』は「モノづくりは興味あるけど、電子工作とかプログラムとかムズかしいよね」と思っていた人たちを引っ張り上げてクリエイターにしてしまう、とても素晴らしいツールだと思います。その一方で、小心者かつひねくれ者の私は、「そんなのあったら、みんな簡単におもしろいモノを作れてしまって、相対的に自分の価値が下がってしまうではないですか!」という気持ちもちょっぴりあるのです。いうわけで、自分の存在証明のため(?)、同じオリジナルToy-Conを作るにしても、モノづくり初学者にはちょっとハードルが高そうなモノを敢えて作ってみることにしました。電子工作好きなら誰でも知っているArduinoとの連携によって実現するToy-Conを作ってみます。Joy-Conには(当たり前ですが)線を引き出せるようなGPIOなんてありません。それじゃあどうやって連携させるのかというと、実はそのヒントは任天堂が自ら教えてくれています。これはToy-Conガレージ内での『出力』『IRひかる』の設定画面です。『これはもしかしたら...』のところに「電子工作と組み合わせたら...?」との記載があります。この機能がArduinoとの連携のカギになることがここで示唆されているのです。LABOと組み合わせて使うことは、任天堂にとっては想定の範囲内のようです。任天堂の手のひらの上で転がされているようで若干悔しいですが、言われるがままに赤外線受信モジュールを買ってきました。電子部品ショップで売られていたIRM-3638N3というモジュールです。LABO側で◯◯が起こると、Arduino側で◯◯が起こる」という連携が可能になります。次にToy-Conガレージ側のプログラムをどうするかです。シンプルにするなら入力:「タッチ」や「ボタン」など出力:「IRひかる(のばす時間0)」を直接繋ぐだけで、「一瞬だけ赤外線が光る」というプログラムが簡単に作れます。中間ノードの『タイマー』を使えば、もう少し複雑なことが可能になります。これは後で紹介する遊びのプログラムですが、例えば「『↑』ボタンを押すと、ボタンを押してから0.30秒後にIRが発光して消え、ボタンを押してから0.60秒後にまたIRが発光して消える」というふうに記述されています。しておくと、Arduino側では、「赤外線が◯回発光したら、Xをする」というふうに処理を分けることができるようになります。Arduino間の連携方法ですが、これには一つ問題があります。これは先ほどと同じ、『IRひかる』の説明画面ですが、『ヒント』の部分にちょっと気になる記述があります。「IRカメラ2つとJoy-Con5本以上を同時に使うことはできません」これはつまりどういうことかと言うと、例えば入力をToy-Conの『ピアノ』にして、出力に『IRひかる』を使ってArduinoと連携させようとすると、エラーになります。Toy-Conの『ピアノ』はIRカメラの機能を内部的に使っており、上記の制約に引っかかってしまうためです。いうことは、「『ピアノ』で特定の音が鳴ったら、Arduino側で◯◯が起こる」というような遊びをつくりたい場合には、IRを使わない、別の連携方法を考える必要があります。やりようはいくらでもあると思いますが、一番シンプルなのはJoy-Conの振動を使うことではないかと思います。振動センサを用意して、「振動を検出したら◯◯をする」というプログラムをArduino側で組んでしまえばよいのです。振動モジュールセンサーということで、振動センサも用意してみました。上記の振動モジュールは感度を調整できるので使いやすいです。Joy-Conの振動は長さを変えられるので、頑張ればIRの時のように「◯秒間振動したら、Xをする」というふうに処理を分けることができるのかもしれませんが、これはちょっと面倒になりそうなので、今回はやめておきます。LABOとArduinoの連携方法がわかったところで、根本的な問題として「じゃあ、Arduinoと連携して何をさせよう?」というのを考えてみます。LABO向けにアレンジしてみることにします。LABOに組み込まれている音声以外に、任意の音源を再生可能にする拡張モジュールのようなものを作ってみたいと思います。