見出し画像

電子工作の秋、ハンコンにアナログスティックを増設した秋

まじで死ぬかもしれないという暑さもひと段落し、夜もクーラーなしでぐっすり眠れるようになれば、少し心にゆとりができたり、体力が無駄に余る。その余力を使い切っておきたい面と、年の瀬も近づくにつれ「あ、そういや今年なんもしてない」「23年思い出皆無過ぎ」という焦りも生まれはじめて、人は慌てて読書や芸術、スポーツなどに取り組むのである。

私も例にもれずそういう余裕と焦りを感じる人間の一人で、確かになんとなくいつもと違うプロジェクトに挑戦したくなってくる。

1年前の秋もちょうど考えたことなのであるが、私は先日もボタンの少ないハンコンにアナログスティックを付ける電子工作をしたくなったのである。

目次
■1年前の失敗、挫折
■23年「キテレツ斎」登場
■ここからはプラモ
■突如起こった密室事件
■読者への挑戦状――ホイールベース密室殺人トリックの答えとは

■1年前の失敗、挫折

今から1年前の秋である。

電子工作やプログラミングの知識はまったくないものの、どうしてもハンコンのボタンを増やしたい、できればアナログスティック操作をしたいということでいろいろ調べはじめた。

世の中にはArduino(アルドゥイーノ)というものがあるようだ。このマイコンボードを介することによって、アナログスティックを認識させることができるのである。

👆とりあえず初心者用にいろいろなパーツが付属したarduinoセットを購入してみる。アナログスティックもセットについていた。少年心をいやがおうでも高ぶらせるスタッフ群である
👆Arduino UNO本体。上下にずらっと並んでいる四角い穴にLEDなどのデバイスを接続して、プログラム(スケッチ)を読み込ませると、LEDを点滅させたり色を変えたりといった操作ができる

しかし一番の目的である「PCにゲームパッドとしてアナログスティックを認識させる方法」はまったく記されていなかったのである。

さらによく調べてみると、このキットに付属していた「Arduino UNO」という種類はロー・エンドタイプで、デバイスでパソコン操作ができるような高等な機能はないらしい。たとえばスイッチを使ってLEDを点灯させるといったことならできるけれども、スイッチをキーボードやマウス、ゲームパッド代わりにしてPCを操作することはできないのだ。パソコン用デバイス(HID)を制作するには、別の「Arduino Leonard」というタイプが必要なのである。

👆見た目はUNOとまったく変わらないが、PC操作をするキーボードやゲームパッドなども作れるタイプなのである
👆本も注文。しかしちょっとタイトルの主語が大き過ぎるというのが、一読した私の感想だった

結局Leonardoを使ってもまだゲームパッドとして認識させる方法がいまいちわからなかったが、とりあえずキーボード入力ならなんとかできたのである。スイッチを押すと「a」とか入力できたのだ。

そこでとりあえずスイッチ4個を使って、手始めに十字キーでも作ってみようと考えた。ハンコンにはもともと十字キーがついているものの、形状的に斜め入力になりやすくて少し使いにくいと感じていたから、十字キーでも十分ありがたい。

👆無理やりプラスチックにタクトスイッチを埋め込んでいく

しかしコードとarduino本体が完全に邪魔で10度もハンドルを回せなかったのである。

👆コードが鬼邪魔

気づけば22年の秋が終わっていた。

「電子工作から完全撤退」という勇気ある決断を下し、厳寒の時期に備えたのであった。

■23年「キテレツ斎」登場

撤退後しばらくはアルドゥイーノのことを完全に忘れて普通にカーゲームをしていたものの、奇しくも23年という年は、プログラミングが格段に簡単になった年であった。

「本当の人間みたい!」「こんな面白い回答もするよ!」「こう指示すべし」とかとにかく話題沸騰、世界の人気者の登場である。

ChatGPTである。

👆インビザラインのツイートをあげるヴァンパイアの話など、私は主に暇つぶしに使っていた

――もしかしたら今年ならコロ助を作れるのではないか・・・? 

夏も終わり秋も深まると、次第にまた電子工作熱が出てきたというわけである。

👆去年はケチってメーカー品じゃないレオナルドを買っていたこともうまくいかなかった原因かもしれないと思って、あらためてメーカー品のレオナルドを購入し準備を万全に整える(倍の値段)。
👆結局追加で2枚のarduinoを買う羽目になったことから、さしずめ最初のarduino『UNO』は「ドロー2」だと言ってよいだろう

だが、アナログスティックをゲームパッドにするように指示すると、AIでもエラーが出る。joystickというそれらしいライブラリ(プログラミングでよく使う機能や手続きをまとめたもの)を利用してプログラムを書くのだが、そのライブラリでは何度やってもエラーが出るのである。それをAIに言うと、AI側は「またまたー。」みたいな反応を繰り返すのみなのである。

👆joystickライブラリを使ったプログラムを書く→エラーが出るという→インストールできてない→したけどできてない→シリアルモニタで動作確認して→モニタではできてるんだよ→joystickライブラリを使ったプログラムを書く→

なんだか知らないがエラーが出るライブラリを好き好んで使いたがって一向にらちがあかない。怒ったりおだてたり、敬語でしゃべったり、あの手この手でAIに触れ合いながら、チャットルームがほとんどこの話で埋まって、もうあきらめようかと考え始めた時、ChatGPTと秋の空、特になんの前触れもなくAIが別のライブラリを使ってスケッチを書いた。

そのプログラムもやはりエラーがあったとはいえ、間違えて理解していることによるエラーというよりも、あまりこのライブラリに詳しくないことによるエラー、いい予感がした私はそのライブラリのソースコードを探し出して伝えてみると、AIが書き始めたスケッチが以下である。

#include <HID-Project.h>
const int buttonPin = 2;
const int xAxisPin = A0;
const int yAxisPin = A1;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Gamepad.begin();
}
void loop() {
int buttonState = digitalRead(buttonPin);
int xAxis = analogRead(xAxisPin);
int yAxis = analogRead(yAxisPin);
if (buttonState == LOW) {
Gamepad.press(3);
} else {
Gamepad.release(3);
}
Gamepad.xAxis(map(xAxis, 0, 1023, -32767, 32767));
Gamepad.yAxis(map(yAxis, 0, 1023, -32767, 32767));
Gamepad.write();
delay(20);
}

👆このロゼッタ・ストーンをarduinoに読み込ませてみると・・・
👆おおぉぉおおおお!③が光り、左上の軸の+が動いてる
👆やったことないとわからないかもしれないが、ちゃんとゲームパッドとして使えた感動、デバイスが意図通りに動いた快感はものすごいものがあるのである。

ライブラリのソースコードというのが重要で、それを調べて内容を教えてあげると書けるようになるらしい。(ちなみに上のスケッチではアナログスティックのデジタルピンを2番に、アナログのXの線をA0、Yの線をA1に差している。そうするとスティックを動かせばその通り反応し、押すと3が光る。)

ともかく実に1年足踏みをしていたところから、私はようやく第一歩目を踏んだのであった。

■ここからはプラモ

👆これじゃ使いにくい

去年はコードがすごい邪魔という問題があったが、ハンドルにデバイスを設置するのではなく、ハンドルを支えるホイール・ベースの方に組み込めば解決すると気づいた。

むしろハンドルのボタンはハンドルを回しながらでは上下がわからなくなって押しにくいので、ホイールベースを活用する戦略は悪くない。

ここからはプログラミングではなく、デバイスを組み込む「プラモ力」である。長年プラモを作っている私はピンバイス、やすりなどといった道具とそれを扱う技術は揃っている。

こっちは得意分野である。

👆まず大体どれくらいの穴が必要かといったことなどをマスキングテープに書いていく
👆アナログスティックをはみ出させる穴は、実際のゲームパッドなどを調べて直径2cm程度。
👆まずハンドルを外したら、ホイールベースのカバーを開ける。ベースを裏返して5個のネジをはずし
👆4つのネジをはずして、ハンドル部分のカバーを外し……
👆さらにこの3箇所ネジを外せば
👆開けられる
👆やはりスペースはありそうだ。

せいぜい一番でかいパーツといっても、ギザギザ空冷フィンに囲まれた円柱のハンコン心臓部のモーターである。ちなみにモーターの背部から延びている黒軸が磁石になっていて、その磁気を認識するホールセンサーによってハンコンの回している量が認識され、それによって強力で正確なフォースフィードバックシステムが可能になっている。(お気に入りの靴を買った後は妙に他人の靴に妙に目がいくのと同様、電子工作をした後だとこういうところが気になるのである。)

とはいえホイールベース内部はかなりスペースがあっても、カバーにはツメや通気口などがあり、それらをかわすようにすることを考えると、割とアナログスティックを設置できる場所は限られていたのである。

👆カバー裏面のツメなどはできれば残したい
👆この辺
👆とりあえず表側から設置してみて位置を確認すると、なかなか使いやすそう
👆いよいよ裏側からアナログスティックをはみ出させるために、大きい穴を手動のドリルで開ける

👆これで16mmの穴が開く。1万の電動ドリルを買うほどではない時に便利

👆私は以前ハンコンのクランプネジの穴のメンテナンスをした時に、大きい穴をあけるためにこのドリルを買ったのである。金属を削るのにかなり苦労しながら、右手の感覚を失い、あちこち掃除しきれないほどの大量の金属くずにまみれて完成させた苦闘の記録

👆ガンガン回す。プラスチック素材なら余裕で穴を広げられた
👆大体できたと
👆これではまた小さい。それにちょっと穴が左に寄り過ぎ
👆リューターがないので、240番紙やすりを電動ドライバーに巻きつけて「コイルバネ」のようにして
👆穴を広げて整える。この辺はプラモ制作で身につくテク

👆PCの掃除だけではなくやすり掛けの時も酸欠にならずに済む

👆手際よく、ここまで30分くらいでできた

しかしただ固定しただけでは、取り付けたジョイスティックがガチガチでまったく動かなかったのである。

👆裏側。アナログスティックまで押し付けられている
👆いちおう接触部分の縁をなめらかにしたり・・・
👆ジョイスティックの接触部分もつるつるにしたりしたが、
👆でも結局まず1個のナットを根本につけてネジを固定して、別の2個のナットでジョイスティックを適度な距離のところで挟めばジョイスティックが触れるか触れないかのギリギリの距離で固定できることに気づいた
👆絶妙な距離
👆完璧。なんか新作グミを食べたかのようなすげえ新食感!

プログラミングの時とは違って、さすがプラモを作っているだけに驚くほどスムーズであった。あとは配線してArduinoを他の機器に邪魔しないように設置するだけである。

しかし甘かった。

これはプラモではなかった。

取り付けて終わりではなかったのである。

この時「案外楽勝じゃん。」と軽く電子工作を舐めはじめた私に、巨大な災難の魔の手が確実に忍び寄っていたのだ。

■突如起こった密室事件

👆arduinoに接続してみる。きちんと予定通り、パソコンはゲームパッドだと認識している
👆裏にも穴をあけてPCとarduinoが連絡するコードを通した。あとはカバーをネジで留めれば完成

しかし私に大きな試練が与えられたのはこの時であった。

テストして全く問題はなかったのでカバーを取り付けたが、カバーを取り付けてもう一度接続してみた時に、なんといきなりハンコンがおかしくなったのだ。

通常はハンコンをPCに接続すると、自動で左と右に一度ずつ回る。ハンドルが準備運動のような動きをする。そのあとに普通に使える状態になる。

しかし今回カバーを付けた後に接続してみると、その準備運動の左右への動きが何ともぎこちなく、苦しそうにハンコンが動き続けるようになったのである。左に回りきっていないためか中央に戻ったあとに再び左に回りはじめ、そして中央に戻ったあとに再び左に回る。永遠に準備が終わらないからパソコンがハンコンを認識しない。つまりカーゲームができない。つまり待ちに待った新作「EA WRC」ができない。

👆EA WRC。私が2000時間のプレイ時間をほこる「人生でもっともハマったゲーム」と言えるDiRT Rally 2.0の事実上の続編。5年越しの待望の新作の発売は、3日後にせまっていた
👆泣きそうになりながらもう一度カバーを外す。搭載したアナログスティックは普通に認識している
👆焦ってarduinoも急いで取り外したが解決しない
👆事件が起こった時、完全な密室状態であった。

カバーを外した状態でテストしてみたら普通に動いた。だからカバーをつけた。そして接続したらハンコンが動かなくなったのである。

もしかすると、Arduinoから何か電磁波のようなものが発せられていて、それが悪い影響を与えているのかということなどを考えたが、それだったらカバーをつけない時点でおかしくなっていたはずなのである。

👆実に3時間あれこれチェックしてみたものの、問題はまったく見当たらない。もはやカバーをあけた状態でさえきちんと動かない。途方に暮れるしかない。

夜中2時。

外で秋の虫が大きな声でないていた。

■読者への挑戦状――ホイールベース密室殺人トリックの答えとは


しかし実は私は、すでに君に手がかりはすべて提示したのである。

リアル世界で巻き起こった「京都密室ハンコンの動作不良事件」。

賢明な君であれば、このホイールベースの密室内で一体なにが起こっていたか、故障の原因と対処法くらいわかるだろう。

解決編は来週、11月9日0時に更新。

秋の夜長にちょっとミステリー感覚で考えてみてくれ。

👆解決編である

この記事が参加している募集

ゲームで学んだこと

この記事が気に入ったらサポートをしてみませんか?