ĐIỀU KHIỂN LED 7 ĐOẠN
Chào các bạn!
Hôm nay chúng ta cùng thực hành Bài 9-10: Hiển thị số bằng LED 7 đoạn (7-segment display) trong môi trường mô phỏng Tinkercad.
🧠 MỤC TIÊU BÀI HỌC
- Làm quen với linh kiện LED 7 đoạn loại cathode chung
- Kết nối 7 chân điều khiển của LED 7 đoạn với Arduino
- Lập trình để hiển thị các số từ 0 đến 9
🛠️ PHẦN 1: CHUẨN BỊ LINH KIỆN
🔧 Truy cập https://www.tinkercad.com. Trong Tinkercad, bạn hãy kéo vào các linh kiện sau:
- Arduino UNO
- 1 LED 7 đoạn (common cathode – CC)
- 7 điện trở 220Ω (để giới hạn dòng)
- Dây nối
🔌 PHẦN 2: KẾT NỐI MẠCH
🧩 Cấu tạo LED 7 đoạn:
LED 7 đoạn có 10 chân, gồm:
- 7 chân điều khiển các đoạn: a, b, c, d, e, f, g
- 2 chân COM (Common cathode): bạn nối GND
✳️ Cách nối cụ thể:
Segment | Arduino Pin |
---|---|
a | D2 |
b | D3 |
c | D4 |
d | D5 |
e | D6 |
f | D7 |
g | D8 |
- Nối điện trở 220Ω từ mỗi chân a–g đến các chân D2–D8
- Nối COM (2 chân cathode) xuống GND
📌 Tất cả các đoạn đều sáng khi xuất tín hiệu HIGH, vì đây là loại cathode chung.
💻 PHẦN 3: LẬP TRÌNH HIỂN THỊ SỐ
✏️ Code mẫu: Hiển thị tuần tự từ 0 đến 9
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a-g
// Bảng mã bit cho các số 0–9, theo thứ tự a-b-c-d-e-f-g (HIGH = bật)
const byte digits[10][7] = {
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,1,0,1,1} // 9
};
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
for (int num = 0; num < 10; num++) {
// Hiển thị từng số
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], digits[num][i]);
}
delay(1000); // Đợi 1 giây
}
}
🧠 GIẢI THÍCH CODE
segmentPins[]
: ánh xạ các đoạn a–g đến D2–D8digits[][]
: bảng mã 0–9, mỗi hàng là mã điều khiển 7 đoạn- Trong
loop()
, Arduino duyệt qua từng số, bật/tắt đoạn tương ứng
▶️ PHẦN 4: CHẠY MÔ PHỎNG
- Nhấn Start Simulation
- Quan sát LED 7 đoạn hiển thị các số từ 0 đến 9, mỗi số hiển thị trong 1 giây
🎯 PHẦN 5: TỔNG KẾT
Qua bài học này, các bạn đã:
- Làm quen với LED 7 đoạn loại cathode chung
- Biết cách kết nối và điều khiển từng đoạn qua Arduino
- Hiển thị được số từ 0 đến 9 bằng cách lập trình logic bit
📘 Gợi ý mở rộng:
- Kết hợp nút nhấn để tăng số (0–9) bằng tay
- Sử dụng 2 LED 7 đoạn để hiển thị 2 chữ số (đếm từ 00 đến 99)
- Kết hợp với cảm biến để hiển thị giá trị đo (ví dụ nhiệt độ)
BÀI TẬP THỰC HÀNH
🧪 Bài 1: Hiển thị số đếm tăng dần từ 0 đến 9 khi nhấn nút
🎯 Mục tiêu:
- Mỗi lần nhấn nút → tăng số lên 1 và hiển thị trên LED 7 đoạn
- Khi vượt quá 9 → quay về 0
🧠 Kỹ năng:
- Đọc nút nhấn (INPUT_PULLUP)
- Tăng biến đếm và hiển thị số
- Tránh lặp do giữ nút (
debounce
đơn giản)
🧪 Bài 2: Hiển thị số ngược từ 9 xuống 0 tự động mỗi giây
🎯 Mục tiêu:
- Dùng
millis()
để đếm lùi từ 9 → 0 → lặp lại
🧠 Kỹ năng:
- Quản lý thời gian không dùng
delay()
- Dùng mảng mã LED 7 đoạn
- Xử lý biến giảm và quay vòng
🧪 Bài 3: Kết nối 2 LED 7 đoạn để hiển thị số từ 00 đến 99
🎯 Mục tiêu:
- Dùng 2 LED 7 đoạn để hiển thị số 2 chữ số
- Mỗi giây tăng số lên 1
- Hiển thị đúng hàng chục và hàng đơn vị
🧠 Kỹ năng:
- Tách số thành hàng chục và hàng đơn vị
- Điều khiển nhiều LED đồng thời
- Quản lý mảng mã theo 2 cụm chân (a–g mỗi LED)
🧪 Bài 4: Đếm và hiển thị số lần phát hiện chuyển động từ cảm biến PIR
🎯 Mục tiêu:
- Kết nối cảm biến chuyển động (PIR)
- Mỗi lần có chuyển động → tăng số và hiển thị trên LED 7 đoạn
🧠 Kỹ năng:
- Giao tiếp với cảm biến (Digital input)
- Ứng dụng thực tế: đếm người, phát hiện vật thể
- Hiển thị dữ liệu cảm biến theo thời gian thực
🧪 Bài 5: Nhận số từ Serial Monitor để hiển thị trên LED 7 đoạn
🎯 Mục tiêu:
- Gửi số từ 0–9 (hoặc 00–99 nếu có 2 LED) qua Serial
- Arduino hiển thị số đó trên LED 7 đoạn
🧠 Kỹ năng:
- Giao tiếp UART
- Phân tích chuỗi số (
readStringUntil('\n') → toInt()
) - Điều khiển theo dữ liệu nhập từ máy tính