かっぱの覚え書き

とりあえずなんかメモ書きとか

オリジナルライドウォッチ(オールインワン)

はじめまして。かっぱ次郎と申します。
ツイッターにアップしたライドウォッチの解説の為にブロクを開設しました。よろしくお願いします。

まず注意しなくてはいけないのがライドウォッチの改造のみでは完結しません。ジクウドライバーの方も改造します。安いものでもないですし最悪壊してしまう可能性もあります。(私はドライバーを一度壊しました…)それでも改造するという場合は自己責任でお願いします。

今回の変身ベルトの仕様はウォッチ側から音声、ドライバー側からは識別プレートに対応する液晶表示となっておりウォッチに複数音声を仕込んでも識別プレートが変わらないので表示はそのままです。

色々考えてたどり着いたのが赤外線送受信です。ベルトさん方式ですね。シフトブレスから送信、ベルトさんに受信とやってる事はまんまです。
私は高い玩具は現状復帰できる前提で改造するというこだわり?があるのでクリア素材を使ってて穴を空ける必要がないジクウドライバーにまさにぴったりの改造です。

それでは必要な材料を上げていきます。
■ライドウォッチ側
●ライドウォッチ本体
食玩版を使います。理由は色々ありますが
·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相当)
·ブレッドボード
·ブレッドボード用ワイヤー
·タクトスイッチ
·ワニ口クリップになっているワイヤー
配線の色を分けた方がわかりやすいです
ワニ口クリップワイヤーはダイソーのワニ口クリップを買って配線を取り付けた物を使っています


次は回路図です。
ライドウォッチ
f:id:une-lettre-arrive:20181206230156j:plain

ジクウドライバー
f:id:une-lettre-arrive:20181206225826j:plain

fritzingの使い方がいまいちで文字が欠けていますがご了承ください。


音声ですがフォルダ名は数字、ファイル名は001.mp3のようにします。
フォルダはSDカードのルートディレクトリに作ります。
f:id:une-lettre-arrive:20181208155952j:plain
ライダー毎にフォルダをわけ例えばジオウなら
フォルダ名01
ファイル名
001.mp3
002.mp3
003.mp3
004.mp3
005.mp3
f:id:une-lettre-arrive:20181208160008j:plain
ゲイツなら
f:id:une-lettre-arrive:20181208160020j:plain
そしてわかりやすいようタイトルに名前を書いています
ジオウ起動音
ジオウ説明音
ジオウ変身音
ジオウ必殺起動音
ジオウ必殺音
アーマータイム音
使うのはこの6個だけです。

次はスケッチです。
プログラムの基本を知らずにネットで調べたりして独学で作ったものなのでわかる人から見たらめちゃくちゃだと思います。
どうか生暖かい目で見てください。

と、言い訳をしたところで
実際のところは動けばいーんだよの精神でやってます。
それともう一つ。赤外線関係のプログラムは買った本の内容をまるっと引用しております(丸パクリともいう)一応手は加えていますがほぼ引用です。
購入した本はこちらです。
www.amazon.co.jp

ネットで調べてもいまいち理解できずに本屋で見つけ立ち読みしこれだ!って決めてヨドバシドットコムで購入したものです←ヲイ


それではライドウォッチのスケッチです

  1. // 赤外線送信回路
  2. // ライドウォッチ
  3. #include <SoftwareSerial.h>
  4. SoftwareSerial mySerial(5,6); // RX, TX //MP3用ソフトウェアシリアル
  5. //mp3ファイルナンバー
  6. //001/起動音
  7. //002/説明音
  8. //003/変身音
  9. //004/必殺起動音
  10. //005/必殺技音
  11. //110/アーマータイム音
  12. //長押し用
  13. #define PUSH_SHORT 40000
  14. #define LONG 10000
  15. #define AT_TAME 7000//アーマータイム開始時間
  16. int push_long;//
  17. int change_sw, change_sw1, change_sw2, change_sw3;//アーマータイム
  18. int rw_sw;//
  19. int hissatu;//
  20. int signal_on;
  21. int character_sw;//キャラクター選択
  22. int rw_on;//
  23. int folder;//MP3フォルダ名
  24. int file;//MP3ファイル名
  25. int led_ir;//赤外線LED
  26. int signal_sw;//赤外線送信ON
  27. #define character_pin 2 //竜頭ピン
  28. #define at_tame_pin 3 //ライドウォッチスイッチ2ピン/アーマータイム
  29. #define led_ir_pin 4 //赤外線LEDピン
  30. void setup() //初期設定
  31. {
  32.   pinMode(character_pin,INPUT_PULLUP); //竜頭ピン
  33.   pinMode(at_tame_pin,INPUT_PULLUP); //ライドウォッチスイッチ2ピン/アーマータイム
  34.   pinMode(led_ir_pin,OUTPUT); //赤外線LEDピン
  35.   
  36.   //Serial.begin(19200);
  37.   mySerial.begin (9600);
  38. }
  39. void loop() //メインの処理
  40. {
  41. if(digitalRead(character_pin) == LOW){
  42.   delay(200);
  43.    nagaoshi();//長押し関数
  44.   
  45.   if(push_long == 1){
  46.   Serial.println("ライダー説明音");
  47.   file=2, mp3();//ライダー説明音
  48.   file=0;
  49.   }else{
  50.   
  51.   character_sw++;//キャラクター選択
  52.   character_number();
  53.   folder=signal_sw;//mp3フォルダ選択
  54.  
  55.   Serial.println(signal_sw);
  56.   file=1, mp3();//ライドウォッチ起動音
  57.   Serial.println("ライドウォッチ起動音");
  58.   
  59.   hissatu=0;}
  60. }
  61. if(digitalRead(at_tame_pin) == LOW){
  62.    delay(100);
  63.    
  64.   if(hissatu == 0){
  65.   rw_sw=1;//rw_swループオン
  66.   Serial.println("ライドウォッチセット");
  67.   delay(250);
  68.   led_signal();//識別コード送信
  69.   Serial.println("識別コード送信");
  70.   }else{
  71.   if(digitalRead(character_pin) == LOW){
  72.   file=4, mp3();//フィニッシュタイム
  73.   Serial.println("タイムブレイク"), rw_sw=1;}}
  74.   
  75.   while(rw_sw == 1){//rw_swスタート
  76.   Serial.println("ライドウォッチループ中");
  77. //--------------------------ライダータイム/アーマータイム-----------------------------------------
  78. //--------------------------タイムブレイク/タイムバースト-----------------------------------------
  79.   if(change_sw == 0){
  80.   while(digitalRead(at_tame_pin) == LOW){Serial.println("スイッチ1回目"), change_sw=1;}//change_sw1回目
  81.   }//change_sw0
  82.   
  83.   if(change_sw == 1){
  84.   while(digitalRead(at_tame_pin) == LOW){Serial.println("スイッチ2回目"), change_sw=2, signal_on=1;}//change_sw2回目
  85.   }//change_sw1
  86.   
  87.   if(change_sw == 2){
  88.   if(digitalRead(at_tame_pin) == LOW){
  89.     if(hissatu == 0){delay(AT_TAME), file=110, mp3(),delay(2000), file=3, mp3(), Serial.println("変身"), rw_sw=0, hissatu=1, change_sw=0;}
  90.     else{delay(1500), file=5, mp3(), Serial.println("必殺"), rw_sw=0, hissatu=1, change_sw=0;}}
  91.   }//change_sw2
  92. //---------------------------------------------------------------------------------------------
  93.   }//rw_swストップ
  94.   Serial.println("ライドウォッチループ終了");
  95. }
  96. }
  97. void p1()
  98. {
  99.   int c=23;
  100.   while(1)
  101.   {
  102.     digitalWrite(led_ir_pin,LOW); //ピン6にLOW(0)を出力
  103.     delayMicroseconds(9); //タイマ(9μs)
  104.     digitalWrite(led_ir_pin,HIGH); //ピン6にHIGH(1)を出力
  105.     delayMicroseconds(9); //タイマ(9μs)
  106.     c--; //cのデクリメント(-1)
  107.     if(c==0) //c==0ならば、次へ行く
  108.       break; //break文でループ(2)を脱出
  109.   }
  110. }
  111. void p0()
  112. {
  113.   digitalWrite(led_ir_pin,HIGH); //ピン6にHIGH(1)を出力
  114.   delayMicroseconds(600); //タイマ(600μs)
  115. }
  116. //-----------------------------------------長押し判定------------------------------------------
  117. void nagaoshi(){
  118.   //int gauge = 0;
  119.   unsigned long gauge = 0;
  120.   while (!digitalRead(character_pin))
  121.   {gauge++;}
  122.   //Serial.print(gauge);
  123.   if (gauge < PUSH_SHORT){
  124.     Serial.println("ボタン単押し");
  125.     push_long=0;
  126.     }else{
  127.     Serial.println("ボタン長押し");
  128.     push_long=1;}
  129.   }
  130.   //-------------------------------------------MP3再生-------------------------------------------
  131. void mp3()
  132. {
  133.    //ファイル指定再生
  134.   mySerial.write(0x7E);
  135.   mySerial.write(0xFF);
  136.   mySerial.write(0x06);
  137.   mySerial.write(0x0F); //「フォルダ指定再生」コマンド
  138.   mySerial.write((byte)0);
  139.   mySerial.write(folder); //この例では、「folder」という変数が指定される
  140.   mySerial.write(file); //この例では、「file.mp3」という変数のmp3が指定される
  141.   mySerial.write(0xEF);
  142.   delay(10);
  143. }
  144. //---------------------------------------------------------------------------------------------
  145. //-------------------------キャラクター選択----------------------------------------------------
  146. void character_number(){
  147.   
  148. switch(character_sw){//
  149.   case 1:{signal_sw=1;} break;//ZI-O/2018
  150.   case 2:{signal_sw=12, character_sw=4;} break;//GEIZ/2068
  151.   case 3:{signal_sw=32;} break;//KUUGA/2000
  152.   case 4:{signal_sw=33;} break;//AGITO/2001
  153.   case 5:{signal_sw=34;} break;//RYUKI/2002
  154.   case 6:{signal_sw=35;} break;//FAIZ/2003
  155.   case 7:{signal_sw=36;} break;//BLADE/2004
  156.   case 8:{signal_sw=37;} break;//HIBIKI/2005
  157.   case 9:{signal_sw=38;} break;//KABUTO/2006
  158.   case 10:{signal_sw=39;} break;//DEN-O/2007
  159.   case 11:{signal_sw=40, character_sw=14;} break;//KIVA/2008
  160.   case 12:{signal_sw=41;} break;//DECADE/2009
  161.   case 13:{signal_sw=42;} break;//W/2009
  162.   case 14:{signal_sw=43;} break;//OOO/2010
  163.   case 15:{signal_sw=44;} break;//FOURZE/2011
  164.   case 16:{signal_sw=45, character_sw=17;} break;//WIZARD/2012
  165.   case 17:{signal_sw=46;} break;//GAIM/2013
  166.   case 18:{signal_sw=47;} break;//DRIVE/2014
  167.   case 19:{signal_sw=48;} break;//GHOST/2015
  168.   case 20:{signal_sw=49;} break;//EX-AID/2016
  169.   case 21:{signal_sw=50;} break;//BUILD/2017
  170.   case 22:{signal_sw=51;} break;//CROSS-Z/2017
  171.   case 23:{signal_sw=52;} break;//GREASE/2017
  172.   case 24:{signal_sw=53;} break;//ROGUE/2017
  173.   case 25:{signal_sw=76;} break;//EVOL2017
  174.   case 26:{signal_sw=54;} break;//BRAVE/2016
  175.   case 27:{signal_sw=55;} break;//SNIPE/2016
  176.   case 28:{signal_sw=56, character_sw=0;} break;//LAZER/2016
  177. }
  178. }
  179. //-----------------------------------------------------------------------------------------------
  180. void led_signal(){
  181. //----------------------------赤外線送信---------------------------------------------------------
  182.    p1();p0();p1();//スタートビット
  183.  
  184. switch(signal_sw){//識別コード送信
  185.   case 1:{p0();p0();p0();p0();p0();p0();p0();p0();p0();p1();} break;//ZI-O/2018
  186.   case 2:{p0();p0();p0();p0();p0();p0();p0();p0();p1();p0();} break;//ZI-O/2019
  187.   case 3:{p0();p0();p0();p0();p0();p0();p0();p0();p1();p1();} break;//ZI-O/2038
  188.   case 4:{p0();p0();p0();p0();p0();p0();p0();p1();p0();p0();} break;//ZI-O/2058
  189.   case 5:{p0();p0();p0();p0();p0();p0();p0();p1();p0();p1();} break;//ZI-O/****
  190.   case 6:{p0();p0();p0();p0();p0();p0();p0();p1();p1();p0();} break;//ZI-O/2000
  191.   case 7:{p0();p0();p0();p0();p0();p0();p0();p1();p1();p1();} break;//ZI-O/0
  192.   case 8:{p0();p0();p0();p0();p0();p0();p1();p0();p0();p0();} break;//ZI-O/1971
  193.   case 9:{p0();p0();p0();p0();p0();p0();p1();p0();p0();p1();} break;//ZI-O/1989
  194.   case 10:{p0();p0();p0();p0();p0();p0();p1();p0();p1();p0();} break;//RIDER/NEXT
  195.   case 11:{p0();p0();p0();p0();p0();p0();p1();p0();p1();p1();} break;//ZI-O/ライダー
  196.   case 12:{p0();p0();p0();p0();p0();p0();p1();p1();p0();p0();} break;//GEIZ/2068
  197.   case 13:{p0();p0();p0();p0();p0();p0();p1();p1();p0();p1();} break;//GEIZ/2019
  198.   case 14:{p0();p0();p0();p0();p0();p0();p1();p1();p1();p0();} break;//GEIZ/2038
  199.   case 15:{p0();p0();p0();p0();p0();p0();p1();p1();p1();p1();} break;//GEIZ/2058
  200.   case 16:{p0();p0();p0();p0();p0();p1();p0();p0();p0();p0();} break;//GEIZ/XXXX
  201.   case 17:{p0();p0();p0();p0();p0();p1();p0();p0();p0();p1();} break;//GEIZ/2000
  202.   case 18:{p0();p0();p0();p0();p0();p1();p0();p0();p1();p0();} break;//GEIZ/
  203.   case 19:{p0();p0();p0();p0();p0();p1();p0();p0();p1();p1();} break;//GEIZ/1971
  204.   case 20:{p0();p0();p0();p0();p0();p1();p0();p1();p0();p0();} break;//GEIZ/1989
  205.   case 21:{p0();p0();p0();p0();p0();p1();p0();p1();p0();p1();} break;//GEIZ/2020
  206.   case 22:{p0();p0();p0();p0();p0();p1();p0();p1();p1();p0();} break;//GEIZ/ライダー
  207.   case 23:{p0();p0();p0();p0();p0();p1();p0();p1();p1();p1();} break;//TUKUYOMI/2068
  208.   case 24:{p0();p0();p0();p0();p0();p1();p1();p0();p0();p0();} break;//RIDER/NEXT
  209.   case 25:{p0();p0();p0();p0();p0();p1();p1();p0();p0();p1();} break;//RIDER/XXXX
  210.   case 26:{p0();p0();p0();p0();p0();p1();p1();p0();p1();p0();} break;//RIDER/2019
  211.   case 27:{p0();p0();p0();p0();p0();p1();p1();p0();p1();p1();} break;//RIDER/ライダー
  212.   case 28:{p0();p0();p0();p0();p0();p1();p1();p1();p0();p0();} break;//RIDER/0
  213.   case 29:{p0();p0();p0();p0();p0();p1();p1();p1();p0();p1();} break;//NEXT/0
  214.   case 30:{p0();p0();p0();p0();p0();p1();p1();p1();p1();p0();} break;//FUTURE/0
  215.   case 31:{p0();p0();p0();p0();p0();p1();p1();p1();p1();p1();} break;//NEW/0
  216.   case 32:{p0();p0();p0();p0();p1();p0();p0();p0();p0();p0();} break;//KUUGA/2000
  217.   case 33:{p0();p0();p0();p0();p1();p0();p0();p0();p0();p1();} break;//AGITO/2001
  218.   case 34:{p0();p0();p0();p0();p1();p0();p0();p0();p1();p0();} break;//RYUKI/2002
  219.   case 35:{p0();p0();p0();p0();p1();p0();p0();p0();p1();p1();} break;//FAIZ/2003
  220.   case 36:{p0();p0();p0();p0();p1();p0();p0();p1();p0();p0();} break;//BLADE/2004
  221.   case 37:{p0();p0();p0();p0();p1();p0();p0();p1();p0();p1();} break;//HIBIKI/2005
  222.   case 38:{p0();p0();p0();p0();p1();p0();p0();p1();p1();p0();} break;//KABUTO/2006
  223.   case 39:{p0();p0();p0();p0();p1();p0();p0();p1();p1();p1();} break;//DEN-O/2007
  224.   case 40:{p0();p0();p0();p0();p1();p0();p1();p0();p0();p0();} break;//KIVA/2008
  225.   case 41:{p0();p0();p0();p0();p1();p0();p1();p0();p0();p1();} break;//DECADE/2009
  226.   case 42:{p0();p0();p0();p0();p1();p0();p1();p0();p1();p0();} break;//W/2009
  227.   case 43:{p0();p0();p0();p0();p1();p0();p1();p0();p1();p1();} break;//OOO/2010
  228.   case 44:{p0();p0();p0();p0();p1();p0();p1();p1();p0();p0();} break;//FOURZE/2011
  229.   case 45:{p0();p0();p0();p0();p1();p0();p1();p1();p0();p1();} break;//WIZARD/2012
  230.   case 46:{p0();p0();p0();p0();p1();p0();p1();p1();p1();p0();} break;//GAIM/2013
  231.   case 47:{p0();p0();p0();p0();p1();p0();p1();p1();p1();p1();} break;//DRIVE/2014
  232.   case 48:{p0();p0();p0();p0();p1();p1();p0();p0();p0();p0();} break;//GHOST/2015
  233.   case 49:{p0();p0();p0();p0();p1();p1();p0();p0();p0();p1();} break;//EX-AID/2016
  234.   case 50:{p0();p0();p0();p0();p1();p1();p0();p0();p1();p0();} break;//BUILD/2017
  235.   case 51:{p0();p0();p0();p0();p1();p1();p0();p0();p1();p1();} break;//CROSS-Z/2017
  236.   case 52:{p0();p0();p0();p0();p1();p1();p0();p1();p0();p0();} break;//GREASE/2017
  237.   case 53:{p0();p0();p0();p0();p1();p1();p0();p1();p0();p1();} break;//ROGUE/2017
  238.   case 54:{p0();p0();p0();p0();p1();p1();p0();p1();p1();p0();} break;//BRAVE/2016
  239.   case 55:{p0();p0();p0();p0();p1();p1();p0();p1();p1();p1();} break;//SNIPE/2016
  240.   case 56:{p0();p0();p0();p0();p1();p1();p1();p0();p0();p0();} break;//LAZER/2016
  241.   case 57:{p0();p0();p0();p0();p1();p1();p1();p0();p0();p1();} break;//PARA-DX/2016
  242.   case 58:{p0();p0();p0();p0();p1();p1();p1();p0();p1();p0();} break;//POPPY/2016
  243.   case 59:{p0();p0();p0();p0();p1();p1();p1();p0();p1();p1();} break;//RIDER1/1971
  244.   case 60:{p0();p0();p0();p0();p1();p1();p1();p1();p0();p0();} break;//RIDER2/1971
  245.   case 61:{p0();p0();p0();p0();p1();p1();p1();p1();p0();p1();} break;//V3/1973
  246.   case 62:{p0();p0();p0();p0();p1();p1();p1();p1();p1();p0();} break;//RIDERMAN/1973
  247.   case 63:{p0();p0();p0();p0();p1();p1();p1();p1();p1();p1();} break;//X/1974
  248.   case 64:{p0();p0();p0();p1();p0();p0();p0();p0();p0();p0();} break;//AMAZON/1974
  249.   case 65:{p0();p0();p0();p1();p0();p0();p0();p0();p0();p1();} break;//STRONGER/1975
  250.   case 66:{p0();p0();p0();p1();p0();p0();p0();p0();p1();p0();} break;//SKYRIDER/1979
  251.   case 67:{p0();p0();p0();p1();p0();p0();p0();p0();p1();p1();} break;//SUPER-1/1980
  252.   case 68:{p0();p0();p0();p1();p0();p0();p0();p1();p0();p0();} break;//ZX/1984
  253.   case 69:{p0();p0();p0();p1();p0();p0();p0();p1();p0();p1();} break;//BLACK/1987
  254.   case 70:{p0();p0();p0();p1();p0();p0();p0();p1();p1();p0();} break;//BLACK RX/1988
  255.   case 71:{p0();p0();p0();p1();p0();p0();p0();p1();p1();p1();} break;//SHIN/1992
  256.   case 72:{p0();p0();p0();p1();p0();p0();p1();p0();p0();p0();} break;//ZO/1993
  257.   case 73:{p0();p0();p0();p1();p0();p0();p1();p0();p0();p1();} break;//J/1994
  258.   case 74:{p0();p0();p0();p1();p0();p0();p1();p0();p1();p0();} break;//GENM/2016
  259.   case 75:{p0();p0();p0();p1();p0();p0();p1();p0();p1();p1();} break;//CRONUS/2016
  260.   case 76:{p0();p0();p0();p1();p0();p0();p1();p1();p0();p0();} break;//EVOL2017
  261.   case 77:{p0();p0();p0();p1();p0();p0();p1();p1();p0();p1();} break;//SHOCKER1971
  262.   case 78:{p0();p0();p0();p1();p0();p0();p1();p1();p1();p0();} break;//ALFA2016
  263.   case 79:{p0();p0();p0();p1();p0();p0();p1();p1();p1();p1();} break;//OMEGA2016
  264.   case 80:{p0();p0();p0();p1();p0();p1();p0();p0();p0();p0();} break;//NEO2017
  265.   case 81:{p0();p0();p0();p1();p0();p1();p0();p0();p0();p1();} break;//RIDE/STRIKER
  266.   case 82:{p0();p0();p0();p1();p0();p1();p0();p0();p1();p0();} break;//ALL RIDERS/ライダー
  267.   case 83:{p0();p0();p0();p1();p0();p1();p0();p0();p1();p1();} break;//SUPER SENTAI/-SS-
  268.   case 84:{p0();p0();p0();p1();p0();p1();p0();p1();p0();p0();} break;//HEISEI/-HR-
  269.   case 85:{p0();p0();p0();p1();p0();p1();p0();p1();p0();p1();} break;//SHOWA/-SR-
  270.   case 86:{p0();p0();p0();p1();p0();p1();p0();p1();p1();p0();} break;//KAMEN RIDER/ライダー
  271.   case 87:{p0();p0();p0();p1();p0();p1();p0();p1();p1();p1();} break;//EVIL/EVIL
  272.   case 88:{p0();p0();p0();p1();p0();p1();p1();p0();p0();p0();} break;//ANCIENT/0
  273.   case 89:{p0();p0();p0();p1();p0();p1();p1();p0();p0();p1();} break;//GAME/GAME
  274.   case 90:{p0();p0();p0();p1();p0();p1();p1();p0();p1();p0();} break;//FUTURE/0
  275.   case 91:{p0();p0();p0();p1();p0();p1();p1();p0();p1();p1();} break;//X MAS/1225
  276.   case 92:{p0();p0();p0();p1();p0();p1();p1();p1();p0();p0();} break;//SPECIAL/-SP-
  277.   case 93:{p0();p0();p0();p1();p0();p1();p1();p1();p0();p1();} break;//RIDER/0
  278.   case 94:{p0();p0();p0();p1();p0();p1();p1();p1();p1();p0();} break;//ZI-O/ライダー
  279.   case 95:{p0();p0();p0();p1();p0();p1();p1();p1();p1();p1();} break;//SINGULAR/0
  280.   case 96:{p0();p0();p0();p1();p1();p0();p0();p0();p0();p0();} break;//NOTHING/0
  281.   case 97:{p0();p0();p0();p1();p1();p0();p0();p0();p0();p1();} break;//MILLENNIUM/2000
  282.   case 98:{p0();p0();p0();p1();p1();p0();p0();p0();p1();p0();} break;//MAX/MAX
  283.   case 99:{p0();p0();p0();p1();p1();p0();p0();p0();p1();p1();} break;//DOEND/2009
  284.   case 100:{p0();p0();p0();p1();p1();p0();p0();p1();p0();p0();} break;//GENIUS/FIN.
  285.   case 101:{p0();p0();p0();p1();p1();p0();p0();p1();p0();p1();} break;//MUTEKI/FIN.
  286.   case 102:{p0();p0();p0();p1();p1();p0();p0();p1();p1();p0();} break;//MUGEN/FIN.
  287.   case 103:{p0();p0();p0();p1();p1();p0();p0();p1();p1();p1();} break;//TRIDORON/FIN.
  288.   case 104:{p0();p0();p0();p1();p1();p0();p1();p0();p0();p0();} break;//KIWAMI/FIN.
  289.   case 105:{p0();p0();p0();p1();p1();p0();p1();p0();p0();p1();} break;//INFINITY/FIN.
  290.   case 106:{p0();p0();p0();p1();p1();p0();p1();p0();p1();p0();} break;//COSMIC/FIN.
  291.   case 107:{p0();p0();p0();p1();p1();p0();p1();p0();p1();p1();} break;//PUTOTYRA/FIN.
  292.   case 108:{p0();p0();p0();p1();p1();p0();p1();p1();p0();p0();} break;//XTREME/FIN.
  293.   case 109:{p0();p0();p0();p1();p1();p0();p1();p1();p0();p1();} break;//CONPLETE/FIN.
  294.   case 110:{p0();p0();p0();p1();p1();p0();p1();p1();p1();p0();} break;//ENPEROR/FIN.
  295.   case 111:{p0();p0();p0();p1();p1();p0();p1();p1();p1();p1();} break;//LINER/FIN.
  296.   case 112:{p0();p0();p0();p1();p1();p1();p0();p0();p0();p0();} break;//HYPER/FIN.
  297.   case 113:{p0();p0();p0();p1();p1();p1();p0();p0();p0();p1();} break;//ARMED/FIN.
  298.   case 114:{p0();p0();p0();p1();p1();p1();p0();p0();p1();p0();} break;//KING/FIN.
  299.   case 115:{p0();p0();p0();p1();p1();p1();p0();p0();p1();p1();} break;//BLASTER/FIN.
  300.   case 116:{p0();p0();p0();p1();p1();p1();p0();p1();p0();p0();} break;//SURVIVE/FIN.
  301.   case 117:{p0();p0();p0();p1();p1();p1();p0();p1();p0();p1();} break;//SHINING/FIN.
  302.   case 118:{p0();p0();p0();p1();p1();p1();p0();p1();p1();p0();} break;//ULTIMATE/FIN.
  303.   case 119:{p0();p0();p0();p1();p1();p1();p0();p1();p1();p1();} break;//RIDE/GADGET
  304.   case 120:{signal_sw=0,p0();p0();p0();p1();p1();p1();p1();p0();p0();p0();} break;//RIDER/ライダー
  305. }
  306.    p0();p1();p0();p1();delay(20);//エンドビット
  307.    signal_sw=0;
  308. }

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進数で送信しています。


次はジクウドライバーのスケッチです。

  1. //赤外線リモコン受信回路
  2. //ジクウドライバー
  3. #define led_ir_pin 6 //赤外線LEDピン番号
  4. int led_ir; //
  5. int rider_number; //ライダーナンバー
  6. int bin[10]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; //2進数変数
  7. int bin_number; //2進数変数番号
  8. int beki_number; //べき乗変数番号
  9. //コード0 0xfb B11111011 //001
  10. //コード1 0xf7 B11110111 //010
  11. //コード2 0xef B11101111 //100
  12. //コード3 0xf3 B11110011 //011
  13. //コード4 0xe7 B11100111 //110
  14. //コード5 0xeb B11101011 //101
  15. //コード6 0xe3 B11100011 //111
  16. //コード7 0xff B11111111 //000
  17. // //1は2進数設定では0(LOWだから)
  18. //const unsigned char sw_code[] = {0xfb, 0xfc, 0xf7, 0xf3, 0xe3};
  19. const unsigned char sw_code[] = {0xfb, 0xf7, 0xef, 0xf3, 0xe7, 0xeb, 0xe3, 0xff};
  20. int code_1;//選別プレート1行目
  21. int code_2;//選別プレート2行目
  22. int code_3;//選別プレート3行目
  23. int code_in;//sw_code番号
  24. int code_on;//switch(rider_number)のif用
  25. void setup() // 初期設定
  26. {
  27.   DDRD = B00011100;
  28.   PORTD = B11111100;
  29.   Serial.begin(9600);
  30.   pinMode(5,INPUT_PULLUP);
  31. }
  32. void loop() // メインの処理
  33. {
  34.   if (digitalRead(5) == 1){PORTD = B11111100/*, Serial.println("ok")*/;}
  35.     while(1) // ループ(2)
  36.     {
  37.       rider_number=0;
  38.       bin[9]=1, bin[8]=1, bin[7]=1, bin[6]=1, bin[5]=1;
  39.       bin[4]=1, bin[3]=1, bin[2]=1, bin[1]=1, bin[0]=1;
  40. //----------------------------------スタートビットチェック-------------------------------
  41.       led_ir=digitalRead(led_ir_pin);
  42.       if(led_ir==0)
  43.         delayMicroseconds(400);
  44.       else
  45.         break;
  46.       led_ir=digitalRead(led_ir_pin);
  47.       if(led_ir==0)
  48.          delayMicroseconds(600);
  49.       else
  50.         break;
  51.  //----------------------------------デバイスコードチェック------------------------------
  52.       led_ir=digitalRead(led_ir_pin);
  53.       if(led_ir==1)
  54.          delayMicroseconds(600);
  55.       else
  56.         break;
  57.       led_ir=digitalRead(led_ir_pin);
  58.       if(led_ir==0)
  59.          delayMicroseconds(600);
  60.       else
  61.         break;
  62.  //------------------------------------識別コードチェック------------------------------
  63.       led_ir=digitalRead(led_ir_pin);
  64.       if(led_ir==1)
  65.          bin[9]=0;
  66.          delayMicroseconds(600);
  67.        led_ir=digitalRead(led_ir_pin);
  68.        if(led_ir==1)
  69.          bin[8]=0;
  70.          delayMicroseconds(600);
  71.        led_ir=digitalRead(led_ir_pin);
  72.        if(led_ir==1)
  73.          bin[7]=0;
  74.          delayMicroseconds(600);
  75.        led_ir=digitalRead(led_ir_pin);
  76.       if(led_ir==1)
  77.          bin[6]=0;
  78.          delayMicroseconds(600);
  79.        led_ir=digitalRead(led_ir_pin);
  80.        if(led_ir==1)
  81.          bin[5]=0;
  82.          delayMicroseconds(600);
  83.        led_ir=digitalRead(led_ir_pin);
  84.        if(led_ir==1)
  85.          bin[4]=0;
  86.          delayMicroseconds(600);
  87.        led_ir=digitalRead(led_ir_pin);
  88.       if(led_ir==1)
  89.          bin[3]=0;
  90.          delayMicroseconds(600);
  91.        led_ir=digitalRead(led_ir_pin);
  92.        if(led_ir==1)
  93.          bin[2]=0;
  94.          delayMicroseconds(600);
  95.        led_ir=digitalRead(led_ir_pin);
  96.        if(led_ir==1)
  97.          bin[1]=0;
  98.          delayMicroseconds(600);
  99.        led_ir=digitalRead(led_ir_pin);
  100.        if(led_ir==1)
  101.          bin[0]=0;
  102.          delayMicroseconds(600);
  103.            
  104. //-------------------------------ストップビットチェック-----------------------------------------------------------
  105.        led_ir=digitalRead(led_ir_pin);
  106.        if(led_ir==1)
  107.          delayMicroseconds(600);
  108.         else
  109.           break;
  110.         led_ir=digitalRead(led_ir_pin);
  111.         if(led_ir==0)
  112.          delayMicroseconds(600);
  113.         else
  114.           break;
  115.         led_ir=digitalRead(led_ir_pin);
  116.         if(led_ir==1)
  117.           delayMicroseconds(600);
  118.         else
  119.           break;
  120.         led_ir=digitalRead(led_ir_pin);
  121.         if(led_ir==0)
  122.          delayMicroseconds(600);
  123.         else
  124.           break;
  125.  //////////////////////////////////////////////////////////////////
  126.  
  127.        rider_number=rider_number+(bin[9]*pow(2,9));
  128.        Serial.print("10ケタ;");
  129.        Serial.println(rider_number);
  130.        rider_number=rider_number+(bin[8]*pow(2,8));
  131.        Serial.print("9ケタ;");
  132.        Serial.println(rider_number);
  133.        rider_number=rider_number+(bin[7]*pow(2,7));
  134.        Serial.print("8ケタ;");
  135.        Serial.println(rider_number);
  136.        rider_number=rider_number+(bin[6]*pow(2,6));
  137.        Serial.print("7ケタ;");
  138.        Serial.println(rider_number);
  139.        rider_number=rider_number+(bin[5]*pow(2,5));
  140.        Serial.print("6ケタ;");
  141.        Serial.println(rider_number);
  142.        rider_number=rider_number+(bin[4]*pow(2,4));
  143.        Serial.print("5ケタ;");
  144.        Serial.println(rider_number);
  145.        rider_number=rider_number+(bin[3]*pow(2,3));
  146.        Serial.print("4ケタ;");
  147.        Serial.println(rider_number);
  148.        rider_number=rider_number+(bin[2]*pow(2,2));
  149.        Serial.print("3ケタ;");
  150.        Serial.println(rider_number);
  151.        rider_number=rider_number+(bin[1]*pow(2,1));
  152.        Serial.print("2ケタ;");
  153.        Serial.println(rider_number);
  154.        rider_number=rider_number+(bin[0]*pow(2,0));
  155.        Serial.print("1ケタ;");
  156.        Serial.println(rider_number);
  157. //-----------------------------------------------------------------------------------
  158.      switch(rider_number){
  159. //-------------------------------------------ジクウドライバー表示用-----------------------------------------------------------
  160. case 1:{code_1=0, code_2=1, code_3=3, watch_code();} break;//ZI-O/2018
  161. case 2:{code_1=0, code_2=1, code_3=2, watch_code();} break;//ZI-O/2019
  162. case 3:{code_1=0, code_2=1, code_3=5, watch_code();} break;//ZI-O/2038
  163. case 4:{code_1=0, code_2=1, code_3=4, watch_code();} break;//ZI-O/2058
  164. case 5:{code_1=0, code_2=3, code_3=1, watch_code();} break;//ZI-O/****
  165. case 6:{code_1=0, code_2=3, code_3=2, watch_code();} break;//ZI-O/2000
  166. case 7:{code_1=0, code_2=3, code_3=5, watch_code();} break;//ZI-O/0
  167. case 8:{code_1=0, code_2=3, code_3=4, watch_code();} break;//ZI-O/1971
  168. case 9:{code_1=0, code_2=2, code_3=1, watch_code();} break;//ZI-O/1989
  169. case 10:{code_1=0, code_2=2, code_3=3, watch_code();} break;//RIDER/NEXT
  170. case 11:{code_1=0, code_2=2, code_3=5, watch_code();} break;//ZI-O/ライダー
  171. case 12:{code_1=0, code_2=2, code_3=4, watch_code();} break;//GEIZ/2068
  172. case 13:{code_1=0, code_2=5, code_3=1, watch_code();} break;//GEIZ/2019
  173. case 14:{code_1=0, code_2=5, code_3=3, watch_code();} break;//GEIZ/2038
  174. case 15:{code_1=0, code_2=5, code_3=2, watch_code();} break;//GEIZ/2058
  175. case 16:{code_1=0, code_2=5, code_3=4, watch_code();} break;//GEIZ/XXXX
  176. case 17:{code_1=0, code_2=4, code_3=1, watch_code();} break;//GEIZ/2000
  177. case 18:{code_1=0, code_2=4, code_3=3, watch_code();} break;//GEIZ/
  178. case 19:{code_1=0, code_2=4, code_3=2, watch_code();} break;//GEIZ/1971
  179. case 20:{code_1=0, code_2=4, code_3=5, watch_code();} break;//GEIZ/1989
  180. case 21:{code_1=1, code_2=0, code_3=3, watch_code();} break;//GEIZ/2020
  181. case 22:{code_1=1, code_2=0, code_3=2, watch_code();} break;//GEIZ/ライダー
  182. case 23:{code_1=1, code_2=0, code_3=5, watch_code();} break;//TUKUYOMI/2068
  183. case 24:{code_1=1, code_2=0, code_3=4, watch_code();} break;//RIDER/NEXT
  184. case 25:{code_1=1, code_2=3, code_3=0, watch_code();} break;//RIDER/XXXX
  185. case 26:{code_1=1, code_2=3, code_3=2, watch_code();} break;//RIDER/2019
  186. case 27:{code_1=1, code_2=3, code_3=5, watch_code();} break;//RIDER/ライダー
  187. case 28:{code_1=1, code_2=3, code_3=4, watch_code();} break;//RIDER/0
  188. case 29:{code_1=1, code_2=2, code_3=0, watch_code();} break;//NEXT/0
  189. case 30:{code_1=1, code_2=2, code_3=3, watch_code();} break;//FUTURE/0
  190. case 31:{code_1=1, code_2=2, code_3=5, watch_code();} break;//NEW/0
  191. case 32:{code_1=1, code_2=2, code_3=4, watch_code();} break;//KUUGA/2000
  192. case 33:{code_1=1, code_2=5, code_3=0, watch_code();} break;//AGITO/2001
  193. case 34:{code_1=1, code_2=5, code_3=3, watch_code();} break;//RYUKI/2002
  194. case 35:{code_1=1, code_2=5, code_3=2, watch_code();} break;//FAIZ/2003
  195. case 36:{code_1=1, code_2=5, code_3=4, watch_code();} break;//BLADE/2004
  196. case 37:{code_1=1, code_2=4, code_3=0, watch_code();} break;//HIBIKI/2005
  197. case 38:{code_1=1, code_2=4, code_3=3, watch_code();} break;//KABUTO/2006
  198. case 39:{code_1=1, code_2=4, code_3=2, watch_code();} break;//DEN-O/2007
  199. case 40:{code_1=1, code_2=4, code_3=5, watch_code();} break;//KIVA/2008
  200. case 41:{code_1=3, code_2=0, code_3=1, watch_code();} break;//DECADE/2009
  201. case 42:{code_1=3, code_2=0, code_3=2, watch_code();} break;//W/2009
  202. case 43:{code_1=3, code_2=0, code_3=5, watch_code();} break;//OOO/2010
  203. case 44:{code_1=3, code_2=0, code_3=4, watch_code();} break;//FOURZE/2011
  204. case 45:{code_1=3, code_2=1, code_3=0, watch_code();} break;//WIZARD/2012
  205. case 46:{code_1=3, code_2=1, code_3=2, watch_code();} break;//GAIM/2013
  206. case 47:{code_1=3, code_2=1, code_3=5, watch_code();} break;//DRIVE/2014
  207. case 48:{code_1=3, code_2=1, code_3=4, watch_code();} break;//GHOST/2015
  208. case 49:{code_1=3, code_2=2, code_3=0, watch_code();} break;//EX-AID/2016
  209. case 50:{code_1=3, code_2=2, code_3=1, watch_code();} break;//BUILD/2017
  210. case 51:{code_1=3, code_2=2, code_3=5, watch_code();} break;//CROSS-Z/2017
  211. case 52:{code_1=3, code_2=2, code_3=4, watch_code();} break;//GREASE/2017
  212. case 53:{code_1=3, code_2=5, code_3=0, watch_code();} break;//ROGUE/2017
  213. case 54:{code_1=3, code_2=5, code_3=1, watch_code();} break;//BRAVE/2016
  214. case 55:{code_1=3, code_2=5, code_3=2, watch_code();} break;//SNIPE/2016
  215. case 56:{code_1=3, code_2=5, code_3=4, watch_code();} break;//LAZER/2016
  216. case 57:{code_1=3, code_2=4, code_3=0, watch_code();} break;//PARA-DX/2016
  217. case 58:{code_1=3, code_2=4, code_3=1, watch_code();} break;//POPPY/2016
  218. case 59:{code_1=3, code_2=4, code_3=2, watch_code();} break;//RIDER1/1971
  219. case 60:{code_1=3, code_2=4, code_3=5, watch_code();} break;//RIDER2/1971
  220. case 61:{code_1=2, code_2=0, code_3=1, watch_code();} break;//V3/1973
  221. case 62:{code_1=2, code_2=0, code_3=3, watch_code();} break;//RIDERMAN/1973
  222. case 63:{code_1=2, code_2=0, code_3=5, watch_code();} break;//X/1974
  223. case 64:{code_1=2, code_2=0, code_3=4, watch_code();} break;//AMAZON/1974
  224. case 65:{code_1=2, code_2=1, code_3=0, watch_code();} break;//STRONGER/1975
  225. case 66:{code_1=2, code_2=1, code_3=3, watch_code();} break;//SKYRIDER/1979
  226. case 67:{code_1=2, code_2=1, code_3=5, watch_code();} break;//SUPER-1/1980
  227. case 68:{code_1=2, code_2=1, code_3=4, watch_code();} break;//ZX/1984
  228. case 69:{code_1=2, code_2=3, code_3=0, watch_code();} break;//BLACK/1987
  229. case 70:{code_1=2, code_2=3, code_3=1, watch_code();} break;//BLACK RX/1988
  230. case 71:{code_1=2, code_2=3, code_3=5, watch_code();} break;//SHIN/1992
  231. case 72:{code_1=2, code_2=3, code_3=4, watch_code();} break;//ZO/1993
  232. case 73:{code_1=2, code_2=5, code_3=0, watch_code();} break;//J/1994
  233. case 74:{code_1=2, code_2=5, code_3=1, watch_code();} break;//GENM/2016
  234. case 75:{code_1=2, code_2=5, code_3=3, watch_code();} break;//CRONUS/2016
  235. case 76:{code_1=2, code_2=5, code_3=4, watch_code();} break;//EVOL/2017
  236. case 77:{code_1=2, code_2=4, code_3=0, watch_code();} break;//SHOCKER/1971
  237. case 78:{code_1=2, code_2=4, code_3=1, watch_code();} break;//ALFA/2016
  238. case 79:{code_1=2, code_2=4, code_3=3, watch_code();} break;//OMEGA/2016
  239. case 80:{code_1=2, code_2=4, code_3=5, watch_code();} break;//NEO/2017
  240. case 81:{code_1=5, code_2=0, code_3=1, watch_code();} break;//RIDE/STRIKER
  241. case 82:{code_1=5, code_2=0, code_3=3, watch_code();} break;//ALL RIDERS/ライダー
  242. case 83:{code_1=5, code_2=0, code_3=2, watch_code();} break;//SUPER SENTAI/-SS-
  243. case 84:{code_1=5, code_2=0, code_3=4, watch_code();} break;//HEISEI/-HR-
  244. case 85:{code_1=5, code_2=1, code_3=0, watch_code();} break;//SHOWA/-SR-
  245. case 86:{code_1=5, code_2=1, code_3=3, watch_code();} break;//KAMEN RIDER/ライダー
  246. case 87:{code_1=5, code_2=1, code_3=2, watch_code();} break;//EVIL/EVIL
  247. case 88:{code_1=5, code_2=1, code_3=4, watch_code();} break;//ANCIENT/0
  248. case 89:{code_1=5, code_2=3, code_3=0, watch_code();} break;//GAME/GAME
  249. case 90:{code_1=5, code_2=3, code_3=1, watch_code();} break;//FUTURE/0
  250. case 91:{code_1=5, code_2=3, code_3=2, watch_code();} break;//X MAS/1225
  251. case 92:{code_1=5, code_2=3, code_3=4, watch_code();} break;//SPECIAL/-SP-
  252. case 93:{code_1=5, code_2=2, code_3=0, watch_code();} break;//RIDER/0
  253. case 94:{code_1=5, code_2=2, code_3=1, watch_code();} break;//ZI-O/ライダー
  254. case 95:{code_1=5, code_2=2, code_3=3, watch_code();} break;//SINGULAR/0
  255. case 96:{code_1=5, code_2=2, code_3=4, watch_code();} break;//NOTHING/0
  256. case 97:{code_1=5, code_2=4, code_3=0, watch_code();} break;//MILLENNIUM/2000
  257. case 98:{code_1=5, code_2=4, code_3=1, watch_code();} break;//MAX/MAX
  258. case 99:{code_1=5, code_2=4, code_3=3, watch_code();} break;//DOEND/2009
  259. case 100:{code_1=5, code_2=4, code_3=2, watch_code();} break;//GENIUS/FIN.
  260. case 101:{code_1=4, code_2=0, code_3=1, watch_code();} break;//MUTEKI/FIN.
  261. case 102:{code_1=4, code_2=0, code_3=3, watch_code();} break;//MUGEN/FIN.
  262. case 103:{code_1=4, code_2=0, code_3=2, watch_code();} break;//TRIDORON/FIN.
  263. case 104:{code_1=4, code_2=0, code_3=5, watch_code();} break;//KIWAMI/FIN.
  264. case 105:{code_1=4, code_2=1, code_3=0, watch_code();} break;//INFINITY/FIN.
  265. case 106:{code_1=4, code_2=1, code_3=3, watch_code();} break;//COSMIC/FIN.
  266. case 107:{code_1=4, code_2=1, code_3=2, watch_code();} break;//PUTOTYRA/FIN.
  267. case 108:{code_1=4, code_2=1, code_3=5, watch_code();} break;//XTREME/FIN.
  268. case 109:{code_1=4, code_2=3, code_3=0, watch_code();} break;//CONPLETE/FIN.
  269. case 110:{code_1=4, code_2=3, code_3=1, watch_code();} break;//ENPEROR/FIN.
  270. case 111:{code_1=4, code_2=3, code_3=2, watch_code();} break;//LINER/FIN.
  271. case 112:{code_1=4, code_2=3, code_3=5, watch_code();} break;//HYPER/FIN.
  272. case 113:{code_1=4, code_2=2, code_3=0, watch_code();} break;//ARMED/FIN.
  273. case 114:{code_1=4, code_2=2, code_3=1, watch_code();} break;//KING/FIN.
  274. case 115:{code_1=4, code_2=2, code_3=3, watch_code();} break;//BLASTER/FIN.
  275. case 116:{code_1=4, code_2=2, code_3=5, watch_code();} break;//SURVIVE/FIN.
  276. case 117:{code_1=4, code_2=5, code_3=0, watch_code();} break;//SHINING/FIN.
  277. case 118:{code_1=4, code_2=5, code_3=1, watch_code();} break;//ULTIMATE/FIN.
  278. case 119:{code_1=4, code_2=5, code_3=3, watch_code();} break;//RIDE/GADGET
  279. case 120:{code_1=4, code_2=5, code_3=2, watch_code();} break;//RIDER/ライダー
  280. //----------------------------------------------------------------------------------------------------------------------------
  281.   }//スイッチ終わり
  282.   }
  283. }
  284. void watch_code(){
  285.   delay(500);
  286. //------------------1行目-------------------------
  287. Serial.println("1行目");
  288. code_in = code_1;
  289. PORTD = sw_code[code_in];
  290. Serial.print("2:");
  291. Serial.println(digitalRead(2));
  292. Serial.print("3:");
  293. Serial.println(digitalRead(3));
  294. Serial.print("4:");
  295. Serial.println(digitalRead(4));
  296. delay(100);
  297. PORTD = sw_code[7];
  298. Serial.print("2:");
  299. Serial.println(digitalRead(2));
  300. Serial.print("3:");
  301. Serial.println(digitalRead(3));
  302. Serial.print("4:");
  303. Serial.println(digitalRead(4));
  304. //-------------------2行目------------------------
  305. Serial.println("2行目");
  306. code_in = code_2;
  307. PORTD = sw_code[code_in];
  308. Serial.print("2:");
  309. Serial.println(digitalRead(2));
  310. Serial.print("3:");
  311. Serial.println(digitalRead(3));
  312. Serial.print("4:");
  313. Serial.println(digitalRead(4));
  314. delay(100);
  315. PORTD = sw_code[7];
  316. Serial.print("2:");
  317. Serial.println(digitalRead(2));
  318. Serial.print("3:");
  319. Serial.println(digitalRead(3));
  320. Serial.print("4:");
  321. Serial.println(digitalRead(4));
  322. //--------------------3行目-----------------------
  323. Serial.println("3行目");
  324. code_in = code_3;
  325. PORTD = sw_code[code_in];
  326. Serial.print("2:");
  327. Serial.println(digitalRead(2));
  328. Serial.print("3:");
  329. Serial.println(digitalRead(3));
  330. Serial.print("4:");
  331. Serial.println(digitalRead(4));
  332. delay(100);
  333. PORTD = sw_code[7];
  334. Serial.print("2:");
  335. Serial.println(digitalRead(2));
  336. Serial.print("3:");
  337. Serial.println(digitalRead(3));
  338. Serial.print("4:");
  339. Serial.println(digitalRead(4));
  340. //--------------------4行目-----------------------
  341. Serial.println("4行目");
  342. PORTD = sw_code[6];
  343. Serial.print("2:");
  344. Serial.println(digitalRead(2));
  345. Serial.print("3:");
  346. Serial.println(digitalRead(3));
  347. Serial.print("4:");
  348. Serial.println(digitalRead(4));
  349. }

識別プレートを上から1行目2行目3行目4行目とし、ピンの並びのパターンを7種類に分けました。
これらを組み合わせ送信します。
f:id:une-lettre-arrive:20181211054223j:plain
※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を作る際にエクセルを利用して作っています。フィルターでソートかけて同じのをぶわーって書き換えて最後に全部くっつけてコピペするんですけどあれ?もしかして邪道?

次は加工です。
写真はあまり撮ってないので文字の説明がメインとなります。

こちらがブレッドボード上で再現した物です。これらを組み込みます。

ライドウォッチは食玩版なので竜頭の改造から。
こんな風にプラバンやらプラ棒で受けを作ります。
f:id:une-lettre-arrive:20181208104336j:plain

入っている回路の全体像です。わかりにくいですがこんな感じです。8MHzとありますがなぜかうまく動かなかったので16MHzに変更してあります。ですので写真にはないですがセラロック16MHzをはんだ付けしてあります。
f:id:une-lettre-arrive:20181208105217j:plain

取り付けた際の全体像です。
マイコンの下に赤外線LEDが下を向いて設置してあります。穴位置やら向きは調整してください。私は調整段階で大穴を空けてしまったので裏を見られると大変不格好です。ついでにプレートの大穴も間違えて空けた穴です。透明だから埋められないし…
f:id:une-lettre-arrive:20181208110203j:plain
f:id:une-lettre-arrive:20181209160235j:plain
f:id:une-lettre-arrive:20181208151212j:plain

電池蓋を外すとボリュームと充電端子があります。
f:id:une-lettre-arrive:20181208111511j:plain

次はジクウドライバーです。
ジクウドライバーを開けると中央左部にSW4A,SW4AB,SW4C,SW4とありますがこれが識別ピンです。黒はGNDです。これらに配線をはんだ付けし、ワニ口クリップなどでブレッドボードで動作確認をするのが1番安全確実です。その際は絶対に電池を抜いておいてください。4本の線をarduinoに繋げた時点でジクウドライバーも通電します。ジクウドライバーと喋るのでわかりやすいです。(音がうるさいともいいます。夜中は気をつけて)電池を入れた状態だと5V+4.5Vの電流が流れるので壊れます。ってか壊しました…私は電池ボックス裏の抵抗が切れただけで済んだのでなんとか直りましたが絶対にやらないでください。
配線の色は合わせた方がわかりやすいです。といいながら違う色が混ざってるのは配線を再利用しているからです。
f:id:une-lettre-arrive:20181208113145j:plain

受信機はここのスペースに入れます。
f:id:une-lettre-arrive:20181208113724j:plain

リードスイッチはこのスペースです
f:id:une-lettre-arrive:20181208113951j:plain

表から見るとこうなります(見づらいですが)
このリードスイッチの位置に合うようにライドウォッチ側にネオジム磁石を取り付けてください。
f:id:une-lettre-arrive:20181208114459p:plain

全体像です。arduinoについている基板が短いのはまた再利用したからです。
マスキングテープは絶縁の代わりなのですが効果があるのかどうか…
電源をスイッチがオンになった時に通電するよう取り付けてください。
本体は電池ボックスのスペースに入れておきます。
f:id:une-lettre-arrive:20181208115542j:plain

うまく行けばこんな感じになります。



うまく動かなかったら取り敢えず電源入れ直しと作り込みが甘いのですがひとまず完成としました。
少しでも皆さんの電子工作のお役に立てれば嬉しいです。
と、書籍の締めくくりみたく書きましたが未だにトランジスタとかダイオードとかよく分かってない私でも時間をかければ何とか作れますのでもし挑戦したいという方は頑張ってください。