タイトル意味わかんないですけどそのままです。
今回は再制作記事です。
ネオディケイドライバー制作ですが数人の方からうまく動作しないとご相談を受けた事があります。都度やり取りをしたのですがうまく動かなかったようです。もしかしてブログの内容がわかりにくいのかなと思うようになり私はネオのマゼンタより白の方が好きなので制作記事のおさらいを込めて再制作しようと思います。
■必要な物
●DXディケイドライバー
中古ショップで2980円(カード1枚付)でした。
●ATTINY85-20PU
http://akizukidenshi.com/catalog/g/gI-09573/
小型化省電力化の為にこちらを使用しました。
●DFPlayer mini
http://akizukidenshi.com/catalog/g/gM-12544/
音声再生に使います。
●5V出力昇圧DCDCコンバーター
http://akizukidenshi.com/catalog/g/gK-13065/
乾電池2本3Vを5Vに昇圧する為に使用。
●PAM8012使用2ワットD級アンプモジュール
http://akizukidenshi.com/catalog/g/gK-08217/
本来の用途とは違いますがLEDに使います。
●その他
microSDカード
抵抗1K
ICソケット8P
配線
ユニバーサル基板
今回おさらいをと言っていますが新規にコンデンサを1個追加しています。
電解コンデンサー22μF50V85℃ ルビコンPK
http://akizukidenshi.com/catalog/g/gP-03177/
理由なんですがカード挿入後、劇中のように勢いよくバックルを閉める(回転させる)と変身音が鳴りませんでした。調べてみるとハードウェア的問題で勢いよく回転させると電池の接触が一瞬外れてしまい電源オフになってしまうからです。実はこの現象なんですがCSMディケイドライバーの初期ロットに同じ症状の個体がありました(私はそれを引き当てましたw)当時、電池蓋にスポンジなどをかませて電池が動かないようにして修整しました。
電池ボックスはバネの部分があり電池を取りやすいように作られているのですが動く原因になっているのでプラバンに銅箔テープを巻いて噛ませてガッチリ固定出来るようにしました。これ以降は勢いよく回転させても電池が動かなくなりました。
ですが電池蓋が閉められない、電池が外しにくいという欠点がありどうしようかと考えていたらコンデンサは電気を貯めて放出すると知り(基本ですがw)電池が一瞬離れてもコンデンサの電気で通電させ続ければオフにならないのではないかと思いつき今回取り付けています。
取り敢えずうまくいってるっぽいです。
■ハードウェア
まずは基板を破壊しま…せん。
2回目の工作なのでユニバーサル基板でスイッチ部を作成しました。高さの問題があるので基板の厚みは同じ物を使用しドライバーのスイッチを再利用しています。
これによって基板を破壊しないので最悪元に戻せます。
元基板を取り外し赤丸の部分を切り取ります。
ライドスイッチ基板を作り元基板のスイッチを同じ位置に取り付けます。
元基板
自作基板
ユニバーサル基板をこの形に切り取り部品のレイアウトを決め取り付けていきます。
前回とは微妙に位置や向きが変わっています。
※最初は緑色の十字配線基板を使っていたのですが失敗してなくなったのでいつもの茶色の基板を使っています。
回路図はこちらです。
LEDを直列になるように繋げます。
アンプに取り付けなんですがLEDの配線が逆でした(回路図でいうとLEDのSPK+-が逆でした)取り付けは最後に動作確認をしながら配線を直すのがいいと思います。ちゃんと光るまで付け替えていたのでどれが正解かいまいちわかりません。
全ての部品、配線を取り付けます。
注意点はバーコードリーダは昇圧前の3Vに取り付けてください。5Vに取り付けるとラミネート加工のカードが読めなくなります。
コンデンサをつけ忘れていたので最後に空いている部分に取り付けました。5Vの電気を貯めるので必ず5Vが通っている所につけてください。
※雑な取り付けですが勘弁してくださいw
次に音声関係です。
※コピペです。
基本的な音声の流れですが
回転音→カード挿入音→カメンライド読み上げ→待機音→回転音→発動音→回転音→カード引き抜き音
このようになっています。一つ一つ音声を並べていけばいいんですがmp3モジュールの特性上次が再生されるまで若干のラグがありテンポが悪いです。
ですので
回転音→カード挿入音カメンライド読み上げ待機音→回転音発動音→回転音→カード引き抜き音
このように一部の音声を繋げてなるべくラグが気にならないようにしています。
実際の音声の分け方です。
フォルダ1-20はクウガ-ジオウ、21はディエンド、22はその他で分けています。
共通音声001.002.003.004.005.006.101.102.104(103はライド系の音声に繋げて1つにしていますので使っていません)はすべてのフォルダに入っています。
後記のスケッチをみてもらえばわかると思いますがカメンライドは10の位、フォームライドは50の位とルール付けをしたのですが結構崩れているものもありますw
■ソフトウェア
スケッチは一番最後に載せてあります。
一部前回と変更部分があります。
・LOOP部に起動音を追加しました。起動音はフォルダ01、ファイル名105.mp3で入っています
・mp3再生用関数の書式を変更しました
■動作確認
配線間違えて基板取り替えたり昇圧回路がまさかの初期不良で昇圧されなかったりとトラブルはありましたが普通に動きました。とはいえ私は一回作れたのでスムーズに再制作できたのもあると思います。危ない点はLED関係かもしれません。繋げ方を間違えていると起動しませんでした。
前の制作記事は詳しく説明しようとして余計複雑でわかりにくい物になっていたのかなと思いなるべく簡潔に写真多めで書いたつもりですがどうでしょう?
■スケッチ
- //ネオディケイドライバー再現attiny85用
- #include <SoftwareSerial.h>
- //SoftwareSerial mySerial(0,1); // RX, TX
- SoftwareSerial mySerial(1,0); // TX
- //黄色0 緑1
- int folder=1,file;//MP3用変数
- int reading_on; //カメンライド 1
- //ファイナルカメンライド 2
- //アタックライド 3
- //ファイナルアタックライド 4
- //フォームライド 5
- //ファイナルフォームライド 6
-
- int ride_on; //カメンライド音 11
- //ファイナルカメンライド音 21
- //アタックライド音 31
- //ファイナルアタックライド音 41
- //フォームライド音 51
- //ファイナルフォームライド音 61
- #define card_in 101 //カードIN
- #define card_unplug 102 //カード引き抜き
- #define reading_wait 103 //ライド待機音
- #define opening_and_closing 104//開閉
- int reading_sw;//読み取りスイッチ
- int ride_sw;//カメンライドスイッチ
- #define reading_pin 1 //読み取り開始ピン D1
- #define ride_pin 2 //カメンライドピン D2
- #define clock_pin 3 //A2/3ピン
- #define data_pin 2 //A3/2ピン
- int open_clos;
- int card_off;
- int start_sound;
- int power_on;
- //バーコード読み取り(フォトリフレクタ)----------------------------------------------
- #define bwhite 0
- #define bblack 1
- unsigned int bardat=0;
- unsigned char bitcnt = 0;
- unsigned char ck_read( void ){
- if ( analogRead( clock_pin ) > 55){ return bblack; }
- return bwhite;
- }
- unsigned char dat_read( void ){
- if ( analogRead( data_pin ) > 55 ){ return bblack; }
- return bwhite;
- }
- void bardat_read( void ){ bardat = ( bardat<<1 ) + dat_read(); }
- void wb_read( void){
- while( ck_read() == bwhite ); // 白
- bardat_read();
- }
- void bw_read( void ){
- while( ck_read() == bblack ); // 黒
- bardat_read();
- }
- //----------------------------------------------------------------------------
- //バーコード出力----------------------------------------------------------------------
- void barcode_read()
- {
- bardat = 0; bitcnt =0;
- while( ck_read() == bwhite ); // 白
- while( ck_read() == bblack ); // 黒
- delay(10);
- bw_read(); // bit 0
- wb_read(); // bit 1
- bw_read(); // bit 2
- wb_read(); // bit 3
- bw_read(); // bit 4
- wb_read(); // bit 5
- bw_read(); // bit 6
- wb_read(); // bit 7
- bw_read(); // bit 8
- wb_read(); // bit 9
- bw_read(); // bit 10
- wb_read(); // bit 11
- bw_read(); // bit 12
- //mySerial.println( bardat , BIN );
- //Serial.println( bardat );
- switch(bardat){//
- //カメンライド
- case 1149:{folder=1,reading_on=1,ride_on=11;} break;//カメンライドクウガ
- case 31:{folder=1,reading_on=1,ride_on=12;} break;//カメンライドクウガアルティメット
- case 153:{folder=1,reading_on=1,ride_on=13;} break;//カメンライドクウガライジングアルティメット
- case 829:{folder=2,reading_on=1,ride_on=11;} break;//カメンライドアギト
- case 47:{folder=2,reading_on=1,ride_on=12;} break;//カメンライドアギトシャイニング
- case 79:{folder=3,reading_on=1,ride_on=11;} break;//カメンライド龍騎
- case 57:{folder=3,reading_on=1,ride_on=12;} break;//カメンライド龍騎サバイブ
- case 1015:{folder=4,reading_on=1,ride_on=11;} break;//カメンライドファイズ
- case 87:{folder=4,reading_on=1,ride_on=12;} break;//カメンライドファイズブラスター
- case 225:{folder=5,reading_on=1,ride_on=11;} break;//カメンライドブレイド
- case 103:{folder=5,reading_on=1,ride_on=12;} break;//カメンライドブレイドキング
- case 1601:{folder=6,reading_on=1,ride_on=11;} break;//カメンライド響鬼
- case 105:{folder=6,reading_on=1,ride_on=12;} break;//カメンライド装甲響鬼
- case 537:{folder=7,reading_on=1,ride_on=11;} break;//カメンライドカブト
- case 143:{folder=7,reading_on=1,ride_on=12;} break;//カメンライドカブトハイパー
- case 1913:{folder=8,reading_on=1,ride_on=11;} break;//カメンライド電王
- case 113:{folder=8,reading_on=1,ride_on=12;} break;//カメンライド電王ライナー
- case 169:{folder=8,reading_on=1,ride_on=13;} break;//カメンライド電王超クライマックス
- case 1389:{folder=9,reading_on=1,ride_on=11;} break;//カメンライドキバ
- case 151:{folder=9,reading_on=1,ride_on=12;} break;//カメンライドキバエンペラー
- case 885:{folder=10,reading_on=1,ride_on=11;} break;//カメンライドディケイド
- case 13:{folder=10,reading_on=1,ride_on=12;} break;//カメンライドディケイドコンプリート
- case 1855:{folder=11,reading_on=1,ride_on=11;} break;//カメンライドW
- case 593:{folder=11,reading_on=1,ride_on=12;} break;//カメンライドWエクストリーム
- case 1859:{folder=12,reading_on=1,ride_on=11;} break;//カメンライドオーズ
- case 795:{folder=12,reading_on=1,ride_on=12;} break;//カメンライドオーズプトティラ
- case 1869:{folder=13,reading_on=1,ride_on=11;} break;//カメンライドフォーゼ
- case 801:{folder=13,reading_on=1,ride_on=12;} break;//カメンライドフォーゼコズミック
- case 1887:{folder=14,reading_on=1,ride_on=11;} break;//カメンライドウィザード
- case 843:{folder=14,reading_on=1,ride_on=12;} break;//カメンライドウィザードインフィニティ
- case 1941:{folder=15,reading_on=1,ride_on=11;} break;//カメンライド鎧武
- case 897:{folder=15,reading_on=1,ride_on=12;} break;//カメンライド鎧武極
- case 1975:{folder=16,reading_on=1,ride_on=11;} break;//カメンライドドライブ
- case 949:{folder=16,reading_on=1,ride_on=12;} break;//カメンライドドライブトライドロン
- case 37:{folder=17,reading_on=1,ride_on=11;} break;//カメンライドゴースト
- case 1073:{folder=17,reading_on=1,ride_on=12;} break;//カメンライドゴーストムゲン
- case 199:{folder=18,reading_on=1,ride_on=11;} break;//カメンライドエグゼイド
- case 1121:{folder=18,reading_on=1,ride_on=12;} break;//カメンライドエグゼイドムテキ
- case 477:{folder=19,reading_on=1,ride_on=11;} break;//カメンライドビルド
- case 1169:{folder=19,reading_on=1,ride_on=12;} break;//カメンライドビルドジーニアス
- case 493:{folder=20,reading_on=1,ride_on=11;} break;//カメンライドジオウ
- case 535:{folder=20,reading_on=7,ride_on=12;} break;//カメンライドグランドジオウ
- case 739:{folder=20,reading_on=1,ride_on=13;} break;//カメンライドオーマジオウ
- case 201:{folder=21,reading_on=1,ride_on=11;} break;//カメンライドディエンド
- case 235:{folder=21,reading_on=1,ride_on=12;} break;//カメンライドディエンドコンプリート
- //folder=22 オリジナル
- case 587:{folder=22,reading_on=1;ride_on=11;} break;//KAMEN RIDEゼロワン
- case 1825:{folder=22,reading_on=2;ride_on=12;} break;//KAMEN RIDEルパンレンジャー
- case 1979:{folder=22,reading_on=3;ride_on=13;} break;//KAMEN RIDEパトレンジャー
- //case :{folder=22,reading_on=1;ride_on=14;} break;//KAMEN RIDEゲイツ
- //case :{folder=22,reading_on=1;ride_on=15;} break;//KAMEN RIDEジョーカー
- //case :{folder=22,reading_on=1;ride_on=16;} break;//KAMEN RIDEスカル
- //ファイナルアタックライド
- case 1619:{folder=1,reading_on=4,ride_on=41;} break;//ファイナルアタックライドクウガ
- case 673:{folder=2,reading_on=4,ride_on=41;} break;//ファイナルアタックライドアアアアギト
- case 445:{folder=3,reading_on=4,ride_on=41;} break;//ファイナルアタックライドリュリュリュ龍騎
- case 1235:{folder=4,reading_on=4,ride_on=41;} break;//ファイナルアタックライドファファファファイズ
- case 133:{folder=5,reading_on=4,ride_on=41;} break;//ファイナルアタックライドブブブブレイド
- case 2043:{folder=6,reading_on=4,ride_on=41;} break;//ファイナルアタックライドヒヒヒ響鬼
- case 295:{folder=7,reading_on=4,ride_on=41;} break;//ファイナルアタックライドカカカカブト
- case 1039:{folder=8,reading_on=4,ride_on=41;} break;//ファイナルアタックライドデデデ電王
- case 1363:{folder=9,reading_on=4,ride_on=41;} break;//ファイナルアタックライドキキキキバ
- case 1877:{folder=10,reading_on=4,ride_on=41;} break;//ファイナルアタックライドディディディディケイド
- case 1261:{folder=11,reading_on=4,ride_on=41;} break;//ファイナルアタックライドダダダW
- case 1287:{folder=12,reading_on=4,ride_on=41;} break;//ファイナルアタックライドオオオオーズ
- case 1331:{folder=13,reading_on=4,ride_on=41;} break;//ファイナルアタックライドフォフォフォフォーゼ
- case 1427:{folder=14,reading_on=4,ride_on=41;} break;//ファイナルアタックライドウィウィウィウィザード
- case 1563:{folder=15,reading_on=4,ride_on=41;} break;//ファイナルアタックライドガガガ鎧武
- case 1665:{folder=16,reading_on=4,ride_on=41;} break;//ファイナルアタックライドドドドドライブ
- case 1759:{folder=17,reading_on=4,ride_on=41;} break;//ファイナルアタックライドゴゴゴゴースト
- case 1783:{folder=18,reading_on=4,ride_on=41;} break;//ファイナルアタックライドエエエエグゼイド
- case 1811:{folder=19,reading_on=4,ride_on=41;} break;//ファイナルアタックライドビビビビルド
- case 123:{folder=20,reading_on=4,ride_on=41;} break;//ファイナルアタックライドジジジジオウ
- //アタックライド
- case 981:{folder=6,reading_on=3;ride_on=31;} break;//ATTACK RIDE音撃棒烈火
- case 1017:{folder=7,reading_on=3;ride_on=31;} break;//ATTACK RIDEクロックアップ
- case 833:{folder=10,reading_on=3;ride_on=31;} break;//ATTACK RIDEスラッシュ
- case 851:{folder=10,reading_on=3;ride_on=32;} break;//ATTACK RIDEブラスト
- case 819:{folder=10,reading_on=3;ride_on=33;} break;//ATTACK RIDEイリュージョン
- case 867:{folder=10,reading_on=3;ride_on=34;} break;//ATTACK RIDEインビジブル
- case 749:{folder=10,reading_on=3;ride_on=35;} break;//ATTACK RIDE烈火大斬刀
- //フォームライド
- case 1307:{folder=4,reading_on=5;ride_on=51;} break;//FORM RIDEファイズアクセル
- //ファイナルフォームライド
- }
- file=reading_on;mp3();//カメンライド待機音ロング
- card_off=1;
- }
- //-------------------------------------------------------------------
- //カメンライド------------------------------------------------------------------------
- void kamen_ride()
- {
- file=ride_on;mp3();//カメンライド発動
- while(digitalRead(ride_pin) == LOW){}//開いたら抜け出す
- file=opening_and_closing;mp3();//開閉音
- while(digitalRead(reading_pin) == LOW){}//
- file=card_unplug;mp3();delay(100);card_off=0;//カード引き抜き
- }
- //------------------------------------------------------------------------------------
- void mp3()
- {
- //ファイル指定再生
- unsigned char mp3[8] = {0x7E,0xFF,0x06,0x0F,(byte)0,folder,file,0xEF};
- mySerial.write(mp3,8);
- delay(10);
- //音量指定
- unsigned char mp3_v[8] = {0x7E,0xFF,0x06,0x06,(byte)0,(byte)0,(byte)20,0xEF};//7個目の値を変更1〜30まで
- mySerial.write(mp3_v,8);
- }
- void setup() {
- mySerial.begin( 9600 );
- pinMode(reading_pin,INPUT_PULLUP); //読み取り開始ピン
- pinMode(ride_pin,INPUT_PULLUP); //カメンライドピン
- }
- void loop() {
- if(power_on == 0){delay(1000);file=105;mp3();power_on=1;}//スタート音声
- if(open_clos == 1){
- if(digitalRead(ride_pin) == HIGH){file=opening_and_closing;mp3();open_clos=0;}//開閉音
- }
- if(digitalRead(ride_pin) == LOW){open_clos=1;}
- if(card_off == 0){
- //while(digitalRead(ride_pin) == LOW){}
- if(digitalRead(reading_pin) == LOW){barcode_read();}}//カードIN/バーコードリード
- //カードが入っていて閉じると発動
- if(digitalRead(ride_pin) == LOW && digitalRead(reading_pin) == LOW ){ kamen_ride();}//発動
- }