SSブログ

リモートコントロール(RC)戦車をつくる【XBeeコントロール送信機③】 [RC戦車]

XBeeコントロール送信機の送信回路部を作製します。

XBeeはリモコンボックスの電源回路から3.3Vを印加できるので、XBee用2.54mmピッチ変換基板("http://akizukidenshi.com/catalog/g/gP-05060/")の電圧レギュレータを取り除いて、直付けします。
XBee用2.54mmピッチ変換基板加工.JPG

Arduino Pro MiniとXBeeは24ピンDIPソケットで実装しています。
コネクタは電源とGNDで2ピン、ジョイスティックからの信号用を4ピンコネクタとしました。
ジョイスティックのレバーが中立(ニュートラル)の状態では、モータを停止状態にしてRC戦車をしっかりと停めたいわけですが、電気的にオープン(どこにも繋がっていない状態)のようですので、このままでは電圧がフラフラしてしまいます。そこで、Arduinoのジョイスティックからの入力信号ピンを33kΩの抵抗を介してGNDに接続しています(プルダウン抵抗)。これでジョイスティックがニュートラル時でも入力ピンの値をLOWに確定できます。

【基盤実装】
・Top view
XBeeコントロール送信機_送信回路①.JPG
・Bottom view
XBeeコントロール送信機_送信回路②.JPG

【回路図】
XBeeコントロール送信機_送信回路図.jpg

【組み立て】
XBeeコントロール送信機_送信回路③.JPG

XBeeコントロール送信機forRC_Tank.JPG


【スケッチ】
/*******************************************************************************
 XBeeコントロール送信機

++++++ note ++++++
・ジョイスティックの方向と出力値のマッピング
7     8     9
 [左斜め上][右斜め上]
4  ←  5  → 6
 [左斜め下][右斜め下]
1     2    3

*******************************************************************************/
#define VERSION "1.00a0"

const int L_RED = 2;
const int L_WHITE = 3;
const int R_RED = 6;
const int R_WHITE = 7;

// 初期化(電源投入/リセット時1回のみ実行):
void setup() {
// initialize the remote_box signal pin as an input
//(Arduinoにリモコンボックスからのピンが入力であることを伝える)
  pinMode(L_RED, INPUT);
  pinMode(L_WHITE, INPUT);
  pinMode(R_RED, INPUT);
  pinMode(R_WHITE, INPUT);
  Serial.begin(9600); //9600bpsでシリアルポートを開く
}
// main loop:
void loop() {
  if((digitalRead(L_RED) == HIGH)&(digitalRead(R_RED) == HIGH)){ //前進
    Serial.print('8');
    delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
  else if((digitalRead(L_RED) == HIGH)&(digitalRead(R_WHITE) == HIGH)){ //右超信地旋回
    Serial.print('6');
    delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
  else if((digitalRead(L_WHITE) == HIGH)&(digitalRead(R_RED) == HIGH)){ //左超信地旋回
    Serial.print('4');
    delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
   else if((digitalRead(L_WHITE) == HIGH)&(digitalRead(R_WHITE) == HIGH)){ //後進
   Serial.print('2');
   delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
   else if(digitalRead(L_RED) == HIGH){ //右前進緩旋回
   Serial.print('9');
   delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
   else if(digitalRead(R_RED) == HIGH){ //左前進緩旋回
   Serial.print('7');
   delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
   else if(digitalRead(L_WHITE) == HIGH){ //右後進緩旋回
   Serial.print('3');
   delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
   else if(digitalRead(R_WHITE) == HIGH){ //左後進緩旋回
   Serial.print('1');
   delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
  else{
    Serial.print('5'); //中立ニュートラル(Stop)
    delay(100);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
}




profile_picture_40×40.JPG
nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。