1. Giới thiệu
Ở Bài 1, chúng ta điều khiển 1 đèn LED.
Ở Bài 2, chúng ta đã biết cách:
Đọc nút nhấn → Arduino xử lý → điều khiển LED
Sang Bài 3, chúng ta bắt đầu xây dựng một mô hình gần với tự động hóa thực tế hơn:
🔴 Đèn đỏ → 🟢 Đèn xanh → 🟡 Đèn vàng → lặp lại.
Arduino sẽ tự động điều khiển 3 đèn LED theo đúng trình tự và thời gian đã lập trình.
Đây chính là tư duy rất quan trọng trong lập trình điều khiển:
THIẾT BỊ → TRÌNH TỰ → THỜI GIAN → LẶP LẠI
2. Mục tiêu bài học
Sau bài này, người học sẽ biết:
- Điều khiển nhiều thiết bị đầu ra cùng lúc.
- Sử dụng nhiều chân Digital của Arduino.
-
Kết hợp nhiều lệnh
digitalWrite(). -
Tạo trình tự hoạt động bằng
delay(). - Hiểu cách Arduino thực hiện một chu trình tự động.
- Biết cách thay đổi thời gian hoạt động của từng đèn.
- Bước đầu tư duy thiết kế một hệ thống điều khiển thực tế.
3. Linh kiện cần chuẩn bị
♻️ Linh kiện đã có từ Bài 1
| Linh kiện | Số lượng |
|---|---|
| Arduino Uno | 1 |
| Breadboard | 1 |
| Dây cắm jumper | Có sẵn |
| Cáp USB | 1 |
| Linh kiện | Số lượng |
|---|---|
| LED đỏ | 1 |
| LED vàng | 1 |
| LED xanh | 1 |
| Điện trở 220Ω–330Ω | 3 |
Chỉ cần mua bộ nâng cấp Bài 3.
4. Nguyên lý hoạt động
Chúng ta sử dụng 3 chân Digital:
Arduino
│
├── D8 → 🔴 LED ĐỎ
│
├── D9 → 🟡 LED VÀNG
│
└── D10 → 🟢 LED XANH
Arduino sẽ thực hiện:
┌───────────────┐
│ 🔴 ĐỎ 5s │
└───────┬───────┘
↓
┌───────────────┐
│ 🟢 XANH 5s │
└───────┬───────┘
↓
┌───────────────┐
│ 🟡 VÀNG 2s │
└───────┬───────┘
↓
Lặp lại
↺
5. Đấu dây
Mỗi LED cần một điện trở riêng.
🔴 LED đỏ
Arduino D8
│
[220Ω]
│
LED ĐỎ
│
GND
🟡 LED vàng
Sơ đồ tổng quát
ARDUINO UNO
┌───────────────┐
│ │
D8 ─── [220Ω] ───► 🔴 LED ───────┤
│ │
D9 ─── [220Ω] ───► 🟡 LED ───────┤
│ │
D10 ── [220Ω] ───► 🟢 LED ───────┤
│ │
GND ─────────────► GND │
└───────────────┘
⚠️ Lưu ý
LED có hai chân:
- Chân dài → Anode (+)
- Chân ngắn → Cathode (-)
Chân ngắn của các LED nối về GND.
Không được bỏ điện trở hạn dòng cho LED.
6. Lập trình Arduino
Đây là chương trình đầu tiên của chúng ta có nhiều đầu ra hoạt động theo trình tự.
const int LED_RED = 8;
const int LED_YELLOW = 9;
const int LED_GREEN = 10;
void setup()
{
pinMode(LED_RED, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
}
void loop()
{
// =========================
// ĐÈN ĐỎ
// =========================
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_GREEN, LOW);
delay(5000);
// =========================
// ĐÈN XANH
// =========================
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_GREEN, HIGH);
delay(5000);
// =========================
// ĐÈN VÀNG
// =========================
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YELLOW, HIGH);
digitalWrite(LED_GREEN, LOW);
delay(2000);
}
Arduino Code
const int LED_RED = 8;
const int LED_YELLOW = 9;
const int LED_GREEN = 10;
void setup()
{
pinMode(LED_RED, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
}
void loop()
{
// =========================
// ĐÈN ĐỎ
// =========================
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_GREEN, LOW);
delay(5000);
// =========================
// ĐÈN XANH
// =========================
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_GREEN, HIGH);
delay(5000);
// =========================
// ĐÈN VÀNG
// =========================
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YELLOW, HIGH);
digitalWrite(LED_GREEN, LOW);
delay(2000);
}
7. Chương trình hoạt động như thế nào?
Arduino bắt đầu tại:
digitalWrite(LED_RED, HIGH);
→ Đèn đỏ sáng.
Sau đó:
delay(5000);
Arduino chờ 5 giây.
Tiếp theo:
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
→ Đèn đỏ tắt.
→ Đèn xanh sáng.
Arduino tiếp tục chờ 5 giây.
Sau đó chuyển sang:
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_YELLOW, HIGH);
→ Đèn xanh tắt.
→ Đèn vàng sáng.
Sau 2 giây, hàm loop() chạy lại từ đầu.
Vì vậy chu trình sẽ liên tục:
ĐỎ → XANH → VÀNG → ĐỎ → XANH → VÀNG...
8. Thực hành
Sau khi nạp chương trình, hãy quan sát:
Lần 1
🔴 Đỏ sáng 5 giây
Lần 2
🟢 Xanh sáng 5 giây
Lần 3
🟡 Vàng sáng 2 giây
Sau đó quay lại:
🔴 → 🟢 → 🟡 → 🔴...
9. Bài tập thực hành
Đây là phần rất quan trọng vì người học bắt đầu tự thay đổi chương trình, chứ không chỉ copy code.
🟢 Bài tập 3A – Thay đổi thời gian
Hãy sửa chương trình thành:
🔴 Đỏ : 10 giây
🟢 Xanh : 8 giây
🟡 Vàng : 3 giây
Người học chỉ cần tìm các dòng:
delay(5000);
và
delay(2000);
rồi thay đổi giá trị.
🟡 Bài tập 3B – Đèn vàng nhấp nháy
Thay vì sáng vàng liên tục 2 giây, hãy lập trình:
🟡 Sáng 0,5 giây
⬛ Tắt 0,5 giây
🟡 Sáng 0,5 giây
⬛ Tắt 0,5 giây
Gợi ý:
digitalWrite(LED_YELLOW, HIGH);
delay(500);
digitalWrite(LED_YELLOW, LOW);
delay(500);
🔴 Bài tập 3C – Thử thách
Hãy lập trình:
🔴 Đỏ 5 giây
🟢 Xanh 5 giây
🟡 Vàng nhấp nháy 3 lần
🔴 Đỏ 5 giây
...
💡 Đây là bước đầu tiên để người học biết ghép nhiều hành động thành một quy trình tự động.
10. Kiến thức quan trọng rút ra
BÀI 1
Arduino → LED
↓
Điều khiển OUTPUT
BÀI 2
Nút nhấn → Arduino → LED
↓
INPUT → PROCESS → OUTPUT
BÀI 3
Arduino → LED Đỏ
→ LED Vàng
→ LED Xanh
↓
TRÌNH TỰ + THỜI GIAN
↓
TỰ ĐỘNG HÓA
Đây chính là nền tảng để sau này chuyển sang:
- cảm biến;relay;động cơ;servo;LCD;đo nhiệt độ;cảnh báo;điều khiển thiết bị điện;
- hệ thống nhà thông minh.
🛒 BỘ LINH KIỆN THỰC HÀNH ARDUINO – BÀI 3
🚦 MÔ HÌNH ĐÈN GIAO THÔNG TỰ ĐỘNG
Bạn đã có bộ Arduino cơ bản từ Bài 1 và Bài 2?
Không cần mua lại! Bài 3 chỉ cần bổ sung các linh kiện mới.
LED đỏ
1 chiếc
LED vàng
1 chiếc
LED xanh
1 chiếc
Điện trở
3 chiếc
🎓 Kèm hướng dẫn thực hành: sơ đồ đấu dây + chương trình Arduino + bài tập nâng cấp.
0 nhận xét Blogger 0 Facebook