いま読まれている記事

Switchのコントローラで動く改造オモチャを作ろう! Pythonで『1-2-Switch』風リアル「真剣白刃取りゲーム」を実装したよ【ソースコードも掲載】

article-thumbnail-1-2-switch_python

1

2

3

「Joy-Con」のボタン入力をRaspberry Piで取得しよう

 実は、「Joy-Con」をパソコンに認識させるのはとても簡単だ。普通のBluetoothのゲームパッドと同じように、ペアリングするだけで扱えるようになるのだ。

Switchのコントローラで動く改造オモチャを作ろう! Pythonで『1-2-Switch』風リアル「真剣白刃取りゲーム」を実装したよ【ソースコードも掲載】_014
SRとSLの間にあるボタンを長押しして、緑のLEDが光ったらペアリング開始の合図。

 あとはWindowsでもMacでも、「Joy-Con(L)」のような表示が出てきたらペアリングしてやればいい。これでSteamなどのゲームをプレイすることができる。
 しかし、今回はせっかくなので、「Raspberry Pi」というものにつないでみよう。簡単にいうと、手のひらサイズの小さなパソコンだ。「Raspbian」というLinuxのOSが動いている。

Switchのコントローラで動く改造オモチャを作ろう! Pythonで『1-2-Switch』風リアル「真剣白刃取りゲーム」を実装したよ【ソースコードも掲載】_015
Nintendo Switchのように外に持ち出せそうな小ささだ。

 しかも最新の「Raspberry Pi3」にはBluetoothが内蔵されているので、すぐに「Joy-Con」をペアリングできる。これで5000円くらいなので、いい時代になりましたね……。

 まずはペアリングしてみよう。「Joy-Con」のボタンを長押ししてみる。

Switchのコントローラで動く改造オモチャを作ろう! Pythonで『1-2-Switch』風リアル「真剣白刃取りゲーム」を実装したよ【ソースコードも掲載】_016

 すると、ペアリング可能なデバイスに「Joy-Con」が出てくる。ペアリングしよう。

 つながったら、ボタン入力を取得するプログラムを書こう。
 「Python」というプログラミング言語と、「pygame」というライブラリを使う。これを使うことで、ゲームパッドの入力が簡単に取得できるのだ。「raspberry pi pygame 入力 取得」などで検索すると、この組み合わせで書かれたプログラムがヒットする。先人の知恵を積極的にお借りしよう。

 プログラムを動かすとこんな感じ。「Joy-Con」のボタンを押すと画面が反応している。ちなみに、そのサイト(Pythonでゲームパッドを操作して、ラズパイを操作しよう。挑戦編 | Divide et impera)の記事を元に僕が書いたコードはこれ。

 長々と書いているように見えるが、実際にデータ取得に関係してくるところは11、14、17行目だけだ。そう思うと、けっこう簡単そうに見えてこないだろうか? 17行目で、実際のボタン入力を画面に表示するようにしているので、表示された値とボタンが対応付けられるはずだ。もちろん、同時押しも読み取ることができる。
 ちなみに、ジャイロセンサーによる「Joy-Con」の傾きを取得するというのは(今のところは)できない。世のガジェット改造好きがこぞって解析しているはずなので、情報が出てくるのを待ちましょう。

 

「Joy-Con」の入力でサーボモーターを動かそう

 これでボタン入力を取ることができたので、次はサーボモーターを動かしたい。

 「Raspberry Pi3」であれば、「pigpio」というライブラリがすでにインストールされているので、これを使うのが簡単だ。
 やり方は、例によって「pigpio サーボモーター」のように検索すると出てくるはずだ。

Switchのコントローラで動く改造オモチャを作ろう! Pythonで『1-2-Switch』風リアル「真剣白刃取りゲーム」を実装したよ【ソースコードも掲載】_017
たくさんピンが出ているところがあるので、対応しているピンとサーボモーターをつなぐ。

 つなぐ必要があるのは「5V」「GND」「PWM」と書かれたピンだ。どこがどのピンかは、Raspberry Pi GPIO Pinoutというサイトを見ておくといいでしょう。
 本当は、サーボモーターの電源は「Raspberry Pi」からではなく、電池など外部のものを使用した方がいい。ただ、とりあえず動かしたい! という場合は直接電源を取ってしまってもいいでしょう。

 「pigpio」でモーターを制御するには、事前にシェルで下記のコマンドを実行しておく必要がある。この辺りは馴染みがない人にはちょっと難しいかもしれないが、どうにか調べてチャレンジしてみてほしい。けっこう簡単です。

 サンプルコードはこちら。「Joy-Con」の入力を読み取ったときよりも、さらに簡単だ。

 2つ目の数字を500〜2500くらいの値にすると、それに合わせてサーボモーターが動く。この上限と下限については、モーターに応じて変わるので、まずは1500くらいにしておいて調整していく。そうすると、“いきなり限度を越えて動かして壊してしまう”ということにならないのでオススメです。

 ここまでで、前述した自動での攻防が実現できる。
 先ほどのボタン入力のプログラムと組み合わせて、「Joy-Con」のボタンが押されたらサーボモーターを動かすようにしてみよう。

 

 

 Aボタンで叩く、ZRボタンで戻すようにしてみた。

 「Joy-Con」で『ポカポンゲーム』を操ることができた!
 破壊されたサーボモーターが脳裏をよぎる。ちゃんと動いたことの感動もひとしおである。

 ここまでできたら、いよいよ実戦だ。掴み取るぞ白刃を。

1

2

3

この記事に関するタグ

本ページはアフィリエイトプログラムによる収益を得ている場合がございます

新着記事

新着記事

ピックアップ

連載・特集一覧

カテゴリ

その他

若ゲのいたり

カテゴリーピックアップ