リモートコントロール(RC)戦車をつくる【XBeeコントロール送信機③】 [RC戦車]
XBeeコントロール送信機の送信回路部を作製します。
XBeeはリモコンボックスの電源回路から3.3Vを印加できるので、XBee用2.54mmピッチ変換基板("http://akizukidenshi.com/catalog/g/gP-05060/")の電圧レギュレータを取り除いて、直付けします。
Arduino Pro MiniとXBeeは24ピンDIPソケットで実装しています。
コネクタは電源とGNDで2ピン、ジョイスティックからの信号用を4ピンコネクタとしました。
ジョイスティックのレバーが中立(ニュートラル)の状態では、モータを停止状態にしてRC戦車をしっかりと停めたいわけですが、電気的にオープン(どこにも繋がっていない状態)のようですので、このままでは電圧がフラフラしてしまいます。そこで、Arduinoのジョイスティックからの入力信号ピンを33kΩの抵抗を介してGNDに接続しています(プルダウン抵抗)。これでジョイスティックがニュートラル時でも入力ピンの値をLOWに確定できます。
【基盤実装】
・Top view
・Bottom view
【回路図】
【組み立て】
【スケッチ】
XBeeはリモコンボックスの電源回路から3.3Vを印加できるので、XBee用2.54mmピッチ変換基板("http://akizukidenshi.com/catalog/g/gP-05060/")の電圧レギュレータを取り除いて、直付けします。
Arduino Pro MiniとXBeeは24ピンDIPソケットで実装しています。
コネクタは電源とGNDで2ピン、ジョイスティックからの信号用を4ピンコネクタとしました。
ジョイスティックのレバーが中立(ニュートラル)の状態では、モータを停止状態にしてRC戦車をしっかりと停めたいわけですが、電気的にオープン(どこにも繋がっていない状態)のようですので、このままでは電圧がフラフラしてしまいます。そこで、Arduinoのジョイスティックからの入力信号ピンを33kΩの抵抗を介してGNDに接続しています(プルダウン抵抗)。これでジョイスティックがニュートラル時でも入力ピンの値をLOWに確定できます。
【基盤実装】
・Top view
・Bottom view
【回路図】
【組み立て】
【スケッチ】
/******************************************************************************* 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 } }
2020-05-31 19:23
nice!(1)
コメント(0)
コメント 0