Ganponブログ

趣味の模型作り、ドライブ、旅行など
since Mar.2017

RC可動化 1/35 ドラゴンM26A-1パーシング 製作(11)

2022-06-29 20:54:16 | 1/35ドラゴンM26

2022-06-29
このドラゴンのキットには箱絵で描かれている牽引用ワイヤケーブルが有りません。
タミヤにはフィギュアも付いていたのに、残念ですね。

▼ならば、作るまでですね。
使う材料は水糸、真鍮パイプ、真鍮線です。
MC212Mr.メタルカラーアイアンを筆塗りしています。

▼ついでにはんだ線を叩いて薄くしたものを切り出し、ワイヤー固定フックも作ります。

加工はこの辺にして、塗装工程に入ります。

▼マスキングして電装品に塗料がかからない様にしておきます。

▼先ず、Mr.フィニッシングサーフェイサー1500(ブラック)ビンタイプをエアブラシで吹きます。
手持ちの残り量が足りないので、車体下部はオキサイドレッドサフを吹いて黒塗装しました。

塗装中はクーラーを動かしていないので、汗だくです。
という事で、一旦中断します。

午後からはクーラーをつけて作業再開です。

▼シャドー吹きのブラックは省略。
1色目の濃いグレー(C13ニュートラルグレー + C33艶消しブラック)をシャドーを残す様に面毎に吹きます。

▼2色目はC13を吹きます。

▼3色目の明るいグレー(C13+C62艶消しホワイト)を吹きます

▼明暗の塗り分けが済んだ所で、ベースカラーのC38オリーブドラブ(2)を通常より薄めに希釈して全体に吹きます。

▼カラーモジュレーションセットのODハイライト2をより明るい面に吹きます。

▼ボルト頭にODハイライト2を爪楊枝で塗ります。

細部の塗り分けは次にして、今日はここまでです。

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(10)

2022-06-28 00:12:05 | 1/35ドラゴンM26

2022-06-27
今日は塗装のつもりでしたが、やり忘れに気が付いたので、もう少し組み立て加工をします。

▼先ず、M2重機関銃の銃身に銃口を開けます。
そして、持ち運ぶときは付いている銃身部の取っ手は削除しました。
どうも戦車に搭載する場合は付いていないようです。

▼砲塔のアンテナは真鍮線で加工したものを取付けます。

▼一番の忘れは、フェンダー後端(D1,D2)の切断加工です。
指示に従い切断してエッジは斜めにヤスリ掛けしておきました。

▼IR対戦仕様だったのですが、肝心のIR受信ユニットを装着していませんでした。
あまり外観を阻害しない所を考えているうちに、すっかり忘れていました。
受光ユニット(3端子)を脱着するように、端子を車体に固定しました。
通常はユニットは外します。

▼この先、砲塔を車体より分離させる事は無いので、
ストッパーを切り欠きより長くして、砲塔旋回時に外れない様にします。

▼多分、これで組立作業は完了のはずです。

 

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(9)

2022-06-26 23:38:32 | 1/35ドラゴンM26

2022-06-26
今回は砲塔へのOVMの取り付けと、リッドなどの加工です。

▼コマンダーズハッチなどの砲塔上面の二つのハッチは開閉出来る様にしました。
左側面のハッチは開口し、開閉できるようにします。

▼12.7mmブローニングM2重機関銃は可動できますが脱落防止と補強のために軸は真鍮線にします。

▼サーチライトは直ぐにも破損して失くしそうなので、真鍮に置き換えます。
更にUVレジンでレンズを入れます。

これで、パーツの組付けは完了しました。
次は塗装です。

 

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(8)

2022-06-25 20:21:00 | 1/35ドラゴンM26

2022-06-24~25

▼砲身にウォームホワイトチップLEDを組み込みます。

▼砲塔上部はメンテのため接着せず、脱着可能にします。
前側に差し込みの受けをプラ板で作り、後部にはマグネットを仕込みます。

▼目立った隙間や段差は殆どなく、組み付けることが出来ました。

▼尾灯はドリルで穴を掘り、LEDを組み込みます。

▼UVレジンで固定し、レンズを作ります。

▼レンズの仕切りはピアノ線を張り付けて再生します。


▼後部の主砲固定具は折角なので可動加工します。
0.6mmの穴を開け、0.5mm真鍮線を通します。

▼車体前部の2枚のハッチを開閉可能改造します。
キットのままではヒンジの中央に穴を開けられません。

▼邪魔な部分を削り取り、プラ棒と0.5mm真鍮線でヒンジを作り直します。

▼7.62mm機関銃は砲身を真鍮パイプに替えて、0.75mm光ファィバーを通して光る様にします。

▼左右のヘッドライトもチップLEDを仕込み、点灯できるようにします。
改造中の画像を撮影するのを忘れましたが、
先ずレンズン中心に0.6mmの穴を貫通させ、少しずつドリルをサイズアップして最後は3mmの穴を掘ります。
チップLEDを内蔵させ、UVレジンで固定します。

▼ランプ類のガードの取り付けはもっと後にしようとも思いましたが、勢いで組付けます。
フェンダーを吊るターンバックルが折れて、その先も神隠しにあいました。
伸ばしランナーとパーツ番号プレートで修復します。


電動、電飾の仕掛けは終了し、パーツの取り付けももう少しで完了です。

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(7)

2022-06-22 17:00:50 | 1/35ドラゴンM26

2022-06-21~22
3.7V400~500mAh LiPoバッテリと8Ω1Wスピーカの設置場所を決めます。

▼バッテリは基板とギヤモータの間の隙間に設置します。
スピーカは最前部の空きスペースに収まるようにSPボックスを作りました。

車体側へのパーツ設置がほぼ出来たので、砲塔の組立に入ります。

▼元々、砲身は手動で上下可動できますが、
砲身を前後させるには防盾受け部に穴を貫通するなどの加工が必要です。

▼穴を貫通する前に上下にプラ板を貼り、厚みを増やしておきます。
更に上側は長くして、サーボモータを取付けるれるようにします。

▼3mmと3.7mm真鍮パイプで手法を延長します。
プラ板に3mm角プラ棒を貼り、主砲リコイル用のガイドにします。

▼サーボモータを取付けます。

 

▼砲身リコイル、上下のテスト
 

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(6)

2022-06-20 22:21:20 | 1/35ドラゴンM26

2022-06-19~20
車体上面の組付けに入ります。

▼車体後部カバーはギヤボックスのメンテ用に脱着可能にしますが、後ろ側に隙間が生じます。

▼車体の両側が若干内側に歪んでいるのが原因なので、つっかえ棒を入れて補正します。
上面パネルはマグネットで固定します。

▼砲塔旋回用サーボは無改造で360°連続回転可能なSG-90HVがギリギリ組み込めました。
取付けベースは1mmアルミ板を加工しました。

▼砲塔ベースにドライブベルトを仮取付けします。

▼砲塔上部も仮組みすると、防盾取付けベースの赤色部分がベルトを巻く邪魔になっています。

▼リューターで邪魔な部分を削り取り、ベルトを巻く事が出来ました。

少し動きが重いですが、旋回できました。
切り欠き位置で砲塔が外れるので、もう少し手を入れる必要が有ります。

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(5)

2022-06-17 14:53:34 | 1/35ドラゴンM26

2022-06-15~17
▼起動輪に車軸を取付ける改造をします。
キットのパーツは片側4品です。

▼樹脂の車軸の細い所を少しを残して切断し、中心に1.5mmの穴を開けます。

▼内径4mmのアルミパイプを被せて補強します。
穴を2.5mmに広げ、3mm六角シフトを叩き込みます。
シャフトに差したまま、起動輪から数㎝離れた部分(シャフト)をライターで熱します。
圧入部が熱で少し緩んできたら、スライドして抜きます。
これで適度な硬さで脱着が出来るようになります。
少しきつめに刺さるくらいがベストです。

▼履帯を巻いて起動輪の内外の位置合わせをします。

▼一度組上げ、履帯を巻いて動かすと、、、、動きません。
トルク不足の様です。
ギヤの噛み具合を調整して効率アップをしますが、未だトルク不足です。
意を決して、ギヤ比を変更し、スピードは落ちますがトルクアップします。

▼因みに改造前のギヤです。

▼車体に取り付けます。

▼ファイナルギヤケース内にギヤを組み込みます。

▼カバーはメンテできるように接着せず、ねじ止めとしました。

▼起動輪を装着。

▼履帯を巻きます。

実は、動作テストを何度も行っている中で、
バッテリを逆接して5V出力昇圧コンバータ2個とモータドライバを破損してしまいました。
スイッチONと同時に煙が出たので、直ぐにOFFしましたが手遅れでした。

手持ちのパーツに置き換えて復活できましたが、かなり焦りました。

という事で、今日はここまでとします。

▼履帯を履かせた動作テストです。

 

 

 
 

 

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(4)

2022-06-15 00:12:30 | 1/35ドラゴンM26

2022-06-14
▼ファイナルギヤカバー内にギヤ、軸受けを組み込みます。
そのままではギヤを収納できないので、リューターで邪魔なところを削ぎます。

▼タミヤの「ミニモーター標準ギヤボックス 8速」のギヤを利用して専用ギヤボックスを作ります。

▼適当に作り上げたせいで、ギヤの噛みが甘いところ、きついところが有り起動輪シャフトが上手く回りません。
ギヤボックスと出力シャフトの調整をします。
なかなか上手く調整できず、結構な時間がかかってしまいました。

▼画面上側のギヤは最終手直し前です。
このギヤに起動輪シャフト(3mm六角シャフト)が担ぐので上方へずらします。

▼起動輪を改造して、確認のために履帯を巻いてみます。

何とか出来たような感じですが、動かすためには少し手を入れた方が良さそうです。
起動輪の改造内容も含めて次回という事で、今日はここまでです。

 

 

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(3)

2022-06-12 22:26:29 | 1/35ドラゴンM26

2022-06-12
▼残りの転輪も組み立て取り付けました。

▼可動具合のテスト
 

▼次は起動輪です。
この構成と、内側の十字のランナーは必要なのでしょうか?

▼ニッパーでランナーを切断し、デザインナイフで出っ張りを切り落とし、リューターで表面を均します。

▼画像中央上がタミヤ起動輪です。
モーターライズ用に加工されています。
さて、どう料理しましょうか。。。。。

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(2)

2022-06-11 23:45:52 | 1/35ドラゴンM26

2022-06-11
サスペンションを可動にするために、ダンパーも可動にすることにしました。

▼元々の樹脂パーツを利用しようとしましたが、強度不足なのでアルミと真鍮で作り直します。

▼2mm真鍮丸棒の端を潰して、

▼1mmの穴を開け、

▼受け側は外径3mm、内径2mmのアルミパイプを加工しました。

▼合計8個作ります。

▼車体に取り付けます。
サスペンションはトーションバー式です。
ダンパーの付いたところは0.6mmピアノ線、それ以外は0.5mmピアノ線を使っています。

▼転輪も回転するように改造します。
先ず、上部転輪から改造。
0.8mmの穴を開け、虫ピンを通します。

▼転輪も改造しますが、今日はここまでで時間切れです。

 


RC可動化 1/35 ドラゴンM26A-1パーシング 製作(1)

2022-06-11 00:12:59 | 1/35ドラゴンM26

2022-06-10
パーシングが特に好きという事ではないですが、またまたM26パーシングです。
これまでにタミヤ製を2台製作しましたが、1台目は組み立て中に彼方此方破損して寂しいことになっていました。
その1台目のフリウル履帯T80E1タイプが勿体ないので、もう一度製作する事にしました。

ただ、今回はタミヤではなくドラゴンの朝鮮戦争時のM26A-1です。
巷では6,000円以上しますが、中古という事で半額以下で手に入れました。
タミヤと同程度の価格という事でしょうか。

▼パーツに関してはタミヤと同程度ですが、組立履帯が付属しています。

可動戦車にするには断然タミヤが作りやすいです。
この時点で選択をミスったかもと思いましたが、同じものを繰り返し作るのも何なので良しとします。

そもそも今回パーシングを作ることにしたのは1号機の修復に断念したこと、
履いている履帯が入手が難しくなった貴重なフリウル金属可動履帯であるという事です。
端的に言うと、フリウル履帯を活用するための選択です。

パーツの勘合具合を確認します。
▼メンテ上、接着しない車体上下(特に前側)はこんな具合です。
接着する事を前提にしているので止むを得ませんが、残念ですが隙間が目立ちます。

▼サスペンションアームに取り付くダンパーですが、このまま組むとサスは固定になってしまいます。
以前製作したタミヤ1/35パーシングは可動サスにするため、ダンパーは途中で無くなっています。

▼因みにタミヤの1/16RCパーシングのダンパーは可動式になっているようです。

▼これも残念ですが、車体後部上面のエンジンルームカバーが開閉できません。

▼車体下面のカバーはボスと受け穴が若干ズレているので、1Φ穴を1.5Φに拡張します。

サスのダンパーを改造するかも含めて、楽しんで製作していきたいと思います。


ESP32 Dev ModuleでRC戦車コントロール(IR対戦仕様)

2022-06-08 22:40:35 | RC可動コントロール

2022-06-08
ESP32 Dev ModuleでRC可動戦車コントロールの第2段、今回はIR対戦仕様の実験です。

Arduino用に作成したスケッチをESP32用に変更します。
ESP32用のIR送受信のライブラリは IRremoteESP8266.h を使います。
コマンドは少し変更するだけで利用できました。
注意が必要なのは、自分の送信した赤外線信号の反射を誤受信しない様に、
送信の前後は受信中止にしておくことが必要ということです。
Arduino用は受信再開コマンドだけでよかったのですが、ESP32用は受信中止コマンドも必要でした。

▼M26実装基板と同じ形に組上げました。
左下がモータドライバーDVR8835(秋月電子)、右下は5V出力DC昇圧コンバータ(Amazon)。
ESP32の左側にJQ6500(MP3プレーヤー)のUSBコネクタが覗いています。

▼ギヤードモータx2、サーボモータx3(内1個は連続回転仕様)、
LED、赤外線LED、赤外線受光素子、スピーカなどを接続。

▼IR対戦用送受信チェッカ

▼テスト機器全景

 

▼実験中の動画です。
ESP32 Dev ModuleでRC戦車コントロール(IR対戦仕様)  

追伸:画像撮影後ですが、技適取得済の正規PS3コントローラの中古を○○カリで入手しました。

 

▼回路
回路図中でブレーキ、ヘッドライトのLEDは1個で書いてありますが、
実態は太線枠内の様に左右2個です。
IR発光LEDの電流はトランジスタ(2SC1815など)を介して増幅しています。

画像をクリックすると拡大します

▼スケッチ(プログラム)

  1. /*PS3_ESP32_tank_JQ6500mp3_DRV8835_IR_v6.0a
  2.   2022-06-07
  3.    【操作方法】
  4.   PS3コントローラで操縦します。
  5.   車体の電源をONし、コントローラのPSボタンでペアリング開始。
  6.   インジケータランプ4個高速点滅後に1個点灯でペアリング完了。
  7.   コントローラーの左スティック上下で前後進、右スティックの左右でステアリングを制御。
  8.   ステアリングを切っていくと緩旋回、一杯切るとで信地旋回する。
  9.   また、左スティック中央でステアリング左右一杯で超信地旋回。
  10.   △ボタンで砲身UP、?ボタンで砲身DOWN、□ボタンでセンター位置になる。
  11.   左スティック左右で砲塔旋回。離した位置で止まる。
  12.   R1ボタンで主砲発射。L1ボタンで機銃射撃。
  13.   RIGHTボタンでヘッドライト点灯、LEFTボタンで消灯。
  14.   砲撃時のリコイルアクション車体+砲身
  15.   IR発光、受光装置を付けるとIR対戦可能。
  16.   メインCPU:  ESP32 DevKitC
  17.   モータドライバ:DRV8835
  18.   MP3プレイヤー:JQ6500 MP3プレイヤーモジュール
  19. */
  20.  
  21. #include <Arduino.h>
  22. //#include "SoftwareSerial.h"
  23. //#include "DFRobotDFPlayerMini.h"
  24. #include <JQ6500_Serial.h>
  25. #include <IRremoteESP8266.h>
  26. #include <IRsend.h>
  27. const uint16_t kIrLed = 4;
  28. IRsend irsend(kIrLed);
  29. uint16_t rawData[5] = {4150, 1000, 2050, 2000, 1000};
  30.  
  31. #include <IRrecv.h>
  32. //#include <IRac.h>
  33. //#include <IRtext.h>
  34. #include <IRutils.h>
  35.  
  36. const uint16_t kRecvPin = 13;
  37. IRrecv irrecv(kRecvPin);
  38.  
  39. decode_results results;
  40. //const long sign_hit = 0x4CB0FADD;
  41. const uint32_t value = 0x4CB0FADD;
  42.  
  43. HardwareSerial Serial_df(2);
  44. JQ6500_Serial mp3(Serial_df);
  45. void printDetail(uint8_t type, int value);
  46. #include <Ps3Controller.h>
  47. #include <ESP32Servo.h>
  48. Servo servo1;
  49. int servo1Pin = 27;
  50. Servo servo2;
  51. int servo2Pin = 14;
  52. Servo servo3;
  53. int servo3Pin = 12;
  54.  
  55. int LED_1 = 23; //ブレーキランプ
  56. int LED_2 = 22; //ヘッドライト
  57. int LED_3 = 19; //砲撃
  58. int LED_4 = 18; //銃撃
  59. int k = 0;
  60. int s = 0;
  61. int d_time = 30;
  62. int angle_servo1 = 95; // 上下
  63. int anglenow = angle_servo1 ;
  64. int angle_servo3 = 90; // リコイル
  65. int motor_speed;
  66. float steering;
  67. int pos_y;
  68. int pos_x;
  69. int pos_lx;
  70.  
  71. int AIN1 = 32; // A入力1/APHASE 左モータ AIN1
  72. int BIN1 = 25; // B入力1/BPHASE 右モータ BIN1
  73. int PWMApin = 33; //A5; // A入力2/AENABLE 左モータ AIN2 IO33 A5
  74. int PWMBpin = 26; //A19; // B入力2/BENABLE 右モータ BIN2 IO26 (IO0は起動時不安定)A19
  75. int PWMA = 2; //PWMAチャンネル 0=NG 1=NG 0〜15
  76. int PWMB = 3; //PWMBチャンネル 0=NG 1=NG 0〜15 
  77. int cnt = 0;
  78.  
  79. void setup() {
  80.   irsend.begin();
  81.   irrecv.enableIRIn();
  82.  
  83.   servo1.setPeriodHertz(50);
  84.   servo1.attach(servo1Pin, 500, 2400);
  85.   servo2.setPeriodHertz(50);
  86.   servo2.attach(servo2Pin, 900, 2100);
  87.   servo3.setPeriodHertz(50);
  88.   servo3.attach(servo3Pin, 500, 2400);
  89.   Serial.begin(115200);
  90.   Serial_df.begin(9600); // RX2 = 16, TX2 = 17
  91.   mp3.reset();
  92.   mp3.setVolume(25);
  93.  
  94.   Ps3.begin("00:11:22:33:44:55"); // PS3-Eコントローラ SixaxisPairToolで調べたmac adresに修正
  95.   Serial.println("PS3 Ready");
  96.  
  97.   ledcSetup(PWMA, 12000, 8); //チャンネル,周波数,解像度(8bit=256段階)
  98.   ledcAttachPin(PWMApin, PWMA); //ledPinをPWMCHチャンネルに接続
  99.   ledcSetup(PWMB, 12000, 8); //チャンネル,周波数,解像度(8bit=256段階)
  100.   ledcAttachPin(PWMBpin, PWMB); //ledPinをPWMCHチャンネルに接続
  101.   pinMode(AIN1, OUTPUT);
  102.   pinMode(BIN1, OUTPUT);
  103.   pinMode(LED_1, OUTPUT);
  104.   pinMode(LED_2, OUTPUT);
  105.   pinMode(LED_3, OUTPUT);
  106.   pinMode(LED_4, OUTPUT);
  107.  
  108.   LEDtenmetsu(LED_2);
  109.  
  110.   servo1.write(angle_servo1); // 0 - 180
  111.   delay(100);
  112.   servo2.write(90); // 0 - 180
  113.   delay(100);
  114.   servo3.write(angle_servo3); // 0 - 180
  115.   delay(100);
  116.  
  117.   //myDFPlayer.play(3); //エンジン始動
  118.   mp3.playFileByIndexNumber(3);
  119.   delay(1000);
  120.  
  121. }
  122.  
  123. void loop() {
  124.   //被弾チェック
  125.   HitCHK();
  126.  
  127.   if (Ps3.isConnected()) {
  128.     pos_lx = Ps3.data.analog.stick.lx;
  129.     pos_lx = pos_lx + 128;
  130.  
  131.     //砲塔旋回
  132.     if ( pos_lx > 230) { //右旋回
  133.       servo2.write(80);
  134.     } else if (pos_lx < 25) { //左旋回
  135.       servo2.write(100);
  136.     } else { //停止
  137.       servo2.write(90);
  138.     }
  139.  
  140.     //砲身上下
  141.     if ( Ps3.event.button_down.square) { // center
  142.       if (anglenow > angle_servo1) {
  143.         for (anglenow = anglenow; anglenow >= angle_servo1; anglenow -= 1) {
  144.           servo1.write(anglenow);
  145.           delay(40);
  146.         }
  147.       }
  148.       else {
  149.         for (anglenow = anglenow; anglenow <= angle_servo1; anglenow += 1) {
  150.           servo1.write(anglenow);
  151.           delay(40);
  152.         }
  153.       }
  154.     }
  155.  
  156.     if ( Ps3.event.button_down.triangle) { // up
  157.       for (anglenow = anglenow; anglenow <= (angle_servo1+60); anglenow += 1 ) {
  158.         servo1.write(anglenow);
  159.         delay(40);
  160.       }
  161.     }
  162.  
  163.     if ( Ps3.event.button_down.cross) { // down
  164.       for (anglenow = anglenow; anglenow >= (angle_servo1-15); anglenow -= 1 ) {
  165.         servo1.write(anglenow);
  166.         delay(40);
  167.       }
  168.     }
  169.  
  170.     if (Ps3.event.button_down.circle) {
  171.       if (s == 0) {
  172.         s = 1;
  173.         //myDFPlayer.play(3); //エンジン始動
  174.         mp3.playFileByIndexNumber(3);
  175.         delay(1000);
  176.         mp3.playFileByIndexNumber(5);
  177.         mp3.setLoopMode(MP3_LOOP_ONE);
  178.         delay(d_time);
  179.       } else {
  180.         mp3.setLoopMode(MP3_LOOP_ONE_STOP);
  181.         s = 0;
  182.         delay(100);
  183.       }
  184.     }
  185.  
  186.     if (Ps3.event.button_down.r3) {
  187.       mp3.setLoopMode(MP3_LOOP_ONE_STOP);
  188.       s = 0;
  189.     }
  190.  
  191.     if (Ps3.event.button_down.right) {
  192.       digitalWrite(LED_2, HIGH); // Headlight ON
  193.     }
  194.  
  195.     if (Ps3.event.button_down.left) {
  196.       digitalWrite(LED_2, LOW); // Headlight off
  197.     }
  198.  
  199.     if (Ps3.event.button_down.r1) { //砲撃 + リコイル(砲身&車体)
  200.       digitalWrite(LED_3, HIGH); //主砲発光
  201.       fire();
  202.       //myDFPlayer.play(26);
  203.       mp3.playFileByIndexNumber(2);
  204.       delay(50);
  205.       servo3.write(angle_servo3 - 40); // 砲身リコイル
  206.       delay(20);
  207.       motor_run(180, 1, 180, 1, 1); // 車体リコイル
  208.       delay(60);
  209.       motor_run(0, 0, 0, 0, 1);
  210.       digitalWrite(LED_3, LOW);
  211.       for (int ang3 = (angle_servo3 - 30); ang3 <= angle_servo3; ang3 += 1 ) {
  212.         servo3.write(ang3);
  213.         delay(20);
  214.       }
  215.       //digitalWrite(LED_3, LOW);
  216.       motor_run(100, 0, 100, 0, 1);
  217.       delay(80);
  218.       motor_run(0, 0, 0, 0, 1);
  219.       delay(100);
  220.       if (s == 1) {
  221.         //myDFPlayer.loop(5); //Loop 5th mp3 アイドリング
  222.         mp3.playFileByIndexNumber(5);
  223.         mp3.setLoopMode(MP3_LOOP_ONE);
  224.         delay(d_time);
  225.       }
  226.     }
  227.  
  228.     if (Ps3.event.button_down.l1) { //銃撃
  229.       mp3.playFileByIndexNumber(24);
  230.       for ( k = 0; k < 6; k++) {
  231.         digitalWrite(LED_4, HIGH); //発光
  232.         delay(80);
  233.         digitalWrite(LED_4, LOW);
  234.         delay(120);
  235.       }
  236.       if (s == 1) {
  237.         mp3.playFileByIndexNumber(5);
  238.         mp3.setLoopMode(MP3_LOOP_ONE);
  239.         delay(d_time);
  240.       }
  241.     }
  242.  
  243.     //走行コントロール
  244.     pos_y = Ps3.data.analog.stick.ly;
  245.     pos_x = Ps3.data.analog.stick.rx;
  246.     pos_y = pos_y + 128;
  247.     pos_x = pos_x + 128;
  248.  
  249.     //前進
  250.     if (pos_y <= 102 && pos_x >= 102 && pos_x <= 152) {
  251.       motor_speed = map(pos_y, 102, 0, 0, 255);
  252.       motor_run(motor_speed, 0, motor_speed, 0, 0);
  253.     }
  254.  
  255.     //後進
  256.     else if ( pos_y >= 152 && pos_x >= 102 && pos_x <= 152) {
  257.       motor_speed = map(pos_y, 152, 255, 0, 255) ;
  258.       motor_run(motor_speed, 1, motor_speed, 1, 0);
  259.     }
  260.  
  261.     //前進右緩旋回、信地旋回
  262.     //else if ( pos_y <= 102 && pos_x > 152 && pos_x <= 245) {
  263.     else if ( pos_y <= 102 && pos_x >= 152) {
  264.       motor_speed = map(pos_y, 102, 0, 0, 255);
  265.       steering = motor_speed * (1.00 - (map(pos_x, 152, 255, 0, 255) / 255.00));
  266.       motor_run(motor_speed, 0, steering, 0, 0);
  267.     }
  268.  
  269.     //前進左緩旋回、信地旋回
  270.     //else if ( pos_y <= 102 && pos_x < 102 && pos_x >= 10) {
  271.     else if ( pos_y <= 102 && pos_x <= 102) {
  272.       motor_speed = map(pos_y, 102, 0, 0, 255);
  273.       steering = motor_speed * (1.00 - (map(pos_x, 102, 0, 0, 255) / 255.00));
  274.       motor_run(steering, 0, motor_speed, 0, 0);
  275.     }
  276.  
  277.     //後進右緩旋回、信地旋回
  278.     //else if ( pos_y >= 152 && pos_x > 152 && pos_x <= 245) {
  279.     else if ( pos_y >= 152 && pos_x >= 152 ) {
  280.       motor_speed = map(pos_y, 152, 255, 0, 255);
  281.       steering = motor_speed * (1.00 - (map(pos_x, 152, 255, 0, 255) / 255.00));
  282.       motor_run(motor_speed, 1, steering, 1, 0);
  283.     }
  284.  
  285.     //後進左緩旋回、信地旋回
  286.     //else if ( pos_y >= 152 && pos_x < 102 && pos_x >= 10) {
  287.     else if ( pos_y >= 152 && pos_x <= 102 ) {
  288.       motor_speed = map(pos_y, 152, 255, 0, 255);
  289.       steering = motor_speed * (1.00 - (map(pos_x, 102, 0, 0, 255) / 255.00));
  290.       motor_run(steering, 1, motor_speed, 1, 0);
  291.     }
  292.  
  293.     //右超信地旋回
  294.     else if (pos_x >= 245 && pos_y >= 102 && pos_y <= 152) {
  295.       motor_speed = 204;
  296.       motor_run(motor_speed, 0, motor_speed, 1, 0);
  297.     }
  298.  
  299.     //左超信地旋回
  300.     else if (pos_x <= 10 && pos_y >= 102 && pos_y <= 152) {
  301.       motor_speed = 204;
  302.       motor_run(motor_speed, 1, motor_speed, 0, 0);
  303.     }
  304.  
  305.     else { //停止(ブレーキ)
  306.       motor_run(0, 0, 0, 0, 1);
  307.     }
  308.   }
  309. }
  310.  
  311.  
  312. void motor_run(int D0, int D1, int D2, int D3, int D4) {
  313.  
  314.   ledcWrite(PWMA, D0); //(チャンネル,解像度)
  315.   digitalWrite(AIN1, D1);
  316.   ledcWrite(PWMB, D2); //(チャンネル,解像度)
  317.   digitalWrite(BIN1, D3);
  318.   digitalWrite(LED_1, D4);
  319. }
  320.  
  321. void LEDtenmetsu(int LED) {
  322.   for (int i = 0; i < 2; i++) {
  323.     digitalWrite(LED, HIGH);
  324.     delay(500);
  325.     digitalWrite(LED, LOW);
  326.     delay(500);
  327.   }
  328. }
  329.  
  330. void fire() {
  331.   irrecv.disableIRIn(); // 自らの送信を誤受信しないように受信を停止  
  332.   irsend.sendRaw(rawData, 5, 38); //irsend.sendRaw(data buf, length, hertz)
  333.   delay(10);
  334.   irrecv.enableIRIn(); // 受信を再開する  
  335. }
  336.  
  337. void HitCHK() {
  338.   if (irrecv.decode(&results)) { // 受信コードの値が
  339.     if (results.value == value) { // 0x4CB0FADDだったら被弾
  340.       mp3.playFileByIndexNumber(17);
  341.       Hit(); //被弾
  342.     }
  343.     irrecv.resume();
  344.     delay(10);
  345.   }
  346. }
  347.  
  348. // ====被弾====
  349. void Hit() {
  350.   motor_run(180, 1, 180, 0, 0);
  351.   delay(100);
  352.   motor_run(0, 0, 0, 0, 1);
  353.   delay(50);
  354.   motor_run(180, 0, 180, 1, 0);
  355.   delay(80);
  356.   motor_run(0, 0, 0, 0, 1);
  357.   delay(50);
  358.   cnt++;
  359.   if ( cnt >= 5 ) {
  360.     mp3.playFileByIndexNumber(18);
  361.     motor_run(0, 0, 0, 0, 0);
  362.     for ( int i = 0; i < 15 ; i++) {
  363.       digitalWrite(LED_2, HIGH);
  364.       delay(1000);
  365.       digitalWrite(LED_2, LOW);
  366.       delay(1000);
  367.     } //復活までに15秒
  368.     cnt = 0;
  369.   } else {
  370.     delay(1000);
  371.   }
  372. }