Bộ xe dò line arduino
Thương hiệu : Khác
450,000đ
Sản phẩm bao gồm
1 Khung xe
1 mạch điều khiển động cơ L298N
1 mạch arduino chip dán R3
2 cảm biến dò line
1 đế pin
2 viên pin 18650
Dây cắm jumper kết nối

Cách nối dây nguồn pin vào L298 , arduino, cảm biến dò line đơn ,động cơ .
Nối cực dương của nguồn pin vào +12V của L298N
Nối chung cực âm của nguồn pin ,GND của Arduino , GND của 3 cảm biến đơn dò line vào GND của L298N.
Nối chung cực dương Vin của Arduino, Vin của 3 cảm biến dò line vào +5V của L298N .
2. Kết nối L298N ↔ Arduino

| L298N | Arduino Uno |
|---|---|
| IN1 | D8 |
| IN2 | D9 |
| IN3 | D10 |
| IN4 | D11 |
| ENA | D5 (PWM) |
| ENB | D6 (PWM) |
| OUT1/OUT2 | Motor trái |
| OUT3/OUT4 | Motor phải |
3. Cảm biến dò line (IR Sensor)
| Cảm biến | Digital → Arduino | ||
|---|---|---|---|
| Trái (LS) | D2 | ||
| Giữa (MS) | D3 | ||
| Phải (RS) | D4 |
Code:
// --- KHAI BÁO CHÂN ---
#define LS 2 // Left Sensor
#define MS 3 // Middle Sensor
#define RS 4 // Right Sensor
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#define ENA 5 // PWM Motor A (trái)
#define ENB 6 // PWM Motor B (phải)
// --- TỐC ĐỘ ĐỘNG CƠ ---
int baseSpeed = 150; // tốc độ chuẩn (0-255)
int turnSpeed = 120; // tốc độ khi rẽ
void setup() {
pinMode(LS, INPUT);
pinMode(MS, INPUT);
pinMode(RS, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
stopMotor();
}
// --- CÁC HÀM ĐIỀU KHIỂN ---
void forward() {
analogWrite(ENA, baseSpeed);
analogWrite(ENB, baseSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void left() {
analogWrite(ENA, turnSpeed);
analogWrite(ENB, turnSpeed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void right() {
analogWrite(ENA, turnSpeed);
analogWrite(ENB, turnSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void stopMotor() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
// --- VÒNG LẶP CHÍNH ---
void loop() {
int ls = digitalRead(LS);
int ms = digitalRead(MS);
int rs = digitalRead(RS);
// cảm biến ra LOW khi gặp vạch đen
if (ms == LOW && ls == HIGH && rs == HIGH) {
forward(); // đi thẳng
}
else if (ls == LOW && ms == HIGH) {
left(); // rẽ trái
}
else if (rs == LOW && ms == HIGH) {
right(); // rẽ phải
}
else if (ls == LOW && ms == LOW && rs == LOW) {
forward(); // trường hợp cả 3 thấy line => đi thẳng
}
else {
stopMotor(); // mất line => dừng
}
}

