2017年9月18日月曜日

【プラレール修理】名鉄7000系パノラマカー(旧動力 白線なし)の修理

以前修理したけどブログにアップできなかったもの その1 です。
なお、修理前の画像は撮り忘れたので修理後の画像のみです。

名鉄7000系パノラマカー(旧動力 白線なし)を修理しました。
修理箇所は運転台窓枠が折れて紛失していた所と車体左側ひび割れの2ヶ所です。
全体画像

運転台の窓枠は、プラモデルの赤ランナーを使用してヒートペンで再生しました。
が、仕上げが甘くガタガタになってしまいました…
窓枠部分拡大画像


車体左側のひび割れも、プラモデルの赤ランナーとヒートペン塞いだのですが、微妙に赤の色合いが異なったため逆に目立つ結果に…
ボディ左側拡大画像

いつか時間が出来たら、修理し直したいです…

2017年9月3日日曜日

【音声改造】オリジナルガシャット作製その5 『動作確認動画とプログラム公開』

新しい仮面ライダーの放送が始まりましたが、私はまだガシャットを弄っています。
という事で今回は、前回修正したスケッチが正常に動作するか検証していました。

動画にするとこんな感じです。
ガシャット挿入音の再生中にキメワザスロットのボタンを押下しても次処理のキメワザ待機音は実行せず、ガシャット挿入音の再生が終了した後にボタンを押下することでキメワザ待機音が鳴るようになりました。

スケッチが長くなってしまったのでvoid loopの所のみ抜粋してありますがこんな感じです。
void loop(){
  current_state[0] = digitalRead(BUTTON_1_PIN);
  current_state[1] = digitalRead(BUTTON_2_PIN);
  current_state[2] = digitalRead(BUTTON_3_PIN);
 
  if(memcmp(before_state, OFF_OFF_OFF, N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      wait = 1;
      action = set_action(LEVEL_1);
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      wait = 1;
      action = set_action(GASHAT_IN);
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      if(single_mode_flag == false){
        wait = 1;
        action = set_action(GASHAT_NAME);
      }else{
        randNumber = random(2);
        if(randNumber == 0){
          wait = 1;
          action = set_action(GAME_CLEAR);
        }else{
          wait = 1;
          action = set_action(GAME_OVER);
        }
      }
      single_mode_flag = !single_mode_flag;
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      slot_in_time = 0;
      slot_in_flag  = true;
      wait = 1;
      action = set_action(GASHAT_IN);
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      wait = 1;
      action = set_action(LEVEL_1);
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      wait = 1;
      action = set_action(GASHAT_IN);
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      critical_mode_flag = true;
      slot_in_time = 0;
      slot_in_flag  = true;
      wait = 1;
      action = set_action(WEAPON_C_READY);
    }
  }else if(memcmp(before_state, ON_OFF_OFF, N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      if(s_process_ID == 3 && slot_in_time >= 40){
        randNumber = random(2);
        if(randNumber == 0){
          wait = 1;
          action = set_action(CRITICAL_FINISH);
        }else{
          wait = 1;
          action = set_action(CRITICAL_FINISH_KAI);
        }
        s_process_ID = 0;
      }else{
        ;
      }
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(LEVEL_2);
      }else{
       if(s_process_ID == 3 && slot_in_time >= 40){
          randNumber = random(2);
          if(randNumber == 0){
            wait = 1;
            action = set_action(CRITICAL_FINISH);
          }else{
            wait = 1;
            action = set_action(CRITICAL_FINISH_KAI);
          }
          s_process_ID = 0;
        }else{
          ;
        }
      }
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      wait = 1;
      action = set_action(LEVEL_2);
    }
  }else if(memcmp(before_state, OFF_ON_OFF, N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      if(s_process_ID == 2 && slot_in_time >= 40){
        wait = 1;
        action = set_action(GENRE);
        s_process_ID = 0;
      }else{
        ;
      }
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(LEVEL_3);
      }else{
        if(s_process_ID == 2 && slot_in_time >= 40){
          wait = 1;
          action = set_action(GENRE);
          s_process_ID = 0;
        }else{
          ;
        }
      }
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      wait = 1;
      action = set_action(LEVEL_X);
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      wait = 1;
      action = set_action(LEVEL_3);
    }
  }else if(memcmp(before_state, OFF_OFF_ON, N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      wait = 1;
      action = set_action(LEVEL_1);
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      wait = 1;
      action = set_action(GASHAT_IN);
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(CRITICAL_READY);
      }else{
        randNumber = random(2);
        if(randNumber == 0){
          wait = 1;
          action = set_action(CRITICAL_STRIKE);
        }else{
          wait = 1;
          action = set_action(CRITICAL_STRIKE_KAI);
        }
      }
      critical_mode_flag = !critical_mode_flag;
    }
  }else if(memcmp(before_state, ON_ON_OFF,  N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(DRIVER_CLOSE);
      }else{
        if(slot_in_time >= 40){
          randNumber = random(2);
          if(randNumber == 0){
            wait = 1;
            action = set_action(CRITICAL_FINISH);
          }else{
            wait = 1;
            action = set_action(CRITICAL_FINISH_KAI);
          }
        }else{
          s_process_ID = 3;
        }
      }
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(DRIVER_CLOSE);
      }else{
        if(slot_in_time >= 40){
          wait = 1;
          action = set_action(GENRE);
        }else{
          s_process_ID = 2;
        }
      }
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      if(s_process_ID >= 1 && slot_in_time >= 40){
        switch(s_process_ID){
          case 1:
            wait = 1;
            action = set_action(CRITICAL_READY);
            critical_mode_flag = !critical_mode_flag;
            break;
          case 2:
            wait = 1;
            action = set_action(GENRE);
            break;
          case 3:
            randNumber = random(2);
            if(randNumber == 0){
              wait = 1;
              action = set_action(CRITICAL_FINISH);
            }else{
              wait = 1;
              action = set_action(CRITICAL_FINISH_KAI);
            }
            break;     
        }
        s_process_ID = 0;
      }else{
        ;
      }
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      if(slot_in_time >= 40){
        if(critical_mode_flag == false){
          wait = 1;
          action = set_action(CRITICAL_READY);
        }else{
          randNumber = random(2);
          if(randNumber == 0){
            wait = 1;
            action = set_action(CRITICAL_STRIKE);
          }else{
            wait = 1;
            action = set_action(CRITICAL_STRIKE_KAI);
          }
        }
        critical_mode_flag = !critical_mode_flag;
      }else{
        s_process_ID = 1;
      }
    }
  }else if(memcmp(before_state, ON_OFF_ON,  N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(LEVEL_2);
      }else{
        ;
      }
    }
  }else if(memcmp(before_state, OFF_ON_ON,  N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      if(critical_mode_flag == false){
        wait = 1;
        action = set_action(LEVEL_3);
     }else{
        ;
      }
    }
  }else if(memcmp(before_state, ON_ON_ON,   N_BUTTON) == 0){
    if(memcmp(current_state, OFF_OFF_OFF, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_OFF_OFF, N_BUTTON) == 0){
      randNumber = random(2);
      if(randNumber == 0){
        wait = 1;
        action = set_action(CRITICAL_FINISH);
      }else{
        wait = 1;
        action = set_action(CRITICAL_FINISH_KAI);
      }
    }else if(memcmp(current_state, OFF_ON_OFF, N_BUTTON) == 0){
      wait = 1;
      action = set_action(GENRE);
    }else if(memcmp(current_state, OFF_OFF_ON, N_BUTTON) == 0){
      s_process_ID = 0;
      slot_in_flag  = false;
      critical_mode_flag = false;
      wait = 1;
      action = set_action(GASHAT_OUT);
    }else if(memcmp(current_state, ON_ON_OFF,  N_BUTTON) == 0){
      ;
    }else if(memcmp(current_state, ON_OFF_ON,  N_BUTTON) == 0){
      randNumber = random(2);
      if(randNumber == 0){
        wait = 1;
        action = set_action(CRITICAL_FINISH);
      }else{
        wait = 1;
        action = set_action(CRITICAL_FINISH_KAI);
      }
    }else if(memcmp(current_state, OFF_ON_ON,  N_BUTTON) == 0){
      wait = 1;
      action = set_action(GENRE);  
    }else if(memcmp(current_state, ON_ON_ON,   N_BUTTON) == 0){
      if(s_process_ID >= 1 && slot_in_time >= 40){
        switch(s_process_ID){
          case 1:
            wait = 1;
            action = set_action(CRITICAL_READY);
            critical_mode_flag = !critical_mode_flag;
            break;
          case 2:
            wait = 1;
            action = set_action(GENRE);
            break;
          case 3:
            randNumber = random(2);
            if(randNumber == 0){
              wait = 1;
              action = set_action(CRITICAL_FINISH);
            }else{
              wait = 1;
              action = set_action(CRITICAL_FINISH_KAI);
            }
            break;     
        }
        s_process_ID = 0;
      }else{
        ;
      }
    }
  }

  if(wait >= 1) {
    flash_led(action);
    wait = 0;
  }else{
    wait++;
  }

    before_state[0] = current_state[0];
    before_state[1] = current_state[1];
    before_state[2] = current_state[2];

  if(slot_in_flag == true){
    if(slot_in_time < 5000){
      slot_in_time++;
    }else{
      slot_in_time = 0;
    }
  }

  delay(50);
}
他の方が作製する際の参考になれば良いのですが…


ガシャットの個体差による認識率の問題はありますが、現時点での課題はほぼほぼ解決したので、次は音ネタ探しに移ります。
さてさて、何が良いでしょうかねぇ

その6に続きます。】