ドラムマニアのコントローラーの自作
注意:この記事は古い記事です。参考程度にはなるかもしれませんが、これからドラムマニアコントローラを自作しようという方は、新しい記事であるドラムマニア専コン自作(完)を参照してください。
KONAMIから専用のコントローラが発売されていますが、あまりにも小さすぎます。あれではゲームセンターのドラムマニアは再現できないため、実寸大のコントローラーを自作することにしました。
と言っても、YAMAHAからDTXという素晴らしい電子ドラムが発売されています。
DTXは、PSのコントローラー端子が備えられているため、パソコンやPSにそのまま接続できます。。
ただし、DTXは7万円もするため、ゲームのために買うのはどうかと思います。
ということで、電子ドラムではなくトレーニングドラムを購入して、トレーニングドラムを専用コントローラーに改造することにしました。
と言っても、YAMAHAからDTXという素晴らしい電子ドラムが発売されています。
DTXは、PSのコントローラー端子が備えられているため、パソコンやPSにそのまま接続できます。。
ただし、DTXは7万円もするため、ゲームのために買うのはどうかと思います。
ということで、電子ドラムではなくトレーニングドラムを購入して、トレーニングドラムを専用コントローラーに改造することにしました。
まずは、音検出装置の製作から。
こちらは、いろいろなホームページを参考にして試行錯誤してできた回路です。
私は、電子回路に関してはプロではないため、かなり適当な部分があります。
「こうした方が良いのでは」、などという意見があったらコメントしてもらえると助かります。
私は、電子回路に関してはプロではないため、かなり適当な部分があります。
「こうした方が良いのでは」、などという意見があったらコメントしてもらえると助かります。
↓ドラムパット一個あたりの回路図。
ドラムパートを5コつけるのであれば、下記の回路が5コ必要になります。
to PICは、12F509の4番ピンへ。
ドラムパートを5コつけるのであれば、下記の回路が5コ必要になります。
to PICは、12F509の4番ピンへ。

※今度全体の回路図を載せます
↓完成した全体像。

↓あまり見せたくないけど裏側

↓パソコンとの接続は、PSのコントローラーを使います。
PSのコントローラを小さくするため、いらない部分は切り落としてしまいます。
PSのコントローラを小さくするため、いらない部分は切り落としてしまいます。

↓反対側も切り落とします

↓コネクタ部を取り外す場合は、配線の色の順番を覚えておいた方が良いです。

↓PSのコントローラーのピンアサイン。pintel君、いつもありがと!
12F509の5番ピンから各ピンに配線します。
12F509の5番ピンから各ピンに配線します。

↓実際に搭載したところ

↓PICのソースコードです。
hexファイルはコチラ
hexファイルはコチラ
;**********************************************************************
; *
; Filename:Drummania_Controller_ECU.asm *
; Date:2008-11-15 *
; Device:PIC12F509 *
; *
; Author:penta *
; HomePage:http://www33.atwiki.jp/pentagon/ *
; *
; *
;**********************************************************************
; *
; Program_Notes: *
; - GP3がHighになると、所定時間GP0がLowになる *
; - 所定時間中はGP3への入力は受け付けない(チャタリング対策のため) *
; - おまけで所定時間中はGP1がHighになる(確認用LEDを取り付けるため) *
; *
;**********************************************************************
; *
;***** PIC12F509 のピン配置 *
; _____ *
; +5V--(Vdd)1| U |8(Vss)--GND *
; (GP5)2| |7(GP0)-->PS_Controller *
; (GP4)3| |6(GP1)--10KΩ--LED--GND *
; +5V--SW--+--(GP3)4|____|5(GP2) *
; | *
; 10KΩ *
; | *
; GND *
; *
;**********************************************************************
LIST P=12F509 ;プロセッサの機種を指定する
#INCLUDE P12F509.INC ;プロセッサの変数定義の指定
__CONFIG 0x0A ;コンフィグ・ワードの設定
;コードプロテクトしない。
;ウォッチドッグタイマを使用しない
;外部リセットを使用しない
;内蔵クロックを使用する
;****************************** Note **********************************
; __CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC *
; *
; -- -- -- -- -- -- -- MCLRE CP WDTE FOSC1 FOSC0 *
;bit 11 10 9 8 7 6 5 4 3 2 1 0 *
; 0 0 0 0 0 0 0 0 1 0 1 0(0x0A)*
;**********************************************************************
;***** 変数の定義
; ORG 0x07
TIM1 EQU 0x07 ;タイマーカウンタ
TIM2 EQU 0x08 ;タイマーカウンタ
TIM3 EQU 0x09 ;タイマーカウンタ
;*****
; ORG 0x3FF ;リセット・ベクター
; ;12F508 は 0x1FF番地
ORG 0x000 ;プログラム実行開始番地
MOVWF OSCCAL ;OSCCAL レジスタファイルを更新
;****************************** Note **********************************
; 内蔵クロックを使用する場合は工場出荷時にリセットベクター 0x3FF 番地 *
; にインストラクション 'MOVLW k' であらかじめ書き込まれている補正値を *
; 読込んで 'OSCCAL' レジスタの値(上位7ビット)を更新する必要がある *
; 内蔵クロックを使用しない場合は、'MOVWF OSCCAL'は不要 *
;**********************************************************************
;***** ポートの初期設定
;
MOVLW 0x08 ;GP3を入力ポートに(001000)
TRIS 0x06 ;(f=6)
MOVLW 0xDF ;T0CSは'0'、GP2は出力ピン
OPTION ;OPTIONレジスタに書き込む
;***** START
START:
GP0_OFF MOVLW B'000001' ;GP0をHighに。
MOVWF GPIO ;この時、PSコントローラは反応しない
SW1 BTFSS GPIO,3 ;GP3がHighになったら次のステップをスキップ
GOTO GP0_OFF ;GP3がLowならGP0_OFFに戻る
GP0_ON MOVLW B'000010' ;GP0をLowに。GP1(確認用LED)をHighに。
MOVWF GPIO ;GPIOレジスタファイルに書き込む
CALL DELAY ;タイマールーチンのよびだし
GOTO GP0_OFF
;***** タイマールーチン
;****************************** Note **********************************
;公式 *
;T={4(TIM2)((TIM3)+1)+3}*0.4*(10/4)<μS> *
;TIM2=10,TIM3=249でT=0.010003s *
;TIM1=100(0x64)で約1秒 *
;通常は、TIM1をいじって時間を調節する。 *
;**********************************************************************
DELAY
MOVLW 0xC8 ;TIM1の設定。通常はここをいじる。
MOVWF TIM1 ;TIM1=200(0xC8)
WA1 MOVLW 0x0A ;TIM2の設定。TIM2=10(0x0A)
MOVWF TIM2
WA2 MOVLW 0xF9 ;TIM3の設定。TIM3=249(0xF9)
MOVWF TIM3
WA3 NOP
DECFSZ TIM3,F
GOTO WA3
DECFSZ TIM2,F
GOTO WA2
DECFSZ TIM1,F
GOTO WA1
RETLW 0 ;RETURNの代用
END
PICを5個使います。1コのPICで5コのパッドを制御しようと思ってやってみましたが、PICは同時に2つの命令を実行できないので、同時押しで不具合が出ました。
なので、PICは5コ使った方がよいです。
なので、PICは5コ使った方がよいです。
とりあえず今日はココマデ。
