# TB6612FNG 直流馬達驅動板 ![](https://i.imgur.com/PUJw1tp.png) > ### TB6612FNG 直流馬達驅動板 > * 內部包含兩組H橋式電路 > * 可驅動和控制兩個小型直流馬達,或者一個雙極性步進馬達 > > 函式庫: > - [SparkFun_TB6612FNG_Arduino程式庫](https://github.com/sparkfun/SparkFun_TB6612FNG_Arduino_Library) > ## 簡單實作 ### 接腳說明: ![](https://i.imgur.com/5t1SmSV.png) ## 程式碼: ``` c = #include <SparkFun_TB6612.h> #define AIN1 8 // 控制輸入A1 #define AIN2 7 // 控制輸入A2 #define BIN1 10 // 控制輸入B1 #define BIN2 9 // 控制輸入B2 #define PWMA 6 #define PWMB 5 #define STBY 11 // 「待機」控制接Arduino的11腳 const int offsetA = 1; // 正反轉設定A,可能值為1或-1。 const int offsetB = 1; // 正反轉設定B,可能值為1或-1。 Motor motor1 = Motor(AIN1, AIN2, PWMA, offsetA, STBY); Motor motor2 = Motor(BIN1, BIN2, PWMB, offsetB, STBY); void setup() { // 這裡沒有程式碼 } void loop() { motor1.drive(255,1000); // 驅動馬達1全速正轉1秒 motor1.drive(-255,1000); // 驅動馬達1全速反轉1秒 motor1.brake(); // 停止馬達1 delay(1000); motor2.drive(255,1000); // 驅動馬達2全速正轉1秒 motor2.drive(-255,1000); // 驅動馬達2全速反轉1秒 motor2.brake(); // 停止馬達2 delay(1000); forward(motor1, motor2, 150); // 驅動雙馬達半速前進 delay(1000); // 持續1秒 back(motor1, motor2, -150); // 驅動雙馬達半速前進 delay(1000); brake(motor1, motor2); // 停止兩個馬達 delay(1000); left(motor1, motor2, 100); // 左轉 delay(1000); right(motor1, motor2, 100); // 右轉 delay(1000); brake(motor1, motor2); // 停止兩個馬達 delay(1000); } ``` > 函式庫: > * drive(速度, 持續時間) 驅動一個馬達。「速度」是介於-255~255的整數值,數字越大,轉速越高,負值代表反轉。「持續時間」是選擇性參數,用於指定轉動時間。 > > * standby() 將晶片設定成待機模式。執行任何驅動馬達的指令(drive, forward, back, left和right),將停止待機模式。 > * forward(馬達物件1, 馬達物件2, 速度) 驅使兩個馬達前進。若執行此指令的結果是「後退」,請修改offset值;速度值介於-255~255整數,若「速度」值為負,馬達也會反轉:若忽略「速度」值,代表採用程式庫預設的DEFAULTSPEED值(255)。 > * back(馬達物件1, 馬達物件2, 速度) 驅使兩個馬達後退。若執行此指令的結果是「前進」,請修改offset值。 > * left(馬達物件1, 馬達物件2, 速度) 驅使左、右馬達分別反轉和正轉,達成左轉效果。 > * right(馬達物件1, 馬達物件2, 速度) 驅使左、右馬達分別正轉和反轉,達成右轉效果。 > * brake(馬達物件1, 馬達物件2) 煞車。將兩個輸入都設成高電位來停止馬達。