![見出し画像](https://assets.st-note.com/production/uploads/images/120267077/rectangle_large_type_2_b132febd3ef186dfdf1e40e2b68db9fa.jpeg?width=800)
電子工作の秋、ハンコンにアナログスティックを増設した秋
まじで死ぬかもしれないという暑さもひと段落し、夜もクーラーなしでぐっすり眠れるようになれば、少し心にゆとりができたり、体力が無駄に余る。その余力を使い切っておきたい面と、年の瀬も近づくにつれ「あ、そういや今年なんもしてない」「23年思い出皆無過ぎ」という焦りも生まれはじめて、人は慌てて読書や芸術、スポーツなどに取り組むのである。
私も例にもれずそういう余裕と焦りを感じる人間の一人で、確かになんとなくいつもと違うプロジェクトに挑戦したくなってくる。
1年前の秋もちょうど考えたことなのであるが、私は先日もボタンの少ないハンコンにアナログスティックを付ける電子工作をしたくなったのである。
目次
■1年前の失敗、挫折
■23年「キテレツ斎」登場
■ここからはプラモ
■突如起こった密室事件
■読者への挑戦状――ホイールベース密室殺人トリックの答えとは
■1年前の失敗、挫折
今から1年前の秋である。
電子工作やプログラミングの知識はまったくないものの、どうしてもハンコンのボタンを増やしたい、できればアナログスティック操作をしたいということでいろいろ調べはじめた。
世の中にはArduino(アルドゥイーノ)というものがあるようだ。このマイコンボードを介することによって、アナログスティックを認識させることができるのである。
![](https://assets.st-note.com/img/1698615298931-5I5LOispPI.png)
![](https://assets.st-note.com/img/1698616838312-Kdreqth9mt.jpg?width=800)
しかし一番の目的である「PCにゲームパッドとしてアナログスティックを認識させる方法」はまったく記されていなかったのである。
さらによく調べてみると、このキットに付属していた「Arduino UNO」という種類はロー・エンドタイプで、デバイスでパソコン操作ができるような高等な機能はないらしい。たとえばスイッチを使ってLEDを点灯させるといったことならできるけれども、スイッチをキーボードやマウス、ゲームパッド代わりにしてPCを操作することはできないのだ。パソコン用デバイス(HID)を制作するには、別の「Arduino Leonard」というタイプが必要なのである。
![](https://assets.st-note.com/img/1698617479676-aWtkuWx0IH.jpg?width=800)
![](https://assets.st-note.com/img/1698616247936-XUPh5wVrqM.jpg?width=800)
結局Leonardoを使ってもまだゲームパッドとして認識させる方法がいまいちわからなかったが、とりあえずキーボード入力ならなんとかできたのである。スイッチを押すと「a」とか入力できたのだ。
そこでとりあえずスイッチ4個を使って、手始めに十字キーでも作ってみようと考えた。ハンコンにはもともと十字キーがついているものの、形状的に斜め入力になりやすくて少し使いにくいと感じていたから、十字キーでも十分ありがたい。
![](https://assets.st-note.com/img/1698616464520-Byi1BOUyKV.jpg?width=800)
しかしコードとarduino本体が完全に邪魔で10度もハンドルを回せなかったのである。
![](https://assets.st-note.com/img/1698616636479-WIW7aFXoi4.jpg?width=800)
気づけば22年の秋が終わっていた。
「電子工作から完全撤退」という勇気ある決断を下し、厳寒の時期に備えたのであった。
■23年「キテレツ斎」登場
撤退後しばらくはアルドゥイーノのことを完全に忘れて普通にカーゲームをしていたものの、奇しくも23年という年は、プログラミングが格段に簡単になった年であった。
「本当の人間みたい!」「こんな面白い回答もするよ!」「こう指示すべし」とかとにかく話題沸騰、世界の人気者の登場である。
ChatGPTである。
![](https://assets.st-note.com/img/1698658145228-M8KKiVaGa8.png?width=800)
――もしかしたら今年ならコロ助を作れるのではないか・・・?
夏も終わり秋も深まると、次第にまた電子工作熱が出てきたというわけである。
![](https://assets.st-note.com/img/1698643059899-6DgKxa1odG.jpg?width=800)
![](https://assets.st-note.com/img/1698643108182-y5fsZOuroh.jpg?width=800)
だが、アナログスティックをゲームパッドにするように指示すると、AIでもエラーが出る。joystickというそれらしいライブラリ(プログラミングでよく使う機能や手続きをまとめたもの)を利用してプログラムを書くのだが、そのライブラリでは何度やってもエラーが出るのである。それをAIに言うと、AI側は「またまたー。」みたいな反応を繰り返すのみなのである。
![](https://assets.st-note.com/img/1698644454483-N3YKYPrll8.png?width=800)
なんだか知らないがエラーが出るライブラリを好き好んで使いたがって一向にらちがあかない。怒ったりおだてたり、敬語でしゃべったり、あの手この手で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);
}
![](https://assets.st-note.com/img/1698656295491-kKa4JWY4ax.png?width=800)
![](https://assets.st-note.com/img/1698656218007-Hg2O5KjHMA.jpg?width=800)
ライブラリのソースコードというのが重要で、それを調べて内容を教えてあげると書けるようになるらしい。(ちなみに上のスケッチではアナログスティックのデジタルピンを2番に、アナログのXの線をA0、Yの線をA1に差している。そうするとスティックを動かせばその通り反応し、押すと3が光る。)
ともかく実に1年足踏みをしていたところから、私はようやく第一歩目を踏んだのであった。
■ここからはプラモ
![](https://assets.st-note.com/img/1698702399113-mVCI60xOVu.jpg?width=800)
去年はコードがすごい邪魔という問題があったが、ハンドルにデバイスを設置するのではなく、ハンドルを支えるホイール・ベースの方に組み込めば解決すると気づいた。
むしろハンドルのボタンはハンドルを回しながらでは上下がわからなくなって押しにくいので、ホイールベースを活用する戦略は悪くない。
ここからはプログラミングではなく、デバイスを組み込む「プラモ力」である。長年プラモを作っている私はピンバイス、やすりなどといった道具とそれを扱う技術は揃っている。
こっちは得意分野である。
![](https://assets.st-note.com/img/1698702964371-pqkN2jFac0.png)
![](https://assets.st-note.com/img/1698702989911-VPbhyRQNzy.png)
![](https://assets.st-note.com/img/1698703166559-Ln2TXLxEJU.jpg?width=800)
![](https://assets.st-note.com/img/1698703214752-7nCyieGVdu.jpg?width=800)
![](https://assets.st-note.com/img/1698703235372-DuUPpoIhpr.jpg?width=800)
![](https://assets.st-note.com/img/1698703291127-MW81bk6HBO.jpg?width=800)
![](https://assets.st-note.com/img/1698713172391-Ag31IgyJTI.jpg?width=800)
せいぜい一番でかいパーツといっても、ギザギザ空冷フィンに囲まれた円柱のハンコン心臓部のモーターである。ちなみにモーターの背部から延びている黒軸が磁石になっていて、その磁気を認識するホールセンサーによってハンコンの回している量が認識され、それによって強力で正確なフォースフィードバックシステムが可能になっている。(お気に入りの靴を買った後は妙に他人の靴に妙に目がいくのと同様、電子工作をした後だとこういうところが気になるのである。)
とはいえホイールベース内部はかなりスペースがあっても、カバーにはツメや通気口などがあり、それらをかわすようにすることを考えると、割とアナログスティックを設置できる場所は限られていたのである。
![](https://assets.st-note.com/img/1698703318995-Cto0cfzom7.png)
![](https://assets.st-note.com/img/1698703516079-rfKMCwL5pk.jpg?width=800)
![](https://assets.st-note.com/img/1698703644408-QVi2HvJwlM.png)
![](https://assets.st-note.com/img/1698703742916-VmlQImw3oF.png)
👆これで16mmの穴が開く。1万の電動ドリルを買うほどではない時に便利
👆私は以前ハンコンのクランプネジの穴のメンテナンスをした時に、大きい穴をあけるためにこのドリルを買ったのである。金属を削るのにかなり苦労しながら、右手の感覚を失い、あちこち掃除しきれないほどの大量の金属くずにまみれて完成させた苦闘の記録
![](https://assets.st-note.com/img/1698704215147-qcoIltDdX3.jpg?width=800)
![](https://assets.st-note.com/img/1698704309584-5KQlAJcKdA.jpg?width=800)
![](https://assets.st-note.com/img/1698704370083-5P14uAHBd5.jpg?width=800)
![](https://assets.st-note.com/img/1698704481667-YnAvddB8UX.jpg?width=800)
![](https://assets.st-note.com/img/1698704532967-IOGxzWZ9tm.jpg?width=800)
👆PCの掃除だけではなくやすり掛けの時も酸欠にならずに済む
![](https://assets.st-note.com/img/1698704569420-QwoY0Uxt6D.png)
しかしただ固定しただけでは、取り付けたジョイスティックがガチガチでまったく動かなかったのである。
![](https://assets.st-note.com/img/1698704765397-FJapbSVt9z.jpg?width=800)
![](https://assets.st-note.com/img/1698704789466-qIhw5YqxDM.png)
![](https://assets.st-note.com/img/1698704806540-tvyCaornKS.png)
![](https://assets.st-note.com/img/1698704825386-090LKnqA1x.png)
![](https://assets.st-note.com/img/1698704968447-AxFQy3L2ie.jpg?width=800)
![](https://assets.st-note.com/img/1698705041841-XFP99YnsbR.jpg?width=800)
プログラミングの時とは違って、さすがプラモを作っているだけに驚くほどスムーズであった。あとは配線してArduinoを他の機器に邪魔しないように設置するだけである。
しかし甘かった。
これはプラモではなかった。
取り付けて終わりではなかったのである。
この時「案外楽勝じゃん。」と軽く電子工作を舐めはじめた私に、巨大な災難の魔の手が確実に忍び寄っていたのだ。
■突如起こった密室事件
![](https://assets.st-note.com/img/1698706247467-wjqMbhQEqX.png)
![](https://assets.st-note.com/img/1698706310519-hQInnUzVxi.png)
しかし私に大きな試練が与えられたのはこの時であった。
テストして全く問題はなかったのでカバーを取り付けたが、カバーを取り付けてもう一度接続してみた時に、なんといきなりハンコンがおかしくなったのだ。
通常はハンコンをPCに接続すると、自動で左と右に一度ずつ回る。ハンドルが準備運動のような動きをする。そのあとに普通に使える状態になる。
しかし今回カバーを付けた後に接続してみると、その準備運動の左右への動きが何ともぎこちなく、苦しそうにハンコンが動き続けるようになったのである。左に回りきっていないためか中央に戻ったあとに再び左に回りはじめ、そして中央に戻ったあとに再び左に回る。永遠に準備が終わらないからパソコンがハンコンを認識しない。つまりカーゲームができない。つまり待ちに待った新作「EA WRC」ができない。
![](https://assets.st-note.com/img/1698795813038-CEgj3vWngw.jpg)
![](https://assets.st-note.com/img/1698713645559-xKvDzcdmCf.png)
![](https://assets.st-note.com/img/1698750415071-2AevwDY4Kv.jpg?width=800)
![](https://assets.st-note.com/img/1698707083897-tXzDZkudJ5.jpg?width=800)
カバーを外した状態でテストしてみたら普通に動いた。だからカバーをつけた。そして接続したらハンコンが動かなくなったのである。
もしかすると、Arduinoから何か電磁波のようなものが発せられていて、それが悪い影響を与えているのかということなどを考えたが、それだったらカバーをつけない時点でおかしくなっていたはずなのである。
![](https://assets.st-note.com/img/1698707651782-nIOh6aFd3Y.jpg?width=800)
夜中2時。
外で秋の虫が大きな声でないていた。
■読者への挑戦状――ホイールベース密室殺人トリックの答えとは
しかし実は私は、すでに君に手がかりはすべて提示したのである。
リアル世界で巻き起こった「京都密室ハンコンの動作不良事件」。
賢明な君であれば、このホイールベースの密室内で一体なにが起こっていたか、故障の原因と対処法くらいわかるだろう。
解決編は来週、11月9日0時に更新。
秋の夜長にちょっとミステリー感覚で考えてみてくれ。
👆解決編である
この記事が気に入ったらサポートをしてみませんか?