Hôm nay chúng ta sẽ đến với Bài Tập Thực Hành 2: Lập trình phát tín hiệu cấp cứu quốc tế SOS thông qua nhịp nhấp nháy của đèn LED. Bài tập này giúp rèn luyện tư duy chia nhỏ bài toán và sử dụng vòng lặp
for để tối ưu hóa mã nguồn.Để làm được việc này, cần kiểm tra đủ các linh kiện đã làm ở Bài 1 và bài lý thuyết
Trước khi bắt đầu, bạn cần chuẩn bị các linh kiện trong bảng sau:
| Tên linh kiện | Số lượng | Ghi chú |
|---|---|---|
| Board Arduino Uno R3 | 01 | Kèm cáp USB kết nối máy tính |
| Đèn LED 5mm | 01 | Màu tùy chọn (Đỏ, Xanh, Vàng...) |
| Điện trở 220Ω | 01 | Vạch màu: Đỏ - Đỏ - Nâu |
| Testboard (Breadboard) | 01 | Dùng để cắm mạch không cần hàn |
| Dây nhảy (Jumper Wires) Cáp USB nối máy tính | 02 01 | Loại dây Đực - Đực |
Ghi chú: Các linh kiện này dùng lại được khi đổi dự án khác
1. Phân Tích Mã Morse SOS
Tín hiệu SOS gồm 3 chữ cái: S (...) - O (---) - S (...).
| Ký tự Morse | Nhịp chớp LED | Thời gian sáng (ON) | Thời gian tắt (OFF) |
|---|---|---|---|
| S (3 Chớp ngắn) | • • • | 200ms | 200ms |
| O (3 Chớp dài) | — — — | 600ms | 200ms |
| S (3 Chớp ngắn) | • • • | 200ms | 200ms |
| Nghỉ giữa 2 chu kỳ | Tắt hoàn toàn | 0ms | 2000ms (2 giây) |
2. Sơ Đồ Kết Nối Mạch (Hardware)
⚠️ Giữ nguyên mạch cắm bài 1:
- Chân dài LED (Anode +) → Điện trở 220Ω → Chân Digital 13 Arduino.
- Chân ngắn LED (Cathode -) → Chân GND Arduino.
3. Mã Nguồn Lập Trình (Source Code)
CÁCH 1: Lập trình tuần tự cơ bản
/*
Bài Tập 2: Phát tín hiệu SOS (Cách 1 - Viết tuần tự)
*/
const int LED_PIN = 13;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// --- 3 CHỚP NGẮN (Chữ S) ---
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW); delay(200);
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW); delay(200);
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW); delay(200);
delay(300); // Khoảng nghỉ giữa các chữ cái
// --- 3 CHỚP DÀI (Chữ O) ---
digitalWrite(LED_PIN, HIGH); delay(600);
digitalWrite(LED_PIN, LOW); delay(200);
digitalWrite(LED_PIN, HIGH); delay(600);
digitalWrite(LED_PIN, LOW); delay(200);
digitalWrite(LED_PIN, HIGH); delay(600);
digitalWrite(LED_PIN, LOW); delay(200);
delay(300); // Khoảng nghỉ giữa các chữ cái
// --- 3 CHỚP NGẮN (Chữ S) ---
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW); delay(200);
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW); delay(200);
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW); delay(200);
// Tạm dừng 2 giây trước khi lặp lại SOS tiếp theo
delay(2000);
}
CÁCH 2: Dùng vòng lặp for (Chuyên nghiệp & Ngắn gọn)
/*
Bài Tập 2: Phát tín hiệu SOS (Cách 2 - Dùng vòng lặp for)
Tác giả: Giáo viên ARDUINO
*/
const int LED_PIN = 13;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// 1. Phát 3 chớp ngắn (Chữ S)
for (int i = 0; i < 3; i++) {
digitalWrite(LED_PIN, HIGH);
delay(200);
digitalWrite(LED_PIN, LOW);
delay(200);
}
delay(300); // Nghỉ giữa các chữ cái
// 2. Phát 3 chớp dài (Chữ O)
for (int i = 0; i < 3; i++) {
digitalWrite(LED_PIN, HIGH);
delay(600);
digitalWrite(LED_PIN, LOW);
delay(200);
}
delay(300); // Nghỉ giữa các chữ cái
// 3. Phát 3 chớp ngắn (Chữ S)
for (int i = 0; i < 3; i++) {
digitalWrite(LED_PIN, HIGH);
delay(200);
digitalWrite(LED_PIN, LOW);
delay(200);
}
// Nghỉ 2 giây kết thúc 1 chu kỳ SOS
delay(2000);
}
4. Thách Thức Tư Duy Mở Rộng
🎓 Thử thách dành cho học sinh giỏi:
Thay vì viết đi viết lại hàm digitalWrite và delay, bạn hãy tạo một hàm phụ void chieuS() và void chieuO() hoặc một hàm chung void nhapNhay(int duration) để rút gọn chương trình chính hơn nữa nhé!
Chúc các bạn thực hành thành công! Nếu có thắc mắc, hãy gửi câu hỏi ở phần bình luận phía dưới.
🛒 BỘ LINH KIỆN THỰC HÀNH ARDUINO – BÀI 1
Đầy đủ linh kiện để bắt đầu Điều khiển LED bằng Arduino
Bạn muốn học Arduino theo phương pháp
“học đến đâu – thực hành đến đó”?
Chúng tôi chuẩn bị sẵn bộ linh kiện cơ bản dành cho Bài thực hành số 1, giúp bạn bắt đầu ngay mà không phải mất thời gian tìm mua từng linh kiện riêng lẻ.
Chúng tôi chuẩn bị sẵn bộ linh kiện cơ bản dành cho Bài thực hành số 1, giúp bạn bắt đầu ngay mà không phải mất thời gian tìm mua từng linh kiện riêng lẻ.
1
Arduino Uno
Uno R3 / R4 – bộ điều khiển trung tâm
của hệ thống.
2
LED
Đèn LED dùng để thực hành bật / tắt
bằng chương trình Arduino.
3
Điện trở 220Ω – 330Ω
Giới hạn dòng điện và bảo vệ LED
khi thực hành.
4
Breadboard
Bảng mạch thử để lắp ráp mạch
mà không cần hàn.
5
Dây Jumper
2 dây dùng để kết nối Arduino
với các linh kiện trên breadboard.
6
Cáp USB
Kết nối Arduino với máy tính,
cấp nguồn và nạp chương trình.
💡 Phù hợp cho người mới bắt đầu:
Bộ linh kiện được lựa chọn để thực hành
Bài 1 và có thể tiếp tục sử dụng cho nhiều
bài học Arduino và tự động hóa tiếp theo.
🚀 Sẵn sàng bắt đầu thực hành?
Đừng chỉ xem lý thuyết!
Hãy chuẩn bị linh kiện, mở Arduino IDE
và tự tay tạo ra sản phẩm đầu tiên.
✅ Bộ linh kiện thực hành
✅ Dễ sử dụng cho người mới
✅ Có thể dùng cho các bài tiếp theo
0 nhận xét Blogger 0 Facebook