1P/2P同時に自動操作させたい
以前作製した練習用のコマンドコントローラーはCPUにいくつかの動作を繰り返し行わせてそれに対する対応を練習するものでした。
機能の実装状況は大体こちらと同じです。
確反練習などにはこれで十分だったのですが、
VF3tbでちょっと調べたいことがあったため、1P/2P同時に自動操作させるコマンドコントローラーを作成することにしました。
(3tbの基板が故障してしまい検証できなくなったのですが・・・)
1P/2Pともに同期して動かなくては意味がないので制御するマイコンは1つで行うのが簡単です。
Arduino MEGA2560のGPIOはまだたくさん空いていますので、以前と全く同じ簡易コントローラーをもう1つ作るだけで済ませることもできました。
しかし以前のものは試行錯誤しつつ初めて作ったものなので、ちょっと作りが悪く気になっていたんですよね。
せっかくなのでこちらの内容を踏まえて作り直してみました。
作ってみた
基本的には以前のものと同じです。
画像右側
- D-SUBコネクタ
自作コントロールボックスからのコントローラーケーブルを接続。
逆流防止用にダイオードを付けています。
画像中央
- 簡易コントローラー部分
キャラやステージの選択、キャラクターの位置調整やスタートボタン、テストモードに入る際などに使用します。
画像左側
- 赤い角ばったもの(8PinのDipSW)
- 黄色のピンソケット
- 青色のピンソケット
- 緑色のピンソケット
コマンドコントローラーとの接続を物理的に切断する際に使用します。
Arduino MEGA2560のGPIOと接続。
割り込みのためのV-SYNC(垂直同期信号)を供給します。
Arduino MEGA2560のGPIOと接続。
レバー・ボタンの入力データを受け取ります。
LEDを点灯させるための電源(+5v)を接続。
1P/2Pとも1F単位で動作させられているかはまだ試していませんが、テストモードでON/OFFが想定通りに切り替えられていることは確認できています。
あとは使ううちに不具合が見つかれば都度修正していこうと思います。
反省点
いくつか反省点を。
- 親亀子亀のように上下2層に分けて、下段にマイコン(Arduino)を設置すればよかった
- 青色ピンソケット脇の抵抗値について
- +5V/GNDについて
せっかく1枚の基板にいろいろ載せたのに、Arduinoがプラプラしているのが気になります。
ちょうどよいケースを作れば解決できるかも。
ひとまず手元にある中で一番抵抗値の小さかった75Ωを付けてみたのですが、基板側のプルアップ抵抗の値によってはもっと小さな抵抗値にした方が良かったかもしれません。
1Ω抵抗を買ってきたので問題があれば交換してみようと思います。
Arduinoにプログラムを書き込む際にはUSBケーブルでパソコンと接続するため、そのままUSBケーブルを接続したまま動作確認を行ってしまって、うまくいかないことがありました。
USBケーブルからArduinoに給電することも可能なのですが、その場合基板側とGNDレベルが合っている保証はないため、動作がおかしくなっていたのでした。
そのためArduinoを動かすための+5V/GNDもコントロールボックス側から取るようにしています。