Arduino ควบคุม DC Motor ด้วย L298
nextbackseo@gmail.com | Posted on |

อุปกรณ์
- Arduino (เช่น Arduino Uno)
- L298N Motor Driver Module
- DC Motor 2 ตัว
- แหล่งจ่ายไฟสำหรับ DC Motor (แบตเตอรี่หรือ power supply)
- สาย Jumper
การเชื่อมต่อ
- เชื่อมต่อ Motor 1 กับช่อง OUT1 และ OUT2 ของ L298N Motor Driver Module
- เชื่อมต่อ Motor 2 กับช่อง OUT3 และ OUT4 ของ L298N Motor Driver Module
- เชื่อมต่อแหล่งจ่ายไฟสำหรับ DC Motor กับช่อง VCC และ GND ของ L298N Motor Driver Module
- เชื่อมต่อขา ENA ของ L298N Motor Driver Module กับขา PWM บน Arduino (เช่น ขา 10) สำหรับ Motor 1
- เชื่อมต่อขา ENB ของ L298N Motor Driver Module กับขา PWM บน Arduino (เช่น ขา 11) สำหรับ Motor 2
- เชื่อมต่อขา IN1 และ IN2 ของ L298N Motor Driver Module กับขา Digital บน Arduino (เช่น ขา 8 และ 9) สำหรับ Motor 1
- เชื่อมต่อขา IN3 และ IN4 ของ L298N Motor Driver Module กับขา Digital บน Arduino (เช่น ขา 12 และ 13) สำหรับ Motor 2
- เชื่อมต่อขา GND ของ Arduino กับ GND ของ L298N Motor Driver Module
โค้ดตัวอย่าง
// กำหนดขาของ Arduino ที่เชื่อมต่อกับ L298N Motor Driver Module สำหรับ Motor 1
const int enA = 10;
const int in1 = 8;
const int in2 = 9;
// กำหนดขาของ Arduino ที่เชื่อมต่อกับ L298N Motor Driver Module สำหรับ Motor 2
const int enB = 11;
const int in3 = 12;
const int in4 = 13;
void setup() {
// กำหนดขา enA และ enB เป็นขา OUTPUT
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
// กำหนดขา in1, in2, in3 และ in4 เป็นขา OUTPUT
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// หมุนมอเตอร์ 1 ไปข้างหน้า
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 255); // ความเร็วสูงสุด
// หมุนมอเตอร์ 2 ไปข้างหน้า
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 255); // ความเร็วสูงสุด
delay(2000); // หมุนเป็นเวลา 2 วินาที
// หยุดมอเตอร์ 1 และ 2
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 0); // หยุด
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enB, 0); // หยุด
delay(1000); // หยุดเป็นเวลา 1 วินาที
// หมุนมอเตอร์ 1 ย้อนกลับ
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 255); // ความเร็วสูงสุด
// หมุนมอเตอร์ 2 ย้อนกลับ
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 255); // ความเร็วสูงสุด
delay(2000); // หมุนเป็นเวลา 2 วินาที
// หยุดมอเตอร์ 1 และ 2
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 0); // หยุด
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enB, 0); // หยุด
delay(1000); // หยุดเป็นเวลา 1 วินาที
}
โค้ดนี้จะทำให้มอเตอร์ทั้งสองหมุนไปข้างหน้าเป็นเวลา 2 วินาที หยุด 1 วินาที จากนั้นหมุนย้อนกลับเป็นเวลา 2 วินาที และหยุด 1 วินาที ในลูปซ้ำๆ คุณสามารถปรับความเร็วของมอเตอร์โดยการเปลี่ยนค่าของ analogWrite(enA, value)
และ analogWrite(enB, value)
ซึ่ง value
มีค่าอยู่ระหว่าง 0 ถึง 255 (0 คือหยุดและ 255 คือความเร็วสูงสุด)
หมายเหตุ
ตรวจสอบการเชื่อมต่อให้ถูกต้องและใช้แหล่งจ่ายไฟที่เหมาะสมกับมอเตอร์ของคุณเพื่อป้องกันความเสียหายต่ออุปกรณ์
ใส่ความเห็น