海外のモータードライバと言えば L293D が乗っていることが多いのですが、ぼちぼちと SN754410NE に切り替えるのか?と話題があって。こっちのほうは秋月電子で150円で買えます。
それとは別に、TB6612FNG を買ってみたのでお試しとして。手元にあるのはスイッチサイエンスのものではなくて互換品で 3$ 程度で買っています。
ブレッドボードで配線
それぞれのモーターに対して IN/OUTが2本ずつとPWM線があるので、結構本数が多いのが難点ですね。まあ、Arduino Tank を動かだけの2個のモーターならばいいけど、多脚ロボットにしてそれぞれの足にモーターが付いている、ということになると、ちょっと考えないといけないかも。I2C 経由にすればよいのですが。いずれ ロジコマ作ってみる【ぼーだー1】 ‐ ニコニコ動画:GINZA を参考にして作ってみたいところ。
回路図
無線化もあわせると、こんな感じ。
ブレッドボードに配線すると、こんな感じで動きます。

実験用のコード
まだ Bluetooth のコードは入れていないので後で。
#include <Wire.h>
const int motorA1 = 8; // IN1
const int motorA2 = 9; // IN2
const int motorAp = 10; //
const int motorB1 = 7; // IN1
const int motorB2 = 6; // IN2
const int motorBp = 5; //
const int STBY = 11;
void setup() {
// put your setup code here, to run once:
pinMode( motorA1, OUTPUT );
pinMode( motorA2, OUTPUT );
pinMode( motorAp, OUTPUT );
pinMode( motorB1, OUTPUT );
pinMode( motorB2, OUTPUT );
pinMode( motorBp, OUTPUT );
pinMode( STBY, OUTPUT );
digitalWrite( motorA1, LOW );
digitalWrite( motorA2, LOW );
digitalWrite( motorAp, LOW );
digitalWrite( motorB1, LOW );
digitalWrite( motorB2, LOW );
digitalWrite( motorBp, LOW );
digitalWrite( STBY, HIGH );
Serial.begin(9600);
Serial.println( "Motor Standby" );
delay( 1000 );
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("motorA forward");
digitalWrite( motorAp, HIGH );
digitalWrite( motorA1, HIGH );
digitalWrite( motorA2, LOW );
delay( 3000 );
Serial.println("motorA stop");
digitalWrite( motorAp, LOW );
delay( 1000 );
Serial.println("motorA back");
digitalWrite( motorAp, HIGH );
digitalWrite( motorA1, LOW );
digitalWrite( motorA2, HIGH );
delay( 3000 );
Serial.println("motorA stop");
digitalWrite( motorAp, LOW );
delay( 1000 );
Serial.println("motorB forward");
digitalWrite( motorBp, HIGH );
digitalWrite( motorB1, HIGH );
digitalWrite( motorB2, LOW );
delay( 3000 );
Serial.println("motorB stop");
digitalWrite( motorBp, LOW );
delay( 1000 );
Serial.println("motorB back");
digitalWrite( motorBp, HIGH );
digitalWrite( motorB1, LOW );
digitalWrite( motorB2, HIGH );
delay( 3000 );
Serial.println("motorB stop");
digitalWrite( motorBp, LOW );
delay( 1000 );
}
