はじめまして。かっぱ次郎と申します。
ツイッターにアップしたライドウォッチの解説の為にブロクを開設しました。よろしくお願いします。
まず注意しなくてはいけないのがライドウォッチの改造のみでは完結しません。ジクウドライバーの方も改造します。安いものでもないですし最悪壊してしまう可能性もあります。(私はドライバーを一度壊しました…)それでも改造するという場合は自己責任でお願いします。
今回の変身ベルトの仕様はウォッチ側から音声、ドライバー側からは識別プレートに対応する液晶表示となっておりウォッチに複数音声を仕込んでも識別プレートが変わらないので表示はそのままです。
色々考えてたどり着いたのが赤外線送受信です。ベルトさん方式ですね。シフトブレスから送信、ベルトさんに受信とやってる事はまんまです。
私は高い玩具は現状復帰できる前提で改造するというこだわり?があるのでクリア素材を使ってて穴を空ける必要がないジクウドライバーにまさにぴったりの改造です。
それでは必要な材料を上げていきます。
■ライドウォッチ側
●ライドウォッチ本体
食玩版を使います。理由は色々ありますが
·DXより安い
·中身がスカスカなので仕込みやすい
·スロット両対応だと片方の竜頭が逆になるのが気になる
·劇中でやっていないのでDX版を再現する必要なしと判断した
·アーマータイムのみなのでプログラムを簡潔にできる
大まかにはこんな感じです。
●arduino
·AVRマイコン ATMEGA328P-PU
·セラミック発振子(セラロック)コンデンサー内蔵タイプ 16MHz
·丸ピンICソケット (28P) 300mil
or
·AE-ATMEGA328-MINI (Arduino Pro Mini上位互換)
私は今まで秋月電子のAE-ATMEGA328-MINI (Arduino Pro Mini上位互換)というものを使っていました。
780円と高くはないのですがそんなポンポン買えるような金額でもないので今回はAVRマイコン ATMEGA328P-PUというものを使用しています。ただこちらは扱うのに知識が必要なのではじめてarduinoに触るという方は普通のarduino pro miniを使ってください。その際ライドウォッチ内のレイアウトは変える必要があります。
●音声再生
·DFPlayer mini (MP3プレーヤー)
·microsdカード
·基板取付用小型ダイナミックスピーカー UGCM0903EPD(5.0)
●竜頭ボタン
·やわらかいタクトスイッチ
今回は壊れたガシャットのスイッチを使用しています
●バッテリー
·リチウムイオンポリマー電池 3.7V 400mAh【DTP502535(PHR)】
·USB接続リチウムイオン電池充電器【1304】
·DCジャック 内径1.3mm外径3.5mm 基板取付用 2DC-0033H102
·2.5mm標準DCプラグ(1A) MP-122M
·MDCプラグ変換プラグ 2.1mmメス⇔1.3mmオス
私が買った秋月電子では1.3のDCプラグがなかったので変換プラグも買いました
●音量調整
·半固定ボリューム 100Ω [101]
私が使っているボリュームは秋月電子で3個10円で売っている物なので正直何Ωかわかりません。多分このくらいでいいかなって感じで書いたので完全に信用はしないでください。スピーカーにセロテープでも調整はできますし。
●赤外線送信
·5mm赤外LED L12170 高出力・高速応答
·抵抗27Ω
高出力じゃなくても大丈夫だと思うのですが以前の工作で余っていたので
●その他
·ユニバーサル基板
·小ねじ
·ネオジム磁石
·基板用スライドスイッチ SS-12D00-G5
·プラパイプ
·プラバン
プラ棒
ネオジム磁石はダイソーの8個入りの物です
■ジクウドライバー
·AE-ATMEGA328-MINI (Arduino Pro Mini上位互換)
·リードスイッチMKA-10110(5個入)
·赤外線リモコン受信モジュール SPS-440-1(38kHz)
●共通
·FT232RQ USBシリアル変換キット
·分割ロングピンソケット 1x42 (42P)
·ピンヘッダ 1×40 (40P)
·耐熱電子ワイヤー 1m×10色 導体外径0.54mm(AWG24相当)
·ブレッドボード
·ブレッドボード用ワイヤー
·タクトスイッチ
·ワニ口クリップになっているワイヤー
配線の色を分けた方がわかりやすいです
ワニ口クリップワイヤーはダイソーのワニ口クリップを買って配線を取り付けた物を使っています
次は回路図です。
ライドウォッチ
ジクウドライバー
fritzingの使い方がいまいちで文字が欠けていますがご了承ください。
音声ですがフォルダ名は数字、ファイル名は001.mp3のようにします。
フォルダはSDカードのルートディレクトリに作ります。
ライダー毎にフォルダをわけ例えばジオウなら
フォルダ名01
ファイル名
001.mp3
002.mp3
003.mp3
004.mp3
005.mp3
ゲイツなら
そしてわかりやすいようタイトルに名前を書いています
ジオウ起動音
ジオウ説明音
ジオウ変身音
ジオウ必殺起動音
ジオウ必殺音
アーマータイム音
使うのはこの6個だけです。
次はスケッチです。
プログラムの基本を知らずにネットで調べたりして独学で作ったものなのでわかる人から見たらめちゃくちゃだと思います。
どうか生暖かい目で見てください。
と、言い訳をしたところで
実際のところは動けばいーんだよの精神でやってます。
それともう一つ。赤外線関係のプログラムは買った本の内容をまるっと引用しております(丸パクリともいう)一応手は加えていますがほぼ引用です。
購入した本はこちらです。
www.amazon.co.jp
ネットで調べてもいまいち理解できずに本屋で見つけ立ち読みしこれだ!って決めてヨドバシドットコムで購入したものです←ヲイ
それではライドウォッチのスケッチです
- // 赤外線送信回路
- // ライドウォッチ
- #include <SoftwareSerial.h>
- SoftwareSerial mySerial(5,6); // RX, TX //MP3用ソフトウェアシリアル
- //mp3ファイルナンバー
- //001/起動音
- //002/説明音
- //003/変身音
- //004/必殺起動音
- //005/必殺技音
- //110/アーマータイム音
- //長押し用
- #define PUSH_SHORT 40000
- #define LONG 10000
- #define AT_TAME 7000//アーマータイム開始時間
- int push_long;//
- int change_sw, change_sw1, change_sw2, change_sw3;//アーマータイム
- int rw_sw;//
- int hissatu;//
- int signal_on;
- int character_sw;//キャラクター選択
- int rw_on;//
- int folder;//MP3フォルダ名
- int file;//MP3ファイル名
- int led_ir;//赤外線LED
- int signal_sw;//赤外線送信ON
- #define character_pin 2 //竜頭ピン
- #define at_tame_pin 3 //ライドウォッチスイッチ2ピン/アーマータイム
- #define led_ir_pin 4 //赤外線LEDピン
- void setup() //初期設定
- {
- pinMode(character_pin,INPUT_PULLUP); //竜頭ピン
- pinMode(at_tame_pin,INPUT_PULLUP); //ライドウォッチスイッチ2ピン/アーマータイム
- pinMode(led_ir_pin,OUTPUT); //赤外線LEDピン
-
- //Serial.begin(19200);
- mySerial.begin (9600);
- }
- void loop() //メインの処理
- {
- if(digitalRead(character_pin) == LOW){
- delay(200);
- nagaoshi();//長押し関数
-
- if(push_long == 1){
- Serial.println("ライダー説明音");
- file=2, mp3();//ライダー説明音
- file=0;
- }else{
-
- character_sw++;//キャラクター選択
- character_number();
- folder=signal_sw;//mp3フォルダ選択
-
- Serial.println(signal_sw);
- file=1, mp3();//ライドウォッチ起動音
- Serial.println("ライドウォッチ起動音");
-
- hissatu=0;}
- }
- if(digitalRead(at_tame_pin) == LOW){
- delay(100);
-
- if(hissatu == 0){
- rw_sw=1;//rw_swループオン
- Serial.println("ライドウォッチセット");
- delay(250);
- led_signal();//識別コード送信
- Serial.println("識別コード送信");
- }else{
- if(digitalRead(character_pin) == LOW){
- file=4, mp3();//フィニッシュタイム
- Serial.println("タイムブレイク"), rw_sw=1;}}
-
- while(rw_sw == 1){//rw_swスタート
- Serial.println("ライドウォッチループ中");
- //--------------------------ライダータイム/アーマータイム-----------------------------------------
- //--------------------------タイムブレイク/タイムバースト-----------------------------------------
- if(change_sw == 0){
- while(digitalRead(at_tame_pin) == LOW){Serial.println("スイッチ1回目"), change_sw=1;}//change_sw1回目
- }//change_sw0
-
- if(change_sw == 1){
- while(digitalRead(at_tame_pin) == LOW){Serial.println("スイッチ2回目"), change_sw=2, signal_on=1;}//change_sw2回目
- }//change_sw1
-
- if(change_sw == 2){
- if(digitalRead(at_tame_pin) == LOW){
- if(hissatu == 0){delay(AT_TAME), file=110, mp3(),delay(2000), file=3, mp3(), Serial.println("変身"), rw_sw=0, hissatu=1, change_sw=0;}
- else{delay(1500), file=5, mp3(), Serial.println("必殺"), rw_sw=0, hissatu=1, change_sw=0;}}
- }//change_sw2
- //---------------------------------------------------------------------------------------------
- }//rw_swストップ
- Serial.println("ライドウォッチループ終了");
- }
- }
- void p1()
- {
- int c=23;
- while(1)
- {
- digitalWrite(led_ir_pin,LOW); //ピン6にLOW(0)を出力
- delayMicroseconds(9); //タイマ(9μs)
- digitalWrite(led_ir_pin,HIGH); //ピン6にHIGH(1)を出力
- delayMicroseconds(9); //タイマ(9μs)
- c--; //cのデクリメント(-1)
- if(c==0) //c==0ならば、次へ行く
- break; //break文でループ(2)を脱出
- }
- }
- void p0()
- {
- digitalWrite(led_ir_pin,HIGH); //ピン6にHIGH(1)を出力
- delayMicroseconds(600); //タイマ(600μs)
- }
- //-----------------------------------------長押し判定------------------------------------------
- void nagaoshi(){
- //int gauge = 0;
- unsigned long gauge = 0;
- while (!digitalRead(character_pin))
- {gauge++;}
- //Serial.print(gauge);
- if (gauge < PUSH_SHORT){
- Serial.println("ボタン単押し");
- push_long=0;
- }else{
- Serial.println("ボタン長押し");
- push_long=1;}
- }
- //-------------------------------------------MP3再生-------------------------------------------
- void mp3()
- {
- //ファイル指定再生
- mySerial.write(0x7E);
- mySerial.write(0xFF);
- mySerial.write(0x06);
- mySerial.write(0x0F); //「フォルダ指定再生」コマンド
- mySerial.write((byte)0);
- mySerial.write(folder); //この例では、「folder」という変数が指定される
- mySerial.write(file); //この例では、「file.mp3」という変数のmp3が指定される
- mySerial.write(0xEF);
- delay(10);
- }
- //---------------------------------------------------------------------------------------------
- //-------------------------キャラクター選択----------------------------------------------------
- void character_number(){
-
- switch(character_sw){//
- case 1:{signal_sw=1;} break;//ZI-O/2018
- case 2:{signal_sw=12, character_sw=4;} break;//GEIZ/2068
- case 3:{signal_sw=32;} break;//KUUGA/2000
- case 4:{signal_sw=33;} break;//AGITO/2001
- case 5:{signal_sw=34;} break;//RYUKI/2002
- case 6:{signal_sw=35;} break;//FAIZ/2003
- case 7:{signal_sw=36;} break;//BLADE/2004
- case 8:{signal_sw=37;} break;//HIBIKI/2005
- case 9:{signal_sw=38;} break;//KABUTO/2006
- case 10:{signal_sw=39;} break;//DEN-O/2007
- case 11:{signal_sw=40, character_sw=14;} break;//KIVA/2008
- case 12:{signal_sw=41;} break;//DECADE/2009
- case 13:{signal_sw=42;} break;//W/2009
- case 14:{signal_sw=43;} break;//OOO/2010
- case 15:{signal_sw=44;} break;//FOURZE/2011
- case 16:{signal_sw=45, character_sw=17;} break;//WIZARD/2012
- case 17:{signal_sw=46;} break;//GAIM/2013
- case 18:{signal_sw=47;} break;//DRIVE/2014
- case 19:{signal_sw=48;} break;//GHOST/2015
- case 20:{signal_sw=49;} break;//EX-AID/2016
- case 21:{signal_sw=50;} break;//BUILD/2017
- case 22:{signal_sw=51;} break;//CROSS-Z/2017
- case 23:{signal_sw=52;} break;//GREASE/2017
- case 24:{signal_sw=53;} break;//ROGUE/2017
- case 25:{signal_sw=76;} break;//EVOL2017
- case 26:{signal_sw=54;} break;//BRAVE/2016
- case 27:{signal_sw=55;} break;//SNIPE/2016
- case 28:{signal_sw=56, character_sw=0;} break;//LAZER/2016
- }
- }
- //-----------------------------------------------------------------------------------------------
- void led_signal(){
- //----------------------------赤外線送信---------------------------------------------------------
- p1();p0();p1();//スタートビット
-
- switch(signal_sw){//識別コード送信
- case 1:{p0();p0();p0();p0();p0();p0();p0();p0();p0();p1();} break;//ZI-O/2018
- case 2:{p0();p0();p0();p0();p0();p0();p0();p0();p1();p0();} break;//ZI-O/2019
- case 3:{p0();p0();p0();p0();p0();p0();p0();p0();p1();p1();} break;//ZI-O/2038
- case 4:{p0();p0();p0();p0();p0();p0();p0();p1();p0();p0();} break;//ZI-O/2058
- case 5:{p0();p0();p0();p0();p0();p0();p0();p1();p0();p1();} break;//ZI-O/****
- case 6:{p0();p0();p0();p0();p0();p0();p0();p1();p1();p0();} break;//ZI-O/2000
- case 7:{p0();p0();p0();p0();p0();p0();p0();p1();p1();p1();} break;//ZI-O/0
- case 8:{p0();p0();p0();p0();p0();p0();p1();p0();p0();p0();} break;//ZI-O/1971
- case 9:{p0();p0();p0();p0();p0();p0();p1();p0();p0();p1();} break;//ZI-O/1989
- case 10:{p0();p0();p0();p0();p0();p0();p1();p0();p1();p0();} break;//RIDER/NEXT
- case 11:{p0();p0();p0();p0();p0();p0();p1();p0();p1();p1();} break;//ZI-O/ライダー
- case 12:{p0();p0();p0();p0();p0();p0();p1();p1();p0();p0();} break;//GEIZ/2068
- case 13:{p0();p0();p0();p0();p0();p0();p1();p1();p0();p1();} break;//GEIZ/2019
- case 14:{p0();p0();p0();p0();p0();p0();p1();p1();p1();p0();} break;//GEIZ/2038
- case 15:{p0();p0();p0();p0();p0();p0();p1();p1();p1();p1();} break;//GEIZ/2058
- case 16:{p0();p0();p0();p0();p0();p1();p0();p0();p0();p0();} break;//GEIZ/XXXX
- case 17:{p0();p0();p0();p0();p0();p1();p0();p0();p0();p1();} break;//GEIZ/2000
- case 18:{p0();p0();p0();p0();p0();p1();p0();p0();p1();p0();} break;//GEIZ/
- case 19:{p0();p0();p0();p0();p0();p1();p0();p0();p1();p1();} break;//GEIZ/1971
- case 20:{p0();p0();p0();p0();p0();p1();p0();p1();p0();p0();} break;//GEIZ/1989
- case 21:{p0();p0();p0();p0();p0();p1();p0();p1();p0();p1();} break;//GEIZ/2020
- case 22:{p0();p0();p0();p0();p0();p1();p0();p1();p1();p0();} break;//GEIZ/ライダー
- case 23:{p0();p0();p0();p0();p0();p1();p0();p1();p1();p1();} break;//TUKUYOMI/2068
- case 24:{p0();p0();p0();p0();p0();p1();p1();p0();p0();p0();} break;//RIDER/NEXT
- case 25:{p0();p0();p0();p0();p0();p1();p1();p0();p0();p1();} break;//RIDER/XXXX
- case 26:{p0();p0();p0();p0();p0();p1();p1();p0();p1();p0();} break;//RIDER/2019
- case 27:{p0();p0();p0();p0();p0();p1();p1();p0();p1();p1();} break;//RIDER/ライダー
- case 28:{p0();p0();p0();p0();p0();p1();p1();p1();p0();p0();} break;//RIDER/0
- case 29:{p0();p0();p0();p0();p0();p1();p1();p1();p0();p1();} break;//NEXT/0
- case 30:{p0();p0();p0();p0();p0();p1();p1();p1();p1();p0();} break;//FUTURE/0
- case 31:{p0();p0();p0();p0();p0();p1();p1();p1();p1();p1();} break;//NEW/0
- case 32:{p0();p0();p0();p0();p1();p0();p0();p0();p0();p0();} break;//KUUGA/2000
- case 33:{p0();p0();p0();p0();p1();p0();p0();p0();p0();p1();} break;//AGITO/2001
- case 34:{p0();p0();p0();p0();p1();p0();p0();p0();p1();p0();} break;//RYUKI/2002
- case 35:{p0();p0();p0();p0();p1();p0();p0();p0();p1();p1();} break;//FAIZ/2003
- case 36:{p0();p0();p0();p0();p1();p0();p0();p1();p0();p0();} break;//BLADE/2004
- case 37:{p0();p0();p0();p0();p1();p0();p0();p1();p0();p1();} break;//HIBIKI/2005
- case 38:{p0();p0();p0();p0();p1();p0();p0();p1();p1();p0();} break;//KABUTO/2006
- case 39:{p0();p0();p0();p0();p1();p0();p0();p1();p1();p1();} break;//DEN-O/2007
- case 40:{p0();p0();p0();p0();p1();p0();p1();p0();p0();p0();} break;//KIVA/2008
- case 41:{p0();p0();p0();p0();p1();p0();p1();p0();p0();p1();} break;//DECADE/2009
- case 42:{p0();p0();p0();p0();p1();p0();p1();p0();p1();p0();} break;//W/2009
- case 43:{p0();p0();p0();p0();p1();p0();p1();p0();p1();p1();} break;//OOO/2010
- case 44:{p0();p0();p0();p0();p1();p0();p1();p1();p0();p0();} break;//FOURZE/2011
- case 45:{p0();p0();p0();p0();p1();p0();p1();p1();p0();p1();} break;//WIZARD/2012
- case 46:{p0();p0();p0();p0();p1();p0();p1();p1();p1();p0();} break;//GAIM/2013
- case 47:{p0();p0();p0();p0();p1();p0();p1();p1();p1();p1();} break;//DRIVE/2014
- case 48:{p0();p0();p0();p0();p1();p1();p0();p0();p0();p0();} break;//GHOST/2015
- case 49:{p0();p0();p0();p0();p1();p1();p0();p0();p0();p1();} break;//EX-AID/2016
- case 50:{p0();p0();p0();p0();p1();p1();p0();p0();p1();p0();} break;//BUILD/2017
- case 51:{p0();p0();p0();p0();p1();p1();p0();p0();p1();p1();} break;//CROSS-Z/2017
- case 52:{p0();p0();p0();p0();p1();p1();p0();p1();p0();p0();} break;//GREASE/2017
- case 53:{p0();p0();p0();p0();p1();p1();p0();p1();p0();p1();} break;//ROGUE/2017
- case 54:{p0();p0();p0();p0();p1();p1();p0();p1();p1();p0();} break;//BRAVE/2016
- case 55:{p0();p0();p0();p0();p1();p1();p0();p1();p1();p1();} break;//SNIPE/2016
- case 56:{p0();p0();p0();p0();p1();p1();p1();p0();p0();p0();} break;//LAZER/2016
- case 57:{p0();p0();p0();p0();p1();p1();p1();p0();p0();p1();} break;//PARA-DX/2016
- case 58:{p0();p0();p0();p0();p1();p1();p1();p0();p1();p0();} break;//POPPY/2016
- case 59:{p0();p0();p0();p0();p1();p1();p1();p0();p1();p1();} break;//RIDER1/1971
- case 60:{p0();p0();p0();p0();p1();p1();p1();p1();p0();p0();} break;//RIDER2/1971
- case 61:{p0();p0();p0();p0();p1();p1();p1();p1();p0();p1();} break;//V3/1973
- case 62:{p0();p0();p0();p0();p1();p1();p1();p1();p1();p0();} break;//RIDERMAN/1973
- case 63:{p0();p0();p0();p0();p1();p1();p1();p1();p1();p1();} break;//X/1974
- case 64:{p0();p0();p0();p1();p0();p0();p0();p0();p0();p0();} break;//AMAZON/1974
- case 65:{p0();p0();p0();p1();p0();p0();p0();p0();p0();p1();} break;//STRONGER/1975
- case 66:{p0();p0();p0();p1();p0();p0();p0();p0();p1();p0();} break;//SKYRIDER/1979
- case 67:{p0();p0();p0();p1();p0();p0();p0();p0();p1();p1();} break;//SUPER-1/1980
- case 68:{p0();p0();p0();p1();p0();p0();p0();p1();p0();p0();} break;//ZX/1984
- case 69:{p0();p0();p0();p1();p0();p0();p0();p1();p0();p1();} break;//BLACK/1987
- case 70:{p0();p0();p0();p1();p0();p0();p0();p1();p1();p0();} break;//BLACK RX/1988
- case 71:{p0();p0();p0();p1();p0();p0();p0();p1();p1();p1();} break;//SHIN/1992
- case 72:{p0();p0();p0();p1();p0();p0();p1();p0();p0();p0();} break;//ZO/1993
- case 73:{p0();p0();p0();p1();p0();p0();p1();p0();p0();p1();} break;//J/1994
- case 74:{p0();p0();p0();p1();p0();p0();p1();p0();p1();p0();} break;//GENM/2016
- case 75:{p0();p0();p0();p1();p0();p0();p1();p0();p1();p1();} break;//CRONUS/2016
- case 76:{p0();p0();p0();p1();p0();p0();p1();p1();p0();p0();} break;//EVOL2017
- case 77:{p0();p0();p0();p1();p0();p0();p1();p1();p0();p1();} break;//SHOCKER1971
- case 78:{p0();p0();p0();p1();p0();p0();p1();p1();p1();p0();} break;//ALFA2016
- case 79:{p0();p0();p0();p1();p0();p0();p1();p1();p1();p1();} break;//OMEGA2016
- case 80:{p0();p0();p0();p1();p0();p1();p0();p0();p0();p0();} break;//NEO2017
- case 81:{p0();p0();p0();p1();p0();p1();p0();p0();p0();p1();} break;//RIDE/STRIKER
- case 82:{p0();p0();p0();p1();p0();p1();p0();p0();p1();p0();} break;//ALL RIDERS/ライダー
- case 83:{p0();p0();p0();p1();p0();p1();p0();p0();p1();p1();} break;//SUPER SENTAI/-SS-
- case 84:{p0();p0();p0();p1();p0();p1();p0();p1();p0();p0();} break;//HEISEI/-HR-
- case 85:{p0();p0();p0();p1();p0();p1();p0();p1();p0();p1();} break;//SHOWA/-SR-
- case 86:{p0();p0();p0();p1();p0();p1();p0();p1();p1();p0();} break;//KAMEN RIDER/ライダー
- case 87:{p0();p0();p0();p1();p0();p1();p0();p1();p1();p1();} break;//EVIL/EVIL
- case 88:{p0();p0();p0();p1();p0();p1();p1();p0();p0();p0();} break;//ANCIENT/0
- case 89:{p0();p0();p0();p1();p0();p1();p1();p0();p0();p1();} break;//GAME/GAME
- case 90:{p0();p0();p0();p1();p0();p1();p1();p0();p1();p0();} break;//FUTURE/0
- case 91:{p0();p0();p0();p1();p0();p1();p1();p0();p1();p1();} break;//X MAS/1225
- case 92:{p0();p0();p0();p1();p0();p1();p1();p1();p0();p0();} break;//SPECIAL/-SP-
- case 93:{p0();p0();p0();p1();p0();p1();p1();p1();p0();p1();} break;//RIDER/0
- case 94:{p0();p0();p0();p1();p0();p1();p1();p1();p1();p0();} break;//ZI-O/ライダー
- case 95:{p0();p0();p0();p1();p0();p1();p1();p1();p1();p1();} break;//SINGULAR/0
- case 96:{p0();p0();p0();p1();p1();p0();p0();p0();p0();p0();} break;//NOTHING/0
- case 97:{p0();p0();p0();p1();p1();p0();p0();p0();p0();p1();} break;//MILLENNIUM/2000
- case 98:{p0();p0();p0();p1();p1();p0();p0();p0();p1();p0();} break;//MAX/MAX
- case 99:{p0();p0();p0();p1();p1();p0();p0();p0();p1();p1();} break;//DOEND/2009
- case 100:{p0();p0();p0();p1();p1();p0();p0();p1();p0();p0();} break;//GENIUS/FIN.
- case 101:{p0();p0();p0();p1();p1();p0();p0();p1();p0();p1();} break;//MUTEKI/FIN.
- case 102:{p0();p0();p0();p1();p1();p0();p0();p1();p1();p0();} break;//MUGEN/FIN.
- case 103:{p0();p0();p0();p1();p1();p0();p0();p1();p1();p1();} break;//TRIDORON/FIN.
- case 104:{p0();p0();p0();p1();p1();p0();p1();p0();p0();p0();} break;//KIWAMI/FIN.
- case 105:{p0();p0();p0();p1();p1();p0();p1();p0();p0();p1();} break;//INFINITY/FIN.
- case 106:{p0();p0();p0();p1();p1();p0();p1();p0();p1();p0();} break;//COSMIC/FIN.
- case 107:{p0();p0();p0();p1();p1();p0();p1();p0();p1();p1();} break;//PUTOTYRA/FIN.
- case 108:{p0();p0();p0();p1();p1();p0();p1();p1();p0();p0();} break;//XTREME/FIN.
- case 109:{p0();p0();p0();p1();p1();p0();p1();p1();p0();p1();} break;//CONPLETE/FIN.
- case 110:{p0();p0();p0();p1();p1();p0();p1();p1();p1();p0();} break;//ENPEROR/FIN.
- case 111:{p0();p0();p0();p1();p1();p0();p1();p1();p1();p1();} break;//LINER/FIN.
- case 112:{p0();p0();p0();p1();p1();p1();p0();p0();p0();p0();} break;//HYPER/FIN.
- case 113:{p0();p0();p0();p1();p1();p1();p0();p0();p0();p1();} break;//ARMED/FIN.
- case 114:{p0();p0();p0();p1();p1();p1();p0();p0();p1();p0();} break;//KING/FIN.
- case 115:{p0();p0();p0();p1();p1();p1();p0();p0();p1();p1();} break;//BLASTER/FIN.
- case 116:{p0();p0();p0();p1();p1();p1();p0();p1();p0();p0();} break;//SURVIVE/FIN.
- case 117:{p0();p0();p0();p1();p1();p1();p0();p1();p0();p1();} break;//SHINING/FIN.
- case 118:{p0();p0();p0();p1();p1();p1();p0();p1();p1();p0();} break;//ULTIMATE/FIN.
- case 119:{p0();p0();p0();p1();p1();p1();p0();p1();p1();p1();} break;//RIDE/GADGET
- case 120:{signal_sw=0,p0();p0();p0();p1();p1();p1();p1();p0();p0();p0();} break;//RIDER/ライダー
- }
- p0();p1();p0();p1();delay(20);//エンドビット
- signal_sw=0;
- }
01-48
初期設定です。
49-
竜頭を押すとまず長押し判定の関数に飛びます。
出てきたら起動音か説明音に分岐します。
73-
at_tame_pinが押されると赤外線が送信されます。
87-
at_tame_pinが押された回数を制御しています。
110-
赤外線LED発光制御です。
詳しいことは調べていただきたいのですが簡単に説明すると決まった時間点滅、決まった時間消灯を繰り返しそれを信号として受信機側に送っています。
193からはじまる識別コード送信は例えばcase1の内容ですが0000000001と2進数で送信し受信側で10進数に直しています。
本当はちゃんと計算式でも作って変換したかったのですがうまくいかずに関数を並べる力技にしました。
動きゃいーんだよ。動けば!
144-
mp3再生の関数です。
なぜライブラリを使っていないかというと
前にオールインワンガシャットを作った時にライブラリでは255曲(250曲だったかも)以上の曲が扱えませんでした。
調べてみてもわからずシリアルコマンド制御でフォルダ分けがうまくいったのでずっとこのまま使っています。
...最近知ったのですがライブラリでもフォルダ分けできるみたいですね。
159-
キャラクターを選択します。
193-
ライドウォッチ番号を2進数で送信しています。
次はジクウドライバーのスケッチです。
- //赤外線リモコン受信回路
- //ジクウドライバー
- #define led_ir_pin 6 //赤外線LEDピン番号
- int led_ir; //
- int rider_number; //ライダーナンバー
- int bin[10]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; //2進数変数
- int bin_number; //2進数変数番号
- int beki_number; //べき乗変数番号
- //コード0 0xfb B11111011 //001
- //コード1 0xf7 B11110111 //010
- //コード2 0xef B11101111 //100
- //コード3 0xf3 B11110011 //011
- //コード4 0xe7 B11100111 //110
- //コード5 0xeb B11101011 //101
- //コード6 0xe3 B11100011 //111
- //コード7 0xff B11111111 //000
- // //1は2進数設定では0(LOWだから)
- //const unsigned char sw_code[] = {0xfb, 0xfc, 0xf7, 0xf3, 0xe3};
- const unsigned char sw_code[] = {0xfb, 0xf7, 0xef, 0xf3, 0xe7, 0xeb, 0xe3, 0xff};
- int code_1;//選別プレート1行目
- int code_2;//選別プレート2行目
- int code_3;//選別プレート3行目
- int code_in;//sw_code番号
- int code_on;//switch(rider_number)のif用
- void setup() // 初期設定
- {
- DDRD = B00011100;
- PORTD = B11111100;
- Serial.begin(9600);
- pinMode(5,INPUT_PULLUP);
- }
- void loop() // メインの処理
- {
- if (digitalRead(5) == 1){PORTD = B11111100/*, Serial.println("ok")*/;}
- while(1) // ループ(2)
- {
- rider_number=0;
- bin[9]=1, bin[8]=1, bin[7]=1, bin[6]=1, bin[5]=1;
- bin[4]=1, bin[3]=1, bin[2]=1, bin[1]=1, bin[0]=1;
- //----------------------------------スタートビットチェック-------------------------------
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==0)
- delayMicroseconds(400);
- else
- break;
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==0)
- delayMicroseconds(600);
- else
- break;
- //----------------------------------デバイスコードチェック------------------------------
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- delayMicroseconds(600);
- else
- break;
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==0)
- delayMicroseconds(600);
- else
- break;
- //------------------------------------識別コードチェック------------------------------
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[9]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[8]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[7]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[6]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[5]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[4]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[3]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[2]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[1]=0;
- delayMicroseconds(600);
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- bin[0]=0;
- delayMicroseconds(600);
-
- //-------------------------------ストップビットチェック-----------------------------------------------------------
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- delayMicroseconds(600);
- else
- break;
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==0)
- delayMicroseconds(600);
- else
- break;
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==1)
- delayMicroseconds(600);
- else
- break;
- led_ir=digitalRead(led_ir_pin);
- if(led_ir==0)
- delayMicroseconds(600);
- else
- break;
- //////////////////////////////////////////////////////////////////
-
- rider_number=rider_number+(bin[9]*pow(2,9));
- Serial.print("10ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[8]*pow(2,8));
- Serial.print("9ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[7]*pow(2,7));
- Serial.print("8ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[6]*pow(2,6));
- Serial.print("7ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[5]*pow(2,5));
- Serial.print("6ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[4]*pow(2,4));
- Serial.print("5ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[3]*pow(2,3));
- Serial.print("4ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[2]*pow(2,2));
- Serial.print("3ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[1]*pow(2,1));
- Serial.print("2ケタ;");
- Serial.println(rider_number);
- rider_number=rider_number+(bin[0]*pow(2,0));
- Serial.print("1ケタ;");
- Serial.println(rider_number);
- //-----------------------------------------------------------------------------------
- switch(rider_number){
- //-------------------------------------------ジクウドライバー表示用-----------------------------------------------------------
- case 1:{code_1=0, code_2=1, code_3=3, watch_code();} break;//ZI-O/2018
- case 2:{code_1=0, code_2=1, code_3=2, watch_code();} break;//ZI-O/2019
- case 3:{code_1=0, code_2=1, code_3=5, watch_code();} break;//ZI-O/2038
- case 4:{code_1=0, code_2=1, code_3=4, watch_code();} break;//ZI-O/2058
- case 5:{code_1=0, code_2=3, code_3=1, watch_code();} break;//ZI-O/****
- case 6:{code_1=0, code_2=3, code_3=2, watch_code();} break;//ZI-O/2000
- case 7:{code_1=0, code_2=3, code_3=5, watch_code();} break;//ZI-O/0
- case 8:{code_1=0, code_2=3, code_3=4, watch_code();} break;//ZI-O/1971
- case 9:{code_1=0, code_2=2, code_3=1, watch_code();} break;//ZI-O/1989
- case 10:{code_1=0, code_2=2, code_3=3, watch_code();} break;//RIDER/NEXT
- case 11:{code_1=0, code_2=2, code_3=5, watch_code();} break;//ZI-O/ライダー
- case 12:{code_1=0, code_2=2, code_3=4, watch_code();} break;//GEIZ/2068
- case 13:{code_1=0, code_2=5, code_3=1, watch_code();} break;//GEIZ/2019
- case 14:{code_1=0, code_2=5, code_3=3, watch_code();} break;//GEIZ/2038
- case 15:{code_1=0, code_2=5, code_3=2, watch_code();} break;//GEIZ/2058
- case 16:{code_1=0, code_2=5, code_3=4, watch_code();} break;//GEIZ/XXXX
- case 17:{code_1=0, code_2=4, code_3=1, watch_code();} break;//GEIZ/2000
- case 18:{code_1=0, code_2=4, code_3=3, watch_code();} break;//GEIZ/
- case 19:{code_1=0, code_2=4, code_3=2, watch_code();} break;//GEIZ/1971
- case 20:{code_1=0, code_2=4, code_3=5, watch_code();} break;//GEIZ/1989
- case 21:{code_1=1, code_2=0, code_3=3, watch_code();} break;//GEIZ/2020
- case 22:{code_1=1, code_2=0, code_3=2, watch_code();} break;//GEIZ/ライダー
- case 23:{code_1=1, code_2=0, code_3=5, watch_code();} break;//TUKUYOMI/2068
- case 24:{code_1=1, code_2=0, code_3=4, watch_code();} break;//RIDER/NEXT
- case 25:{code_1=1, code_2=3, code_3=0, watch_code();} break;//RIDER/XXXX
- case 26:{code_1=1, code_2=3, code_3=2, watch_code();} break;//RIDER/2019
- case 27:{code_1=1, code_2=3, code_3=5, watch_code();} break;//RIDER/ライダー
- case 28:{code_1=1, code_2=3, code_3=4, watch_code();} break;//RIDER/0
- case 29:{code_1=1, code_2=2, code_3=0, watch_code();} break;//NEXT/0
- case 30:{code_1=1, code_2=2, code_3=3, watch_code();} break;//FUTURE/0
- case 31:{code_1=1, code_2=2, code_3=5, watch_code();} break;//NEW/0
- case 32:{code_1=1, code_2=2, code_3=4, watch_code();} break;//KUUGA/2000
- case 33:{code_1=1, code_2=5, code_3=0, watch_code();} break;//AGITO/2001
- case 34:{code_1=1, code_2=5, code_3=3, watch_code();} break;//RYUKI/2002
- case 35:{code_1=1, code_2=5, code_3=2, watch_code();} break;//FAIZ/2003
- case 36:{code_1=1, code_2=5, code_3=4, watch_code();} break;//BLADE/2004
- case 37:{code_1=1, code_2=4, code_3=0, watch_code();} break;//HIBIKI/2005
- case 38:{code_1=1, code_2=4, code_3=3, watch_code();} break;//KABUTO/2006
- case 39:{code_1=1, code_2=4, code_3=2, watch_code();} break;//DEN-O/2007
- case 40:{code_1=1, code_2=4, code_3=5, watch_code();} break;//KIVA/2008
- case 41:{code_1=3, code_2=0, code_3=1, watch_code();} break;//DECADE/2009
- case 42:{code_1=3, code_2=0, code_3=2, watch_code();} break;//W/2009
- case 43:{code_1=3, code_2=0, code_3=5, watch_code();} break;//OOO/2010
- case 44:{code_1=3, code_2=0, code_3=4, watch_code();} break;//FOURZE/2011
- case 45:{code_1=3, code_2=1, code_3=0, watch_code();} break;//WIZARD/2012
- case 46:{code_1=3, code_2=1, code_3=2, watch_code();} break;//GAIM/2013
- case 47:{code_1=3, code_2=1, code_3=5, watch_code();} break;//DRIVE/2014
- case 48:{code_1=3, code_2=1, code_3=4, watch_code();} break;//GHOST/2015
- case 49:{code_1=3, code_2=2, code_3=0, watch_code();} break;//EX-AID/2016
- case 50:{code_1=3, code_2=2, code_3=1, watch_code();} break;//BUILD/2017
- case 51:{code_1=3, code_2=2, code_3=5, watch_code();} break;//CROSS-Z/2017
- case 52:{code_1=3, code_2=2, code_3=4, watch_code();} break;//GREASE/2017
- case 53:{code_1=3, code_2=5, code_3=0, watch_code();} break;//ROGUE/2017
- case 54:{code_1=3, code_2=5, code_3=1, watch_code();} break;//BRAVE/2016
- case 55:{code_1=3, code_2=5, code_3=2, watch_code();} break;//SNIPE/2016
- case 56:{code_1=3, code_2=5, code_3=4, watch_code();} break;//LAZER/2016
- case 57:{code_1=3, code_2=4, code_3=0, watch_code();} break;//PARA-DX/2016
- case 58:{code_1=3, code_2=4, code_3=1, watch_code();} break;//POPPY/2016
- case 59:{code_1=3, code_2=4, code_3=2, watch_code();} break;//RIDER1/1971
- case 60:{code_1=3, code_2=4, code_3=5, watch_code();} break;//RIDER2/1971
- case 61:{code_1=2, code_2=0, code_3=1, watch_code();} break;//V3/1973
- case 62:{code_1=2, code_2=0, code_3=3, watch_code();} break;//RIDERMAN/1973
- case 63:{code_1=2, code_2=0, code_3=5, watch_code();} break;//X/1974
- case 64:{code_1=2, code_2=0, code_3=4, watch_code();} break;//AMAZON/1974
- case 65:{code_1=2, code_2=1, code_3=0, watch_code();} break;//STRONGER/1975
- case 66:{code_1=2, code_2=1, code_3=3, watch_code();} break;//SKYRIDER/1979
- case 67:{code_1=2, code_2=1, code_3=5, watch_code();} break;//SUPER-1/1980
- case 68:{code_1=2, code_2=1, code_3=4, watch_code();} break;//ZX/1984
- case 69:{code_1=2, code_2=3, code_3=0, watch_code();} break;//BLACK/1987
- case 70:{code_1=2, code_2=3, code_3=1, watch_code();} break;//BLACK RX/1988
- case 71:{code_1=2, code_2=3, code_3=5, watch_code();} break;//SHIN/1992
- case 72:{code_1=2, code_2=3, code_3=4, watch_code();} break;//ZO/1993
- case 73:{code_1=2, code_2=5, code_3=0, watch_code();} break;//J/1994
- case 74:{code_1=2, code_2=5, code_3=1, watch_code();} break;//GENM/2016
- case 75:{code_1=2, code_2=5, code_3=3, watch_code();} break;//CRONUS/2016
- case 76:{code_1=2, code_2=5, code_3=4, watch_code();} break;//EVOL/2017
- case 77:{code_1=2, code_2=4, code_3=0, watch_code();} break;//SHOCKER/1971
- case 78:{code_1=2, code_2=4, code_3=1, watch_code();} break;//ALFA/2016
- case 79:{code_1=2, code_2=4, code_3=3, watch_code();} break;//OMEGA/2016
- case 80:{code_1=2, code_2=4, code_3=5, watch_code();} break;//NEO/2017
- case 81:{code_1=5, code_2=0, code_3=1, watch_code();} break;//RIDE/STRIKER
- case 82:{code_1=5, code_2=0, code_3=3, watch_code();} break;//ALL RIDERS/ライダー
- case 83:{code_1=5, code_2=0, code_3=2, watch_code();} break;//SUPER SENTAI/-SS-
- case 84:{code_1=5, code_2=0, code_3=4, watch_code();} break;//HEISEI/-HR-
- case 85:{code_1=5, code_2=1, code_3=0, watch_code();} break;//SHOWA/-SR-
- case 86:{code_1=5, code_2=1, code_3=3, watch_code();} break;//KAMEN RIDER/ライダー
- case 87:{code_1=5, code_2=1, code_3=2, watch_code();} break;//EVIL/EVIL
- case 88:{code_1=5, code_2=1, code_3=4, watch_code();} break;//ANCIENT/0
- case 89:{code_1=5, code_2=3, code_3=0, watch_code();} break;//GAME/GAME
- case 90:{code_1=5, code_2=3, code_3=1, watch_code();} break;//FUTURE/0
- case 91:{code_1=5, code_2=3, code_3=2, watch_code();} break;//X MAS/1225
- case 92:{code_1=5, code_2=3, code_3=4, watch_code();} break;//SPECIAL/-SP-
- case 93:{code_1=5, code_2=2, code_3=0, watch_code();} break;//RIDER/0
- case 94:{code_1=5, code_2=2, code_3=1, watch_code();} break;//ZI-O/ライダー
- case 95:{code_1=5, code_2=2, code_3=3, watch_code();} break;//SINGULAR/0
- case 96:{code_1=5, code_2=2, code_3=4, watch_code();} break;//NOTHING/0
- case 97:{code_1=5, code_2=4, code_3=0, watch_code();} break;//MILLENNIUM/2000
- case 98:{code_1=5, code_2=4, code_3=1, watch_code();} break;//MAX/MAX
- case 99:{code_1=5, code_2=4, code_3=3, watch_code();} break;//DOEND/2009
- case 100:{code_1=5, code_2=4, code_3=2, watch_code();} break;//GENIUS/FIN.
- case 101:{code_1=4, code_2=0, code_3=1, watch_code();} break;//MUTEKI/FIN.
- case 102:{code_1=4, code_2=0, code_3=3, watch_code();} break;//MUGEN/FIN.
- case 103:{code_1=4, code_2=0, code_3=2, watch_code();} break;//TRIDORON/FIN.
- case 104:{code_1=4, code_2=0, code_3=5, watch_code();} break;//KIWAMI/FIN.
- case 105:{code_1=4, code_2=1, code_3=0, watch_code();} break;//INFINITY/FIN.
- case 106:{code_1=4, code_2=1, code_3=3, watch_code();} break;//COSMIC/FIN.
- case 107:{code_1=4, code_2=1, code_3=2, watch_code();} break;//PUTOTYRA/FIN.
- case 108:{code_1=4, code_2=1, code_3=5, watch_code();} break;//XTREME/FIN.
- case 109:{code_1=4, code_2=3, code_3=0, watch_code();} break;//CONPLETE/FIN.
- case 110:{code_1=4, code_2=3, code_3=1, watch_code();} break;//ENPEROR/FIN.
- case 111:{code_1=4, code_2=3, code_3=2, watch_code();} break;//LINER/FIN.
- case 112:{code_1=4, code_2=3, code_3=5, watch_code();} break;//HYPER/FIN.
- case 113:{code_1=4, code_2=2, code_3=0, watch_code();} break;//ARMED/FIN.
- case 114:{code_1=4, code_2=2, code_3=1, watch_code();} break;//KING/FIN.
- case 115:{code_1=4, code_2=2, code_3=3, watch_code();} break;//BLASTER/FIN.
- case 116:{code_1=4, code_2=2, code_3=5, watch_code();} break;//SURVIVE/FIN.
- case 117:{code_1=4, code_2=5, code_3=0, watch_code();} break;//SHINING/FIN.
- case 118:{code_1=4, code_2=5, code_3=1, watch_code();} break;//ULTIMATE/FIN.
- case 119:{code_1=4, code_2=5, code_3=3, watch_code();} break;//RIDE/GADGET
- case 120:{code_1=4, code_2=5, code_3=2, watch_code();} break;//RIDER/ライダー
- //----------------------------------------------------------------------------------------------------------------------------
- }//スイッチ終わり
- }
- }
- void watch_code(){
- delay(500);
- //------------------1行目-------------------------
- Serial.println("1行目");
- code_in = code_1;
- PORTD = sw_code[code_in];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- delay(100);
- PORTD = sw_code[7];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- //-------------------2行目------------------------
- Serial.println("2行目");
- code_in = code_2;
- PORTD = sw_code[code_in];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- delay(100);
- PORTD = sw_code[7];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- //--------------------3行目-----------------------
- Serial.println("3行目");
- code_in = code_3;
- PORTD = sw_code[code_in];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- delay(100);
- PORTD = sw_code[7];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- //--------------------4行目-----------------------
- Serial.println("4行目");
- PORTD = sw_code[6];
- Serial.print("2:");
- Serial.println(digitalRead(2));
- Serial.print("3:");
- Serial.println(digitalRead(3));
- Serial.print("4:");
- Serial.println(digitalRead(4));
- }
識別プレートを上から1行目2行目3行目4行目とし、ピンの並びのパターンを7種類に分けました。
これらを組み合わせ送信します。
※12/11画像がおかしかったので差し替えました。
DDRD = B00011100;
これはpinModeと同じ意味合いです。
右からD0,D1,D2...D7を指しておりD2,D3,D4をINPUTとして使いますと宣言しています。
PORTD = B11111100;
これはLOW,HIGH設定です。0がLOW,1がHIGHです。1行で済みますし同時に指示を出せるので今回使いました。
ちなみにこれらも買った本に書いてありました。
赤外線受信
正直本の内容まるっとパクってます。多少は変更していますが。
2進数を10進数に直す計算式
計算式自体は合っているのですが何ケタの数字は間違っています。最後の1ケタが直した10進数です。
ドライバー表示リスト
上記に書いたピンのパターンを組み合わせ指定しています。ピンパターンはクレーンの丈さんのブログの解析記事を参考にさせていただきました。すごく助かりました。ありがとうございます。
ドライバー送信
他のSerial.printは消しても問題ないのですがここの関数のSerial.printは消すと動かなくなります。
Serial.printは表示するのにコンマ何秒かかかっているらしくそのコンマ何秒がうまくかみ合ってしまい外せなくなってしまいました。
まあ動いてるからいいかなと。
これでスケッチは終了です。
余談ですが大量のswitch caseを作る際にエクセルを利用して作っています。フィルターでソートかけて同じのをぶわーって書き換えて最後に全部くっつけてコピペするんですけどあれ?もしかして邪道?
次は加工です。
写真はあまり撮ってないので文字の説明がメインとなります。
こちらがブレッドボード上で再現した物です。これらを組み込みます。
ライドウォッチは食玩版なので竜頭の改造から。
こんな風にプラバンやらプラ棒で受けを作ります。
入っている回路の全体像です。わかりにくいですがこんな感じです。8MHzとありますがなぜかうまく動かなかったので16MHzに変更してあります。ですので写真にはないですがセラロック16MHzをはんだ付けしてあります。
取り付けた際の全体像です。
マイコンの下に赤外線LEDが下を向いて設置してあります。穴位置やら向きは調整してください。私は調整段階で大穴を空けてしまったので裏を見られると大変不格好です。ついでにプレートの大穴も間違えて空けた穴です。透明だから埋められないし…
電池蓋を外すとボリュームと充電端子があります。
次はジクウドライバーです。
ジクウドライバーを開けると中央左部にSW4A,SW4AB,SW4C,SW4とありますがこれが識別ピンです。黒はGNDです。これらに配線をはんだ付けし、ワニ口クリップなどでブレッドボードで動作確認をするのが1番安全確実です。その際は絶対に電池を抜いておいてください。4本の線をarduinoに繋げた時点でジクウドライバーも通電します。ジクウドライバーと喋るのでわかりやすいです。(音がうるさいともいいます。夜中は気をつけて)電池を入れた状態だと5V+4.5Vの電流が流れるので壊れます。ってか壊しました…私は電池ボックス裏の抵抗が切れただけで済んだのでなんとか直りましたが絶対にやらないでください。
配線の色は合わせた方がわかりやすいです。といいながら違う色が混ざってるのは配線を再利用しているからです。
受信機はここのスペースに入れます。
リードスイッチはこのスペースです
表から見るとこうなります(見づらいですが)
このリードスイッチの位置に合うようにライドウォッチ側にネオジム磁石を取り付けてください。
全体像です。arduinoについている基板が短いのはまた再利用したからです。
マスキングテープは絶縁の代わりなのですが効果があるのかどうか…
電源をスイッチがオンになった時に通電するよう取り付けてください。
本体は電池ボックスのスペースに入れておきます。
うまく行けばこんな感じになります。
うまく動かなかったら取り敢えず電源入れ直しと作り込みが甘いのですがひとまず完成としました。
少しでも皆さんの電子工作のお役に立てれば嬉しいです。
と、書籍の締めくくりみたく書きましたが未だにトランジスタとかダイオードとかよく分かってない私でも時間をかければ何とか作れますのでもし挑戦したいという方は頑張ってください。