直流馬達
讓輪子轉起來,而且會倒車。 · ⏱ 約 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 |
停(煞車) |
兩支腳的高低決定轉的方向:
1digitalWrite(5, HIGH);2digitalWrite(6, LOW); // 正轉
方向靠的是電流從哪一邊流到哪一邊,所以要兩支腳。
三、速度:PWM
速度用 analogWrite:
1analogWrite(3, 200); // 0~255
和第 2 課的呼吸燈完全一樣,只是這次調的是轉速。
⚠️ 太小的值馬達不會轉,只會嗡嗡叫。
每顆馬達的「最低啟動值」不同,多半在 50~100 之間,要自己試。
四、組起來
照著打上這一段——正轉,中速:
1digitalWrite(5, HIGH);2digitalWrite(6, LOW);3analogWrite(3, 200);4delay(2000);5digitalWrite(5, LOW);6digitalWrite(6, HIGH);7delay(2000);
前進兩秒、後退兩秒。
⚠️ 直接從正轉切到反轉對馬達不好。 中間應該先停一下:
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
1analogWrite(3, 0);2delay(200);
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1void setup() {2 pinMode(5, OUTPUT);3 pinMode(6, OUTPUT);4 pinMode(3, OUTPUT);5}6 7void loop() {8 digitalWrite(5, HIGH);9 digitalWrite(6, LOW);10 analogWrite(3, 200);11 delay(2000);12 digitalWrite(5, LOW);13 digitalWrite(6, HIGH);14 delay(2000);15}
換你了
把「正轉」「反轉」「停」各寫成一個函式,就像第 7 課那樣。
void forward(int speed) { ... }
void backward(int speed) { ... }
void halt() { ... }
然後 loop 就只剩幾行看得懂的話。這才是函式真正的用處:
把「怎麼做」藏起來,讓「做什麼」看得清楚。
到編輯器做這一題:練習:把正轉/反轉/停各寫成一個函式
做一個
兩顆馬達,一顆正轉一顆反轉,車子就會原地打轉。做出「原地轉一圈之後停下來」。
🔴 「一圈」是多久?這一題沒有辦法用算的,只能試,而那就是重點。
⚠️ 電壓變低(電池用久了)之後,同一個時間轉的角度會不一樣。
到編輯器做這一題:做一個:原地轉一圈
這一課你做了什麼
- 你知道馬達為什麼要驅動板,以及 GND 為什麼要接在一起
- 你用兩支腳控制方向、一支腳控制速度
- 你發現這一課的語法你早就會了
如果卡住了
| 你看到 |
多半是因為 |
| 完全不動 |
驅動板沒接電池,或 ENA 那支腳沒送 PWM |
| 只有嗡嗡聲 |
PWM 值太小,推不動 |
| 方向反了 |
把馬達那兩條線對調(或把 IN1/IN2 對調) |
| 行為莫名其妙 |
兩邊的 GND 沒接在一起 |
| Arduino 一直重開 |
馬達從板子取電了。要用外接電源 |
在編輯器打開這一課 →