2019年8月13日火曜日

USB HID入力デバイス


 キーボードきたねーなオイ。
 ホームポジションの突起が磨り減るくらい使ってるからなぁ。飲み物こぼしたり色々してるけど、長持ちなもんだ。最近のラップトップでのトラブル続きと同じメーカーとは思えない。


 とりあえず、アナログ入力9本、スイッチマトリクス36本、の入力がある。WinのHIDとしてはアナログ8軸+ボタン32個+ハットスイッチ、が上限っぽいので、アナログは1本、スイッチは4個余る。まぁキーバインドとか使ったり色々工夫はできるはず。
 もっとも、マトリクスはダイオードの1本、抵抗の1個すらもつけていない簡易的なものなので、同時押しには非対応だが。ボリュームを離散化して4種類とかのモード切替としたり、スイッチを押してモードを変更したり、いろいろできるけど、まぁこういう操作を実装した機械は大抵事故るってのが通例なので、シミュレーターといえどもそういう操作は避けたほうがいいんだろうな。
 
 「何故か不具合が消える」という恐ろしいバグが潜んでいるけど、とりあえずアナログ8軸、ボタン32個、ハットスイッチ1個の入力デバイスとしては動作するようになっている。もっとも、スイッチマトリクスはプルアップしているが、アナログ系はフロートなので、無接続だとかなり暴れるし、指で触ると大きく変動するけど。
 フロートが問題なだけであって、1MΩで釣るだけでもかなり安定するし、たぶんこれくらいの変動ならキーコンフィグで誤認するほどじゃないと思うので、アナログ入力を1MΩとかで釣っておくのはアリかもしれない。今更抵抗追加するのもそれはそれで面倒なんだけど。
 フロートだとHiZなので、隣のピンをバタバタすればつられて動くから、それで未接続を判定することもできそう。ただ、バタバタさせるピンの可変抵抗が中立から大きく外れていると、GPIOからの出力がGNDやVDDに短絡するから、こういうアルゴリズムはあまりやらないほうがいい気もする。


 そういえば、F-15のエアブレーキとかは、スロットルにスライドスイッチがついていて、前方で開、後方で閉、移動中に中立に戻したらその開度で固定、みたいな動作だったはずだけど、FSXやDCSでそういう操作って可能なんだろうか? FSXだと/(スラッシュ)キーでスポイラー/エアブレーキの開閉を変更できるけど、ONかOFFかの二値だから、F/A-18とかでエアブレーキを使うと急激に姿勢が変化して操作しづらいんだよな。リアジェットとかでも同様。
 スポイラーの操作をアナログ軸に割り当てれば開度の操作が可能だけど、そうすると実機の操作系と異なるし。リアジェットとかB737みたいな機体だとアナログ入力でスポイラー開度を入力するので、そういう機体ならアナログ軸の割当でもいいけど。

***

 とりあえず、前にDTMFエンコーダーを作ったときのスイッチパネルと、3Dプリンタで可変抵抗のブラケットを作って、組んでみた。



 DTMF用に作ったやつなので、色とかはそれを意識しているし、キーも20個しか無い。
 ボリュームは「あと数百円追加するとキリが良い」というときに5個買ったBカーブ10kの可変抵抗を使った。5個もあれば何かしら使えるだろ、と思っていたが、8軸に使うには足りなかった。。。とりあえず今回は3個のみ実装。
 試しにFSXのフラップ・スポイラー・エレベータートリムに割り当ててみたが、なぜかスポイラーはうまく動かない。いくつか調整をいじってみたけど効果なし。その軸を別の操作に割り当てればちゃんと動くので、コントローラー側は特に問題ないはずなんだが。
 とりあえずコントローラーとしては使えるようになったので、DCSで試してみるかな。久しぶりにDCS F-15で遊ぼうか。F-16発売まで1ヶ月位だけど、しばらく飛んでなかったからF-16が発売されるまでに勘を取り戻しておきたいし。でもF-15とF-16の飛行感覚はかなり違うんだろうなぁ。もっとも、実機のフィードバック有りストローク有りのF-15からフィードバック無しストローク無しの違いよりは軽微だろうし、大丈夫だろう。
 そういえば、可変抵抗の代わりにひずみゲージとそのアンプをつければ、F-16とかF-2みたいな可動部無しのサイドスティックも作れるんだな。気が向いたらそっちも試してみようかな。ひずみゲージのセンシングってけっこう大変だった気がするんだよなぁ。秋月とかでひずみゲージ用アンプの基板とかあったはずだし、そういうのを使うのも手か。
 まぁ、そのあたりも追々。
 最近はCNCはいじってないけど、銅張りガラエポも買っておきたいし、可変抵抗も買い足したいし、ついでにひずみゲージのアンプも。買うものどんどんスタックに積まれていくなぁ。。。

0 件のコメント:

コメントを投稿