弐寺のコントローラー、高いんですよね。自作しましょう。
本当は皿を付ける予定で、5鍵コンも配置場所も用意してあるのですが、面倒なのでまだやっていません。このため、タイトルは7鍵コントローラーと書いています。
ゲーセンじゃん pic.twitter.com/EGZBYcxlnO
— public_yusuke (@public_yusuke) January 26, 2020
動機
まず自宅学習期間なるものが高校にはあって、これは受験生が様々な大学の試験に挑戦する期間です。私は推薦入試で合格したので、 この期間は全て暇な時間になってしまいました。そのため、大学に入る前に何かやっておきたいな〜と思って取り組んでみました。
なお、私は本家SP5段の人です。皿複合が難しすぎるだろ、あのゲーム……。45クレで5段に合格し、そこからこれ書いてる時点で累計86クレやったんですが、全く希望の光は見えません。皿を回せる人間になりたいね。
前準備
めんどくさかった。だいたい7500円ぐらいで全部調達した。
材料調達
まず鍵盤部分と皿部分を置くための台が必要なので、ホームセンターに行って木材を調達します。だいたいこれぐらいの大きさで切ってください〜って言えば、店員さんが切ってくれます。
寸法などを参考にしたサイト:
yamaken1343.hatenablog.jp
ArduinoはPro Micro互換のやつをAliExpressで買ったつもりが、ちゃんと商品説明を読まなかったがために別のボードのやつを買ってしまいました。到着まで二週間かかる通販でもう一度待つのは苦痛だったので、結局Amazonで買いました。マジで商品名はしっかり読め。
その他配線のためのコードやマイクロスイッチに付ける圧着端子なども買いました。道具は一通り揃っていました。
肝心のボタンはAliExpressで調達しました。
ja.aliexpress.com
ここで一つ問題があって、中国から届いたボタンを押すとマジで重くてプレイするどころの話じゃない。手がゴリラになる前に壊れてしまいそうだったので、オムロンのマイクロスイッチを買いました。
www.fa.omron.co.jp
それでもバネが重すぎるので、もしかしたらもっとどうにかするべきなのかもしれません。
制作開始!
めんどくさかった。
台に穴開ける
ボタンは鍵盤部分の7つと操作用のボタン2つがあるので、それぞれ丸い穴を開けます。直径は25mmぐらいで開けた気がします(わからん)。うちは家の関係上、いわゆる逸般の誤家庭的な穴開け装置があるのでそれを使いました。それがない場合は電動ドリルとホールソー買えば同等のことができるはずです。あとは付いてきたボタンを付けてはんだ付けしてArduinoにプログラムを書き込めば動きます。
ボタンを付ける
白い部品があって、回すことでボタン表層部と下のマイクロスイッチとかが出てる部分の間を締め付けることができます。これで台に設置することができました。
本来は四角い穴を開けるっぽいんですが、面倒なんでこれで良いでしょ〜〜って感じです。
はんだ付けする
ボタンを押したときに光らせることもできるんですが、面倒なのでスイッチとしての役割しかボタンには与えないことにしました。すると配線がとても楽になります。
Arduinoの9つのデジタルピンとGNDがあれば良くて、それぞれのボタンについて一つのデジタルピンを割り当てることにします。
デジタルピン──マイクロスイッチ──GND というふうに配線します。各マイクロスイッチからは同一のGNDに接続します。
どこかの間に抵抗を挟む必要はありません。←めっちゃ楽
void setup() { pinMode(32, INPUT_PULLUP); pinMode(1, OUTPUT); } void loop() { if(digitalRead(32) == LOW) { digitalWrite(1, HIGH); } }
こんなのを書いて、ボタン押したらLEDが光るかどうか一応ブレッドボード上で試したりしました。(ただ遊んでいるだけ)
pinMode(番号, INPUT_PULLUP)とすると抵抗不要でスイッチが動作するようになるんですね。気をつけることとして、digitalReadでLOWのとき押下、HIGHのとき押していないというふうになっています。
だばあ pic.twitter.com/LSv9fNSn0v
— public_yusuke (@public_yusuke) January 26, 2020
マイクロスイッチのところは圧着端子がフィットするようになっているので、それをうまく使いつつ線をつけました。結局固定の際は加圧せずに †大正義ホットボンド† で無理矢理抑えました。
ホットボンドで固定した pic.twitter.com/EprHEnUbL6
— public_yusuke (@public_yusuke) January 26, 2020
プログラムを書く
基本的にさっき貼ったブログのやつを参考にすれば良いのですが、私はまだ皿をつけていないのでボタン部分の実装だけしました。
gist.github.com
これを落として使います。
ところで、弐寺の筐体でVEFXボタンとSTARTボタンを同時押しして曲を途中で終了するやつ、やりたくないですか?INFINITASではESCキーを押すとそれができるので、その2つのボタンが同時に押下されている場合はESCキーを押している信号を送ることにしました。これでデユゥゥゥゥンって音が出て曲が終了するようになります。
ちゃんと動く pic.twitter.com/4BFJzgdO7v
— public_yusuke (@public_yusuke) January 29, 2020
Arduino一枚あるだけでこんなことができる現代って本当に良いね。
台に足をつける
釘を打とうかなと思ったのですが、ボンドでも十分な耐久性を持つことに気づいたのでこれ一本で仕上げました。
完成
できた!!!!すげえっ動くぞ!!! pic.twitter.com/lelqlE15xx
— public_yusuke (@public_yusuke) January 26, 2020
ハイパーな自由落下 pic.twitter.com/mPtyjHlsca
— public_yusuke (@public_yusuke) January 26, 2020
ボタンのバネが重いけど軽く感じるようになってきた pic.twitter.com/w5fFwxPvEx
— public_yusuke (@public_yusuke) January 31, 2020
自分が作ったコントローラーが普通に動いて久々に感動を味わいました。楽しかった。
感想
適当なプログラミング能力と、はんだ付けをやる器用さと、ホームセンターで店員さんに話しかけるコミュ力があれば誰でも自作できます。学校終わりに一人でホームセンターまで直行したら店員さんに「学校で何か作るんですか?」と聞かれました。うちの高校は文化祭で大量の学生がそこのホームセンターで木材やら紙鑢やらを買うので尋ねられたのだろうと思うのですが、そう考えると一人でここに来てるのなんか可哀想な人みたいだな……と一瞬思いました。どうでもいいけどね。
追記(2020/02/04) バネ切りについて
ボタンが重すぎて腱鞘炎になったんですが、これを解決したくて、そういえばバネ切りなる手法があったなあと思い出したので試したところ、ハイスコアも上がって結果は大成功でした。
まずこの中国から仕入れたボタンを、調べるとよく出てくるように下側の白い足2本を内側に抑えつけることによって、ボタンの押すところを外すことができます。
抑え方は簡単で、まず三角定規を2つ用意します。ボタンの押すところを押しながら白い足2本を飛び出させ、そのうち1つの足とボタンの筒部分の間に三角定規の尖っているところを強引に差し込みます。このときプラが割れるんじゃないかとか思うかもしれませんが、案外割れません。
そして、もう一本の足のところにもう一つの三角定規の尖っているところを差し込みながら強引に内側に力を入れ、下の方に押していくと、ボタンの押すところを外すことができました。
バネが一つだけ中に設置されているので、それを取り出して切ります。私は2巻き分だけカットしました。その後はバネを戻し、組み直すと軽くなったボタンを手に入れることができました。
参考のために動画を作ったのでよければどうぞ:
自分の編集技術に涙が流れてしまいそうですが、一応作業工程は全て映してみました。同じように輸入ボタンを使う人がもしいれば、ぜひ試してみてください。(元のボタンに入っているバネは重すぎるので)
追記(2020/02/07) なお、元から中に入っていたバネは、正方形のボタンと、青のボタンと、白のボタンでそれぞれ違うものであるため、同じ巻き数切っても全然結果は異なってしまいますので気をつけてください。特に正方形のボタンは短めなバネであると思われます。切りすぎるとボタンが戻らなくなります。