程式參考網址
https://resources.oreilly.com/examples/ ... est2wd.ino
https://youtu.be/GDJUuNZK3Uc
因arduino提供的電壓最高為5V,且僅能提供微量的電流(50mA),無法帶動兩顆馬達旋轉,(H橋)外接其他的電源
一般 TT 直流馬達供應電壓為 3~6V,耗電流約 150~250mA。
馬達模塊的 VCC 如果由 Arduino 的 VCC 供電,
因為馬達的耗電流很大,將會造成 Arduino 電流不足而當掉,
模塊的 VCC 應該另外由外接電源供電。
--------------------------------------------------------
電機擴充板L293D
● 2個直流5V伺服馬達(舵機)埠聯接到Arduino的高解析高精度的計時器-無抖動!
● 多達4個雙向直流馬達及4路PWM調速(大約0.5%的解析度)
● 多達2個步進馬達正反轉控制、單/雙步控制、交錯或微步及旋轉角度控制
● 4路H-橋:L293D晶片每路橋提供0.6A(峰值1.2A)電流並且帶有熱斷電保護,DC4.5V ~ DC16V
● 下拉電阻保證在上電時馬達保持停止狀態
● 大端子台使接線更容易(10AWG ~ 22AWG)
● 帶有Arduino重設定按鈕
● 2個大端子台連接外部電源,保證邏輯和馬達驅動電源分離
● 相容Mega、Diecimila、Duemilanove控制板
代碼: 選擇全部
const int LED_PIN=13; //const關鍵字代表常數
const int speed=60;//最大速度的百分比
#include <AFMotor.h>
AF_DCMotor Motor_Left(1, MOTOR12_1KHZ);//馬達1號
AF_DCMotor Motor_Right(2, MOTOR12_1KHZ);//馬達2號
int pwm;
void setup() {
Serial.begin(9600);
blinkNumber(8);//只有Arduino Leonardo
//將百分比轉換為脈衝寛度調變值0~255 請參考map()函式語法
pwm=map(speed, 0,100, 0,255);
Motor_Left.setSpeed(pwm);
Motor_Right.setSpeed(pwm);
}
void loop() {
Serial.println("rotate cw");
Motor_Left.run(FORWARD);
Motor_Right.run(BACKWARD);
delay(5000);
Serial.println("rotate ccw");
Motor_Left.run(RELEASE);
Motor_Right.run(RELEASE);
delay(5000);
}
//透過內建LED閃爍來表示數字函數
void blinkNumber( byte number)
{
pinMode(LED_PIN,OUTPUT);
while(number--){
digitalWrite(LED_PIN, HIGH); delay(100);
digitalWrite(LED_PIN, LOW); delay(400);
}
}