ドラムマニア専用コントローラを自作する(旧記事)
注意:これは古い方の記事です。
題名の通り、簡易的な電子ドラムの製作記事です。
トレーニングドラム(ゴムパットのサイレントドラム)を簡易的に音が出るように改造します。
予算は1.5~2万内(結果的には無理でした)!ちなみに音量は一定です。
強く叩いても弱く叩いても一定の音しか出ません。
予算は1.5~2万内(結果的には無理でした)!ちなみに音量は一定です。
強く叩いても弱く叩いても一定の音しか出ません。
あそうそう。
ちなみにDrummaniaもこれで楽しめます。
こっちがメインの使い方になるのかな。
ちなみにDrummaniaもこれで楽しめます。
こっちがメインの使い方になるのかな。
ドラマニの家庭用専用コントローラ発売されてるけど、コナミさんには申し訳ないんだけどアレはないですね。
小さすぎるし、スティックただのプラッチックだし、フットペダルはただのマットだしさ。。。
小さすぎるし、スティックただのプラッチックだし、フットペダルはただのマットだしさ。。。
とは言ってもあれで1万以下で発売するのはさすがかな。
価格とサイズの制限があって大変だろうし
価格とサイズの制限があって大変だろうし
何しろパットがちいせぇのが致命的。
一枚の板に全部乗ってるしちょいとツライ
一枚の板に全部乗ってるしちょいとツライ
『準備物』
- 根性
- トレーニングドラムが必要。
気合のある人は自作しろ。
ただし自作するよりヤフオクで買ったほうが安いぞ。
俺のは4500円くらいで中古でゲッツです。
ちなみにこれを買うと後戻りはできねぇって覚悟が決まるぞ。
ただし自作するよりヤフオクで買ったほうが安いぞ。
俺のは4500円くらいで中古でゲッツです。
ちなみにこれを買うと後戻りはできねぇって覚悟が決まるぞ。
- マイスティック。
こいつは最も重要な品です。
何しろやる気のレベルが変わってくるw
何しろやる気のレベルが変わってくるw
- USB接続のパソコン用ゲームコントローラ
俺はこいつを購入。
なんと490円です。
ボタンは4しかないけど方向キーも入れればこれで十分。
なんと490円です。
ボタンは4しかないけど方向キーも入れればこれで十分。
こいつを改造してドラムとPCをつなぐんです。
通信用として利用します。
通信用として利用します。
- 電子回路を組むのに必要と思われる部品と工具。
さて次はいよいよ回路部を作るぞ!相当苦労したから、真似る人はありがたく読んでくださいね^-^
『製作開始』
先に言っておくけど、真似る人は自己責任でやってください。
真似したらPCブッコわれたって言われても困りますので。
真似したらPCブッコわれたって言われても困りますので。
あ、それと俺は電子は専門外なんです。
ホントは機械が専門で。
今回がんばって電子回路を設計したんだけど回りくどい設計になってると思います。
回路設計できる人は自己で改善したほうがいいです。
ホントは機械が専門で。
今回がんばって電子回路を設計したんだけど回りくどい設計になってると思います。
回路設計できる人は自己で改善したほうがいいです。
(回路設計できる方、よろしければアドバイスお願いします。
)
)
はい、じゃぁまずは回路図から。
注意:ドラムマニア専コン自作(完)←こちらにある回路図が最新の回路図です。
こんな感じ。
これだとパットは5コつなげられる。
必要なパーツは回路図を見てそろえてください。
これだとパットは5コつなげられる。
必要なパーツは回路図を見てそろえてください。
注意点は。
。
。
- 電解コンデンサ2個*極性がああります。
気をつけてください。
- ECM(エレクトリックコンデンサマイク)*極性があります。
気をつけてください。
- トランジスタPNPとNPN型の2種類が必要です。
脚は三本あってラベルを手前にみて、左からECBです。
回路図上だと矢印がE頭っぽいのがB。
何もないのがCです。
回路図上だと矢印がE頭っぽいのがB。
何もないのがCです。
注意:ドラムマニア専コン自作(完)←こちらにある回路では、トランジスタは1種類しか使いません。
大体の回路の働きを説明すると、まずマイクが振動をキャッチすると最初の2SC1815のベース-エミッタ間に電流が流れる。
するとコレクタ-エミッタ間にも電気が流れて、同じく二個目の2sc1815のコレクタがGNDになる。
すると3つめの1015のコレクタから+の信号が出力されPIC16F84に入力される。
んでPIC19F84でAD変換して対応するピンから5Vを出力。
すると2sc1815に電流が流れコレクタがGNDになることによりUSBコントローラのボタンが押されたと判断される。
するとコレクタ-エミッタ間にも電気が流れて、同じく二個目の2sc1815のコレクタがGNDになる。
すると3つめの1015のコレクタから+の信号が出力されPIC16F84に入力される。
んでPIC19F84でAD変換して対応するピンから5Vを出力。
すると2sc1815に電流が流れコレクタがGNDになることによりUSBコントローラのボタンが押されたと判断される。
さらに500kの可変抵抗で感度を調節できる。
なぜPICが必要なのか
PICとは自分でプログラムすることが可能なICチップのことです。
コンデンサマイクから入力された信号は波なわけです。
その波の通り電気を流すと、ボタンを超連射したことになっちゃいます。
具体的に言うと、「ドン!」という音じゃなくて「ドドドドドン」ってなってしまう。
だからここで波をONとOFFだけのデジタル信号にします。
そうすると一発「ドン!」っていう風に音が出るようになります。
その波の通り電気を流すと、ボタンを超連射したことになっちゃいます。
具体的に言うと、「ドン!」という音じゃなくて「ドドドドドン」ってなってしまう。
だからここで波をONとOFFだけのデジタル信号にします。
そうすると一発「ドン!」っていう風に音が出るようになります。
これはまぁ実体配線図。
回路組んだことのない人は参考になるはず。
回路組んだことのない人は参考になるはず。
- 緑はパーツ
- 赤は配線
- 青はジャンパー線
ちなみにこの配線図は開発途中の回路図です。
『余談』
関係ないけど俺が色々試行錯誤した様子をコメントつけて写真で載せておきます。
↑暗中模索して回路設計してるとこ。
↑回路設計で試行錯誤している様子。。。
下のはコントローラの中身
下のはコントローラの中身
↑かなり煮詰まってきた時の様子。
暫定的にそこそこ綺麗に付け直してみた。
ここで初めてPICをつけてる。
暫定的にそこそこ綺麗に付け直してみた。
ここで初めてPICをつけてる。
↑いらなくなった基板にちょっとした回路を組んでみた。
2SC1815を基板から外して再利用する時に生きているかどうか調べたかった。
試行錯誤している間に焼けてしまったりするかもしれないから。
そんなわけでチェック用の基板です。
試行錯誤している間に焼けてしまったりするかもしれないから。
そんなわけでチェック用の基板です。
↑こんな感じにボタンを押すとLEDが光る。
2SCがブッコ割れてた場合は光らない。
2SCがブッコ割れてた場合は光らない。
↑チェック用の基板の裏はこんな感じ。
ワニ口クリップで電源取ってる。
ワニ口クリップで電源取ってる。
↑そろそろ完成間近な感じの基板。
動作チェックも終って80%完成って所かな。
右下のがPIC。
動作チェックも終って80%完成って所かな。
右下のがPIC。
↑裏とチェック時の様子。
マイクを叩いてみてコントローラが反応しているか見る。
マイクを叩いてみてコントローラが反応しているか見る。
↓ちなみにコントローラと基板を連結する方法は
こんな感じでコントローラ基板のパターンをヤスリとかで削る。
んでそこにハンダを盛ってくっつける。
ピッチが狭いから気をつけて。
んでそこにハンダを盛ってくっつける。
ピッチが狭いから気をつけて。
↑これがコンデンサマイク
『コントローラ基板』
コントローラの基板がデカイのでいらないところはザクッと切りましょう。
↑こんな基板です
↑これがピンアサイン。
YRWBrouwnはUSBケーブルの色。
DLRiUPは+字キー。
これはGNDとショートすると反応する。
YRWBrouwnはUSBケーブルの色。
DLRiUPは+字キー。
これはGNDとショートすると反応する。
1234は押しボタン。
こいつはtoCとショートすると反応する。
こいつはtoCとショートすると反応する。
↑さて、こんなん工具で基板を切りますよ~
↑結果こうなりました。
これだけあれば十分。
これだけあれば十分。
↑実際に実装+配線するとこんな感じ。
切ったおかげで基板の空きスペースにすっぽり入った。
切ったおかげで基板の空きスペースにすっぽり入った。
↑実際に試し打ちです。
今回は2コパットをつないでやってみる。
ナイス。
今回は2コパットをつないでやってみる。
ナイス。
↑パソコン上でこんなんして遊べます。
『PICのプログラム』
段々面倒になってきたので解説が雑になってきました(笑。
暫定版としてアセンブリ言語で載せておくので参考程度に。
暫定版としてアセンブリ言語で載せておくので参考程度に。
↓PIC16F84用のアセンブリコード。
注意:PIC16F84よりもPIC12F509をオススメします。
12F509用のコードは、ドラムマニア専コン自作(完)にあります。
12F509用のコードは、ドラムマニア専コン自作(完)にあります。
;ra0 = NC ;ra1 = OUT5 ;ra2 = IN5 ;ra3 = NC ;ra4 = NC ;rb0 = IN4 ;rb1 = IN3 ;rb2 = IN2 ;rb3 = IN1 ;rb4 = OUT1 ;rb5 = OUT2 ;rb6 = OUT3 ;rb7 = OUT4 include 16f84.h .osc hs .wdt off inp_1 = rb.3 inp_2 = rb.2 inp_3 = rb.1 inp_4 = rb.0 inp_5 = ra.2 org 0ch tim0 ds 1 tim1 ds 1 tim2 ds 1 count1 ds 1 count2 ds 1 count3 ds 1 org 0 goto start start mov !ra,#00100b mov !rb,#00001111b clr ra clr rb clr count1 clr count2 clr count3 roop snb inp_1 call work1 snb inp_2 call work2 snb inp_3 call work3 snb inp_4 call work4 snb inp_5 call work5 jmp roop work1 mov rb,#00010000b call wait_1 mov rb,#00000000b jmp roop work1_2 mov rb,#00110000b call wait_n mov rb,#00000000b jmp roop work1_3 mov rb,#01010000b call wait_n mov rb,#00000000b jmp roop work1_4 mov rb,#10010000b call wait_n mov rb,#00000000b jmp roop work1_5 mov rb,#00010000b mov ra,#00010b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work2 mov rb,#00100000b call wait_2 mov rb,#00000000b jmp roop work2_1 mov rb,#00110000b call wait_n mov rb,#00000000b jmp roop work2_3 mov rb,#01100000b call wait_n mov rb,#00000000b jmp roop work2_4 mov rb,#10100000b call wait_n mov rb,#00000000b jmp roop work2_5 mov rb,#00100000b mov ra,#00010b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work3 mov rb,#01000000b call wait_3 mov rb,#00000000b jmp roop work3_1 mov rb,#01010000b call wait_n mov rb,#00000000b jmp roop work3_2 mov rb,#01100000b call wait_n mov rb,#00000000b jmp roop work3_4 mov rb,#11000000b call wait_n mov rb,#00000000b jmp roop work3_5 mov rb,#01000000b mov ra,#00010b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work4 mov rb,#10000000b call wait_4 mov rb,#00000000b jmp roop work4_1 mov rb,#10010000b call wait_n mov rb,#00000000b jmp roop work4_2 mov rb,#10100000b call wait_n mov rb,#00000000b jmp roop work4_3 mov rb,#11000000b call wait_n mov rb,#00000000b jmp roop work4_5 mov rb,#10000000b mov ra,#00010b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work5 mov ra,#00010b call wait_5 mov ra,#00000b jmp roop work5_1 mov ra,#00010b mov rb,#00010000b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work5_2 mov ra,#00010b mov rb,#00100000b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work5_3 mov ra,#00010b mov rb,#01000000b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop work5_4 mov ra,#00010b mov rb,#10000000b call wait_n mov rb,#00000000b mov ra,#00000b jmp roop ;************************************************************************** ; ↓タイマー ;************************************************************************** ;************************* 汎用 nopタイマー ******************************* wait_n mov tim0,#32 wan_0 mov tim1,#32 wan_1 mov tim2,#32 wan_2 nop djnz tim2,wan_2 djnz tim1,wan_1 djnz tim0,wan_0 ret wait_1 mov tim0,#8 wa1_0 mov tim1,#32 wa1_1 mov tim2,#34 wa1_2 snb inp_2 call work1_2 snb inp_3 call work1_3 snb inp_4 call work1_4 snb inp_5 call work1_5 djnz tim2,wa1_2 djnz tim1,wa1_1 djnz tim0,wa1_0 ret wait_2 mov tim0,#8 wa2_0 mov tim1,#32 wa2_1 mov tim2,#34 wa2_2 snb inp_1 call work2_1 snb inp_3 call work2_3 snb inp_4 call work2_4 snb inp_5 call work2_5 djnz tim2,wa2_2 djnz tim1,wa2_1 djnz tim0,wa2_0 ret wait_3 mov tim0,#8 wa3_0 mov tim1,#32 wa3_1 mov tim2,#34 wa3_2 snb inp_1 call work3_1 snb inp_2 call work3_2 snb inp_4 call work3_4 snb inp_5 call work3_5 djnz tim2,wa3_2 djnz tim1,wa3_1 djnz tim0,wa3_0 ret wait_4 mov tim0,#8 wa4_0 mov tim1,#32 wa4_1 mov tim2,#34 wa4_2 snb inp_1 call work4_1 snb inp_2 call work4_2 snb inp_3 call work4_3 snb inp_5 call work4_5 djnz tim2,wa4_2 djnz tim1,wa4_1 djnz tim0,wa4_0 ret wait_5 mov tim0,#8 wa5_0 mov tim1,#32 wa5_1 mov tim2,#34 wa5_2 snb inp_1 call work5_1 snb inp_2 call work5_2 snb inp_3 call work5_3 snb inp_4 call work5_4 djnz tim2,wa5_2 djnz tim1,wa5_1 djnz tim0,wa5_0 ret
↓こっちはHEXです。
:100000000128043065000F306600850186018F01EC :10001000900191018619152006193720861859205C :1000200006187B2005199D200A2810308600D9204B :10003000003086000A2830308600CB200030860051 :100040000A2850308600CB20003086000A289030E5 :100050008600CB20003086000A281030860002304F :100060008500CB2000308600003085000A28203033 :100070008600EE20003086000A2830308600CB2033 :10008000003086000A2860308600CB2000308600D1 :100090000A28A0308600CB20003086000A282030B5 :1000A000860002308500CB200030860000308500BD :1000B0000A28403086000321003086000A2850308C :1000C0008600CB20003086000A2860308600CB20D6 :1000D000003086000A28C0308600CB200030860021 :1000E0000A284030860002308500CB200030860090 :1000F000003085000A2880308600182100308600F4 :100100000A2890308600CB20003086000A28A030D4 :100110008600CB20003086000A28C0308600CB2025 :10012000003086000A288030860002308500CB200F :1001300000308600003085000A28023085002D211D :10014000003085000A280230850010308600CB2060 :1001500000308600003085000A28023085002030FB :100160008600CB2000308600003085000A2802304F :10017000850040308600CB200030860000308500AE :100180000A280230850080308600CB2000308600AF :10019000003085000A2820308C0020308D0020306F :1001A0008E0000008E0BD1288D0BCF288C0BCD2814 :1001B000080008308C0020308D0022308E00061997 :1001C0001B20861821200618272005192D208E0BAC :1001D000DF288D0BDD288C0BDB28080008308C0015 :1001E00020308D0022308E0086193D208618432055 :1001F0000618492005194F208E0BF4288D0BF22884 :100200008C0BF028080008308C0020308D00223044 :100210008E0086195F200619652006186B200519C7 :1002200071208E0B09298D0B07298C0B05290800DD :1002300008308C0020308D0022308E0086198120FD :100240000619872086188D20051993208E0B1E29EC :100250008D0B1C298C0B1A29080008308C002030CB :100260008D0022308E008619A3200619AD20861835 :10027000B7200618C1208E0B33298D0B31298C0B2A :040280002F2908001A :108000000000000000000000000000000000000070 :108010000000000000000000000000000000000060 :108020000000000000000000000000000000000050 :108030000000000000000000000000000000000040 :108040000000000000000000000000000000000030 :108050000000000000000000000000000000000020 :108060000000000000000000000000000000000010 :108070000000000000000000000000000000000000 :10FF00000331366638340000000200011100FFFFA3 :00000001FF
今は振動が隣のパットに伝わらないように筐体のほうで試行錯誤してます。
んで今のところ下みたいにクッション材を挟んでますが、なかなかうまくいきません。
んで今のところ下みたいにクッション材を挟んでますが、なかなかうまくいきません。
この記事は以上です。
関連記事として以下のものも参考にしてください。
。。。
添付ファイル
- 001.jpg
- 002.jpg
- 015.jpg
- 016.jpg
- haisen.png
- jittai.jpg
- KIF_1888.jpg
- KIF_1889.jpg
- KIF_1891.jpg
- KIF_1892.jpg
- KIF_1896.jpg
- KIF_1897.jpg
- KIF_1898.jpg
- KIF_1899.jpg
- KIF_1900.jpg
- KIF_1902.jpg
- KIF_1903.jpg
- KIF_1906.jpg
- KIF_1907.jpg
- KIF_1913.jpg
- KIF_1915.jpg
- KIF_1918.jpg
- kikyas7418-img464x600-1145756795game1.jpg
- kont.jpg
- kont.pinpng.jpg
- red_ng1.jpg