Top > MBeeDuinoスケッチ

モータードライバー BD6211

マニアル http://akizukidenshi.com/download/ds/rohm/bd621x-j.pdf

moter.jpg

接続

出力FIN ( 正転 )RIN ( 逆転 )
OUT135
OUT269
OUT31011

動作モード

モーターFINRIN
スタンバイLL
正転HL
逆転LH
ブレーキHH

サンプルスケッチ

LEDピコピコ

//Arduinoのサンプルより
void setup() {
  pinMode(13, OUTPUT);     
}
void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

モータ正転

モータの正逆転にはanalogWriteかdigitalWrite関数を使います。
analogWrite関数を使った場合に出力されるPWM周波数は500Hz程度で非推奨の動作になります。(試した限りでは壊れることはありませんでした。)

void setup() {
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(13, OUTPUT);//LED
  //No1
  analogWrite(3,255);
  analogWrite(5,0);
  //No2
  analogWrite(6,255);
  analogWrite(9,0);
  //No3
  analogWrite(10,255);
  analogWrite(11,0);
}
void loop() {
}

センサーピンとモータを連動

ラインとレースカー

ラジコンカー サンプルスケッチ

ターミナルソフトからテンキーで操作します

int ledPin = 13;
int var;
void setup() {                
  // initialize the digital pin as an output.
  Serial.begin(9600);	// 9600bpsでポートを開く
  pinMode(13, OUTPUT);      // Pin 13 has an LED
  pinMode(3, OUTPUT);       // Pin 3 has an F/R MORTER 
  pinMode(5, OUTPUT);       // Pin 5 has an F/R MORTER
  pinMode(6, OUTPUT);       // Pin 6 has an F/R MORTER
  pinMode(9, OUTPUT);       // Pin 9 has an F/R MORTER  
}

void loop() {
  var = Serial.read();
  if(var>0){
  Serial.print(var,DEC);
  digitalWrite(ledPin, LOW);   // set the LED on
  switch (var) {
  case 52:                   // 4キー
      digitalWrite(6, HIGH);    // Moter Right
      digitalWrite(9, LOW);
      break;
  case 53:         // 5キー   
      digitalWrite(6, LOW);      // Center
      digitalWrite(9, LOW); 
      break;
  case 54:         // 6キー
      digitalWrite(6, LOW);      // Left
      digitalWrite(9, HIGH);
      break;
  case 50:         // 2キー 
      digitalWrite(3, HIGH);      // 後進
      digitalWrite(5, LOW); 
      break;
  case 56:         // 8キー
      digitalWrite(3, LOW);      // 前進
      digitalWrite(5, HIGH);
      break;
  default:         // 他キー
      digitalWrite(6, LOW);      // スタンバイ
      digitalWrite(9, LOW); 
      digitalWrite(3, LOW);      
      digitalWrite(5, LOW); 
  } 
 }
  else{
  var =0;
  digitalWrite(ledPin, HIGH);   // set the LED on
  }
}

C#からコントロールするサンプル(モータ1つまで)

MBeeDuinoCshapeSample1.png
C#からMBeeDuinoをコントロールするサンプルです。
キーボード操作に対応したバージョンです。
(右左がおかしいような気がしますが、スケッチに合わせてあります)

ScratchからXBee経由でMBeeDuinoをコントロールするためのスケッチ

なのぼ〜ど用のスケッチ、ファイルを編集してMBeeDuino用に書き換えました。 (作者の方、大変助かりました。この場を借りてお礼申し上げます。)

導入するファイル http://dl.dropbox.com/u/2326312/MBeeDuinoScratchVer1.1.zip 導入方法

NanoBoardAGWithMotor.changes
NanoBoardAGWithMotor.image

このファイルをScratchをインストールしたフォルダに入れる。

NanoBoardAGWithMotor.pde

このファイルをArduinoIDE(0023)でMBeeDuinoに転送する。
XBeeを設定して38400bpsでお互い通信できる状態にしておく。(X-CTUで設定)
XBeeをMBeeDuino,XBeeエクスプローラUSBに載せる。
各種モータ、バッテリーをMBeeDuinoに接続して使える状態にする。
ScratchにNanoBoardAGWithMotor.changesをドラックドロップして起動。
ファイル選択画面が出たらNanoBoardAGWithMotor.imageを選択。
メニューから編集ボタンをクリックして「モータのブロックを表示する。」を選択
調べるメニューからスライダーの項目を右クリックし「ScratchBoard監視板を表示」をクリック
表示された画面を右クリックしたXBeeエクスプローラUSBがつながっているCOMポートを選択。
準備完了!

デュアルショック2と接続(デジタルモード用)

#define DAT_PIN 17
#define CLK_PIN 16
#define SEL_PIN 15
#define CMD_PIN 14
byte padData[4];
void setup() {
  pinMode(13, OUTPUT);
  pinMode(CLK_PIN, OUTPUT);
  pinMode(SEL_PIN, OUTPUT);
  pinMode(CMD_PIN, OUTPUT);
  pinMode(DAT_PIN, INPUT);
  Serial.begin(57600);
}
byte spiReadWrite(byte data);
void loop() {
  digitalWrite(SEL_PIN,LOW);
  delayMicroseconds(50);
  spiReadWrite(0x01);
  padData[0] = spiReadWrite(0x42);
  padData[1] = spiReadWrite(0x00);//押した時、対応するビットが0になる。
  padData[2] = spiReadWrite(0x00);//左 | 下 | 右 | 上 |スタート|  1 |  1 |セレクト
  padData[3] = spiReadWrite(0x00);//□ | × | ○ | △ | R1 | L1 | R2 | L2
  delayMicroseconds(50);
  digitalWrite(SEL_PIN,HIGH);
  Serial.print(padData[0],HEX);
  Serial.print(padData[1],HEX);
  Serial.print(padData[2],HEX);
  Serial.println(padData[3],HEX);
  if(padData[0] == 0x41){
    digitalWrite(13,HIGH);//接続成功
  }
  else{
    digitalWrite(13,LOW);//接続失敗
  }
  delay(16);
} 

byte spiReadWrite(byte data){
  byte i;
  for(i = 0;i < 8;i++){
    digitalWrite(CLK_PIN,LOW);
    digitalWrite(CMD_PIN,(data & 1)?HIGH:LOW);
    data = data >> 1;
    delayMicroseconds(10);
    digitalWrite(CLK_PIN,HIGH);
    if(digitalRead(DAT_PIN)){
      data |= 0x80;
    }
    else{
      data &= 0x7F;
    }
    delayMicroseconds(10);
  }
  delayMicroseconds(50);
  return data;
}
  • 回路図
    MBeeDuinoとデュアルショック2を接続.PNG
    ※高速に通信する場合は抵抗を1kΩ程度に変更してください。ダイオードは小信号用のショットキーダイオードが向いていますが、普通のダイオードでも動きます。

X-CTU(XBee用の設定ツール)のプロファイル

XBeeSeries1用の設定データ

PC側の設定ファイルです。
MBeeDuino側の設定ファイルです。

XBeeSeries2用の設定データ

@gingaxx様がXBeeSeries2向け設定方法を解説してくださったのでそちらをご参考にお願いします。

http://www31.atwiki.jp/gingax/pages/68.html


添付ファイル: fileMBeeDuinoとデュアルショック2を接続.PNG 212件 [詳細] fileMBeeDuinoSample2.zip 349件 [詳細] fileMBeeDuinoSample1(修正版).zip 214件 [詳細] fileMBeeDuinoCshapeSample1.png 246件 [詳細] fileMBeeDuinoPC_S1.pro 324件 [詳細] fileMBeeDuinoS1.pro 287件 [詳細] filemoter.jpg 255件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-03-20 (火) 11:31:00 (2012d)