# TB6612FNG 直流馬達驅動板

> ### TB6612FNG 直流馬達驅動板
> * 內部包含兩組H橋式電路
> * 可驅動和控制兩個小型直流馬達,或者一個雙極性步進馬達
>
> 函式庫:
> - [SparkFun_TB6612FNG_Arduino程式庫](https://github.com/sparkfun/SparkFun_TB6612FNG_Arduino_Library)
>
## 簡單實作
### 接腳說明:

## 程式碼:
``` 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)
煞車。將兩個輸入都設成高電位來停止馬達。