🤖
エンジくん
ロボットカーや扇風機に使われるDCモーター!サーボと違って「ぐるぐる回り続ける」のが特徴。L298Nモータードライバーを使って、スピードと向きを自由に変えよう!
1このレッスンで学ぶこと
- 🌀 DCモーター — 回り続けるモーターの特徴
- 🔌 L298Nドライバー — モーターを安全にArduinoで制御するIC
- 🔢 PWM(analogWrite) — 0〜255でスピードを変える
- 🔄 IN1・IN2 — HIGH/LOWの組み合わせで向きを切替
- 🎮 ファンシミュレーター — スライダーでモーターを仮想制御!
2用意するもの
3L298Nモータードライバーのしくみ
🔌 なぜモータードライバーが必要?
❌ 直接つなぐと…
モーターの大電流でArduinoのピンが壊れる!(ピンは最大40mA)
✅ L298Nを使うと…
外部電源でモーターを動かし、ArduinoはL298Nに信号だけ送ればOK!
📋 L298Nのピン説明
ENA
速さ制御ピン。
analogWrite(ENA, 0〜255)でスピード調整
IN1
向き制御ピン1。HIGH/LOWで方向を決める
IN2
向き制御ピン2。IN1と逆にすると逆転
OUT1/2
モーターの2本の線をつなぐ端子
VCC
モーター用電源(7〜12V。外部電源推奨)
⚙️ IN1・IN2の組み合わせ表
| IN1 | IN2 | モーターの動き |
|---|---|---|
| HIGH | LOW | 🔄 正転(前向き) |
| LOW | HIGH | 🔃 逆転(後ろ向き) |
| LOW / LOW または HIGH / HIGH | ⏹ 停止(ブレーキ) | |
4コードを見てみよう
// L298Nのピン定義
const int ENA = 3; // PWMピン(速さ)
const int IN1 = 4; // 方向制御1
const int IN2 = 5; // 方向制御2
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 正転・フルスピード(3秒)
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 255);
Serial.println("正転 フルスピード");
delay(3000);
// 正転・半分のスピード(3秒)
analogWrite(ENA, 128);
Serial.println("正転 ハーフスピード");
delay(3000);
// 停止(1秒)
analogWrite(ENA, 0);
Serial.println("停止");
delay(1000);
// 逆転・フルスピード(3秒)
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 255);
Serial.println("逆転 フルスピード");
delay(3000);
// 停止(1秒)
analogWrite(ENA, 0);
delay(1000);
}
💡 ENAにPWMを使うにはD3・D5・D6・D9・D10・D11などのPWM対応ピン(〜マーク付き)を使おう。デジタルの奇数ピンでも動きますが速さ調整はできません。
5回路のつなぎ方
⚠️ 外部電源(9V電池など)のGNDとArduinoのGNDを必ずつなぐこと!共通GNDがないと動作しません。
6実際につないでみよう!
7クイズに挑戦!
🤖
エンジくん
L298NのIN1・IN2の組み合わせとPWMでのスピード制御をしっかり覚えよう!
クイズを読み込み中…
8ファンシミュレーター 🌀
🤖
エンジくん
スライダーでスピードを変えて、方向ボタンで向きを切り替えてみよう!
9まとめ
- ✅ DCモーターは直接つながず、L298Nモータードライバーを使う
- ✅
analogWrite(ENA, 0〜255)でスピード制御(PWM) - ✅ IN1=HIGH・IN2=LOW → 正転 / IN1=LOW・IN2=HIGH → 逆転
- ✅ 外部電源のGNDとArduinoのGNDを必ず共通にする
- ✅ L298Nにはフライバックダイオードが内蔵されているので安全!