朱雀技研工房さんのモータをいじる -その2.

前回の続きで,モータコントローラの接続先をPCからArduinoに代えてみる.

取説を読むと,接続は以下の通り.

Screen Shot 2017-12-13 at 15.38.56

Fritzing久々に使おう.

pololu_smc_bb

(※モータコントローラ・バッテリーは素材がなかったので実物とは一部異なります.)

実物はこんな感じ↓

S__4423697

取説にサンプルコードが載ってた.
以下のようにコードを,Arduinoに書き込む.

#include <SoftwareSerial.h>
#define rxPin 3 // pin 3 → TXへ接続 (単純にモータを回すだけなら使わなくてok)
#define txPin 4 // pin 4 → RXへ接続
SoftwareSerial smcSerial = SoftwareSerial(rxPin, txPin);

// モータの動作を許可するために必要なコマンド
// コントローラの再起動時やエラーが発生時に呼び出される必要がある
void exitSafeStart()
{
 smcSerial.write(0x83);
}

// スピード設定は -3200 〜 3200
void setMotorSpeed(int speed)
{
 if (speed < 0){
   smcSerial.write(0x86); // モータを逆転
   speed = -speed; // スピードを反転
 }else{
   smcSerial.write(0x85); // モータを正転
 }
 smcSerial.write(speed & 0x1F);
 smcSerial.write(speed >> 5);
}

void setup()
{
 // ボーレート19.2kbpsのソフトウェアシリアルオブジェクトを初期化する.
 smcSerial.begin(19200);

 // シンプルモーターコントローラは少なくとも1 ms以上稼働している必要があるため,
 // シリアルデータを送信する前に、ここで5msのディレイをはさむ.
 delay(5);

 // シンプルモーターコントローラが自動ボー検出を有効にしている場合は、
 // 最初に0xAA(10進数で170)を送信してボーレートを知る必要がある.
 smcSerial.write(0xAA); // ボー・インジケータ・バイトを送信
 
 // 次に、exitSafeStartコマンドを送信する必要がある.
 // これでセーフスタートの妨害をクリアし、モータを動作させる.
 exitSafeStart(); // セーフスタートの妨害をクリアし,モータを動作
 
void loop()
{
 setMotorSpeed(1600); // 3200がmaxスピードなので,だいたい半分ぐらいで正転
 delay(1000);
 setMotorSpeed(-1600); // 同じくmaxの半分のスピードでモータを逆転
 delay(1000);
}

動いた!終わり!

〜朱雀技研工房さんのモータをいじる  kako-2VPDl6OdFazfw1uB 完〜

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

eleven + seventeen =