直流馬達
讓輪子轉起來,而且會倒車。 · ⏱ 約 30 分鐘
你會學到三件事
- 為什麼馬達不能直接接在板子的腳上
- 兩支腳決定方向,一支腳決定速度
- 這一課沒有新語法——它是第 1 課 + 第 2 課的組合
開始之前
接線(L298N 驅動板):IN1 接 5 號腳、IN2 接 6 號腳、
ENA 接 3 號腳(要有 ~ 的 PWM 腳)、馬達接 OUT1/OUT2、
驅動板另外接電池。
一、⚠️ 馬達不能直接接板子
Arduino 一支腳最多送得出 40 毫安培。
一顆小馬達啟動的瞬間要 幾百到上千毫安培。
直接接的後果不是「轉不動」,是把那支腳燒掉。
所以中間要一塊驅動板——板子送出「訊號」,驅動板用電池的電推馬達。
Arduino ──訊號──▶ L298N ──大電流──▶ 馬達
(腦) (手) (腿)
▲
電池
⚠️ 驅動板和 Arduino 的 GND 要接在一起。 不接的話兩邊沒有共同的
「零點」,訊號會變得莫名其妙——而這是最難查的一種問題。
二、方向:兩支腳的四種組合
| IN1 |
IN2 |
馬達 |
HIGH |
LOW |
正轉 |
LOW |
HIGH |
反轉 |
LOW |
LOW |
停(滑行) |
HIGH |
HIGH |
停(煞車) |
digitalWrite(5, HIGH);
digitalWrite(6, LOW); // 正轉
方向靠的是電流從哪一邊流到哪一邊,所以要兩支腳。
三、速度:PWM
analogWrite(3, 200); // 0~255
和第 2 課的呼吸燈完全一樣的東西——只是這次調的是轉速。
⚠️ 太小的值馬達不會轉,只會嗡嗡叫。
每顆馬達的「最低啟動值」不同,多半在 50~100 之間,要自己試。
四、組起來
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
analogWrite(3, 200);
delay(2000);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(2000);
前進兩秒、後退兩秒。
⚠️ 直接從正轉切到反轉對馬達不好。 中間應該先停一下:
analogWrite(3, 0);
delay(200);
完成的樣子
void setup() {
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(3, OUTPUT);
}
void loop() {
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
analogWrite(3, 200);
delay(2000);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(2000);
}
換你了
把「正轉」「反轉」「停」各寫成一個函式——就像第 7 課那樣。
void forward(int speed) { ... }
void backward(int speed) { ... }
void halt() { ... }
然後 loop 就只剩幾行看得懂的話。這才是函式真正的用處:
把「怎麼做」藏起來,讓「做什麼」看得清楚。
這一課你做了什麼
- 你知道馬達為什麼要驅動板,以及 GND 為什麼要接在一起
- 你用兩支腳控制方向、一支腳控制速度
- 你發現這一課的語法你早就會了
如果卡住了
| 你看到 |
多半是因為 |
| 完全不動 |
驅動板沒接電池,或 ENA 那支腳沒送 PWM |
| 只有嗡嗡聲 |
PWM 值太小,推不動 |
| 方向反了 |
把馬達那兩條線對調(或把 IN1/IN2 對調) |
| 行為莫名其妙 |
兩邊的 GND 沒接在一起 |
| Arduino 一直重開 |
馬達從板子取電了。要用外接電源 |
在編輯器打開這一課 →