※自分用のメモも兼ねてます。随時更新予定。
Arduinoで各種コントローラを制御する。①検討 は こちら
Arduinoで各種コントローラを制御する。②ハードウェア は こちら
Arduinoで各種コントローラを制御する。③ソフトウェア は こちら
開発背景
某ゲームで、決まった操作を連続で行うことがある。
一連の操作を簡単に行えるようにしたい。
概要
既存の有線USBコントローラをベースとする
「中国文字が入ってる怪しい良心的な価格の製品」
https://www.amazon.co.jp/dp/B084ZJG988/ref=cm_sw_em_r_mt_dp_U_QjS7EbEJ80JTX
Arduino互換ボードTeensy3.6を利用して、ボタンの入力を外部から制御する。
「Teensy3.6 - スイッチサイエンス」
https://www.switch-science.com/catalog/2989/
機能
連射機能
HORIのコントローラのようにモード分けをする。
ハード的に実装が困難だったため見送り(2020/07/04追記)
(https://game.girldoll.org/ps4-controller-rensya/#2 参照:2020/06/21)
自動ボタン操作
入力モードと出力モードを設け、パターンを変更できるようにする。
入力モード:各ボタンの入力を保存する
出力モード:押している間、保存されたパターンを出力
ハードウェア検討
連射モード用
TURBOボタン
TURBO LED(緑)
ボタン用抵抗
LED用抵抗
連射モードを実装しないため不要(2020/07/04追記)
自動モード用
AUTOボタン
AUTO RECボタン
AUTO resetボタン
AUTO REC LED(赤)脚を赤塗
AUTO REC LED(緑)脚を黒塗
ボタン用抵抗 *3
Teensy内Pullup抵抗を使うため不要
LED用抵抗 (10Ωx4)
各種ボタン用
電流制限用の抵抗 *18 (タクトスイッチ使ってるやつはいらないかも)
ソフトウェア検討
1/30秒ごとに以下の処理を行う
ボタンのステータス確認・保存
Teensy接続ボタン3個 (前とステータスが違えば押下&離す認識)
if AUTO REC flag
コントローラのボタン18個
if 連射モード押下
if AUTO REC=ON
error flag (赤LED&緑LED早点滅)
Swith ボタン.連射ステータス
連射: 連射ホールドに
連射ホールド: 連射OFFに
連射OFF: 連射モードに
else if AUTOボタン押下
if AUTO rec =NONE
error flag (赤LED早点滅)
else
AUTO out flag
else if AUTO RECボタン押下
if 連射モード=ON
error flag (赤LED&緑LED早点滅)
else
AUTO REC flag トグル (REC時赤LED遅点滅 & RECデータ有時赤LED点灯)
ボタン出力 LED更新
参考サイト
「[デュアルショック4乗っ取り] - 松蔵さん家の物置場(仮)」 2020/06/21アクセス
https://rezius2.jimdofree.com/%E5%B7%A5%E4%BD%9C%E3%81%AE%E6%A3%9A/%E3%83%87%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%B7%E3%83%A7%E3%83%83%E3%82%AF4%E4%B9%97%E3%81%A3%E5%8F%96%E3%82%8A/
「DualShock 4-PS4開発者Wiki」2020/06/21アクセス
https://www.psdevwiki.com/ps4/DualShock_4
「デュアルショック4のアナログスティックを乗っ取る(1):分解〜回路図〜試験 | ファミコンと心中するの?」2020/06/21アクセス
https://ameblo.jp/bit287/entry-12426938822.html