IIDXコントローラーをULTIMATE MOBILEに対応させる手順
当記事は筆者が個人で制作販売をしている「beatmaniaIIDX用ハンドメイドコントローラー」及び「3Dプリンター製ミニIIDXコントローラー」をULTIMATE MOBILEに対応させる手順を説明しています
それ以外のコントローラーではできませんのでご了承ください
また、これらは有線接続可能なAndroid端末にのみ対応しています。Apple製品での無線接続には対応していません
手順1
製品にはArduinoを使用しているので、ファームウェアを書き換えるためのArduino IDEをインストールする
他、いくつかのプラグインもインストールする(zip形式)
IDEを起動したらメニューの「スケッチ→ライブラリをインクルード→.ZIP形式のライブラリをインストール」で上記HIDライブラリとEncoderライブラリを選択してインストールする
手順2
以下の記事の「デバイス情報を書き換える」の項で、対応のboards.txtの内容を書き換える
以下、Pro MicroをArduino Leonardとして扱うため、「Arduino Leonard」を書き換える
Arduino IDEを起動している状態でboards.txtを書き換えても反映されない。boards.txtを書き換えたらArduino IDEを再起動すること
追記
何人かインストールでつまづく人が居たため、さらに詳細を記載。
まず、board.txtをテキストエディタで開く。
C:\Users\username\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
インストールしてあるフォルダやバージョンによってアドレスが違う場合がある。自身の環境で適切なファイルを探してください。
開いたら430行目あたりにある
leonardo.build.vid=0x2341
leonardo.build.pid=0x8037
leonardo.build.usb_product="Arduino Leonardo"
を
#leonardo.build.vid=0x2341
#leonardo.build.pid=0x8037
#leonardo.build.usb_product="Arduino Leonardo"
leonardo.build.vid=0x1ccf
leonardo.build.pid=0x1018
leonardo.build.usb_product="beatmania IIDX controller Entry Model"
leonardo.build.usb_manufacturer="Konami Amusement"
に置き換える。この時点でArduino IDEを開いていた場合はArduino IDEを再起動する。
手順3
USB接続でコントローラーとPCを繋ぎ、「ツール→ボード→Arduino AVR Boards→Arduino Leonard」を選択、同メニューのシリアルポート欄で基板が接続されていれば、下記のプログラムをインストールする
ハンドメイドコントローラーとミニIIDXコントローラーでインストールするプログラムが異なる
↓ハンドメイドコントローラー用、ミニIIDXコントローラー2P側用
#include <Arduino.h>
#include <HID-Project.h>
#include <Encoder.h>
// ピン番号 1~7鍵→E1~E4
int button[13] = {0, 2, 3, 4, 5, 6, 7, 8, 0, 9, 14, 15, A0};
Encoder Enc(10, 16);
int enc_now;
int enc_prev;
int x;
int i;
void setup() {
for (i = 0; i < 13; i++) pinMode(button[i], INPUT_PULLUP);
Gamepad.xAxis(0);
Gamepad.begin();
}
void loop() {
int i;
//delay(1); delayは消してみる
enc_now = Enc.read();
if (enc_now != enc_prev) x += enc_now-enc_prev;
if (x > 127) x-=255;
else if (x < -128) x+=255;
Gamepad.xAxis(x*256);
enc_prev = enc_now;
for (i = 0; i < 13; i++) {
if (digitalRead(button[i]) == LOW) {
Gamepad.press(i);
}
else {
Gamepad.release(i);
}
}
Gamepad.write();
}
↓ミニIIDXコントローラー1P側用
#include <Arduino.h>
#include <HID-Project.h>
#include <Encoder.h>
// ピン番号 1~7鍵→E1~E4
int button[8] = {0, 2, 3, 4, 5, 6, 7, 8};
Encoder Enc(10, 16);
int enc_now;
int enc_prev;
int x;
int i;
void setup() {
for (i = 0; i < 8; i++) pinMode(button[i], INPUT_PULLUP);
Gamepad.xAxis(0);
Gamepad.begin();
}
void loop() {
int i;
//delay(1); delayは消してみる
enc_now = Enc.read();
if (enc_now != enc_prev) x += enc_now-enc_prev;
if (x > 127) x-=255;
else if (x < -128) x+=255;
Gamepad.xAxis(x*256);
enc_prev = enc_now;
for (i = 0; i < 8; i++) {
if (digitalRead(button[i]) == LOW) {
Gamepad.press(8-i);
}
else {
Gamepad.release(8-i);
}
}
Gamepad.write();
}
手順4
ハンドメイドコントローラーの場合は、USB Type-A端子を端末の対応端子に変換するコネクタを使用して接続する
たとえばType-Cの端末ならダイソーに100円で売っている以下の商品が使用可能
ミニコントローラーの場合は、コントローラー側の端子がType-Cなので対応のケーブルを用意して接続する
たとえば、Type-Cの端末なら同じくダイソーに100円で売っている以下のケーブルが使用可能
手順5
ULTIMATE MOBILEをインストールして遊んでみましょう。プレイサイドに応じて皿のレーンを変えるオプションを忘れずに