CẢM BIẾN ÁNH SÁNG – ĐÈN TỰ ĐỘNG
Arduino cảm nhận môi trường và tự động bật đèn khi trời tối.
1. 🌙 Giới thiệu
Ở các Bài 1–3, Arduino chủ yếu thực hiện những lệnh mà chúng ta lập trình sẵn.
Sang Bài 4, Arduino bắt đầu có khả năng “cảm nhận” môi trường bên ngoài.
Chúng ta sử dụng một cảm biến ánh sáng LDR để đo mức độ sáng tối của môi trường. Arduino sẽ dựa vào giá trị đo được để quyết định bật hoặc tắt đèn tự động.
Môi trường
Cảm biến LDR
Arduino xử lý
Đèn tự động
2. 🎯 Mục tiêu bài học
3. 🧰 Linh kiện cần chuẩn bị
Bài 4 tiếp tục sử dụng bộ Arduino cơ bản đã mua ở các bài trước.
| Thành phần | Số lượng | Ghi chú |
|---|---|---|
| Arduino Uno | 1 | ♻️ Dùng lại |
| Breadboard | 1 | ♻️ Dùng lại |
| LED | 1 | ♻️ Dùng lại |
| Điện trở 220Ω–330Ω | 1 | ♻️ Dùng lại |
| Cảm biến ánh sáng LDR | 1 | 🛒 Mua thêm |
| Điện trở 10kΩ | 1 | 🛒 Mua thêm |
| Dây jumper | Có sẵn | ♻️ Dùng lại |
| Cáp USB | 1 | ♻️ Dùng lại |
Chỉ cần bổ sung: 1 LDR + 1 điện trở 10kΩ.
Không cần mua lại Arduino, breadboard, LED hay dây nối.
4. 🔍 LDR là gì?
LDR (Light Dependent Resistor) là một loại điện trở có giá trị thay đổi theo cường độ ánh sáng.
☀️ Khi ánh sáng thay đổi, điện trở của LDR cũng thay đổi.
Arduino không trực tiếp hiểu “sáng” hay “tối”. Arduino chỉ đọc được một giá trị điện áp thông qua chân Analog.
Từ giá trị đó, chương trình sẽ quyết định:
Nếu tối → bật đèn.
Nếu sáng → tắt đèn.
5. 📊 Digital và Analog
Đây là một kiến thức rất quan trọng trong Arduino.
Digital
Digital thường chỉ có hai trạng thái:
HIGH hoặc LOW
Ví dụ Bài 2: Nút nhấn có thể được đọc là HIGH hoặc LOW.
Analog
Analog có nhiều mức giá trị khác nhau.
Arduino Uno có thể đọc giá trị Analog thông qua các chân: A0, A1, A2, A3, A4, A5.
Trong bài này chúng ta sử dụng: A0.
6. 🔌 Sơ đồ đấu dây
Chúng ta tạo một mạch chia áp đơn giản giữa LDR và điện trở 10kΩ.
+5V
│
LDR
│
├──────────── A0
│
10kΩ
│
GND
💡 Kết nối LED
Arduino D8
│
220Ω
│
LED
│
GND
📌 Tổng hợp
| Arduino | Kết nối |
|---|---|
| 5V | Chân LDR |
| A0 | Điểm giữa LDR và điện trở 10kΩ |
| GND | Điện trở 10kΩ |
| D8 | Điện trở 220Ω → LED |
| GND | Chân âm LED |
7. 💻 Lập trình đèn tự động
Trong chương trình đầu tiên, chúng ta sẽ đặt một ngưỡng để Arduino quyết định trời sáng hay tối.
8. 🧠 Giải thích chương trình
① Khai báo chân cảm biến
Arduino sẽ đọc cảm biến thông qua chân A0.
② Khai báo chân LED
LED được điều khiển bằng chân Digital 8.
③ Đặt ngưỡng ánh sáng
Giá trị 500 được dùng làm ngưỡng ban đầu.
Nếu giá trị cảm biến thấp hơn ngưỡng, chương trình coi môi trường là tối.
④ Đọc cảm biến
Khác với Bài 2 sử dụng:
Bài 4 sử dụng:
để đọc giá trị Analog.
⑤ Đưa ra quyết định
Đây chính là phần tạo nên tính “tự động”.
☀️ Sáng → Arduino tắt đèn.
9. 🖥️ Quan sát giá trị cảm biến
Mở Serial Monitor trong Arduino IDE và đặt tốc độ: 9600 baud.
Bạn sẽ thấy các giá trị kiểu như:
Hãy thử dùng tay che LDR rồi bỏ tay ra. Bạn sẽ thấy giá trị thay đổi.
10. ⚙️ Hiệu chỉnh ngưỡng
Đây là phần rất đáng để người học tự khám phá.
Hãy quan sát Serial Monitor khi:
- ☀️ Để LDR ngoài ánh sáng.
- 🌥️ Đưa LDR vào nơi ít sáng.
- 🌙 Dùng tay che LDR.
Ví dụ bạn nhận được:
Bạn có thể đặt:
Khi đó:
Giá trị ≥ 450 → coi là sáng → tắt đèn.
11. 🧪 Thực hành
🟢 Thực hành 4A
Nạp chương trình và dùng tay che LDR.
Yêu cầu:
Che LDR → LED sáng.
Bỏ tay → LED tắt.
🟡 Thực hành 4B
Thay đổi giá trị:
thành:
Quan sát sự thay đổi của hệ thống.
🔴 Thử thách 4C
Hãy sử dụng 2 LED để tạo trạng thái:
☀️ Sáng → LED xanh sáng.
🌙 Tối → LED đỏ sáng.
Gợi ý:
12. 🏠 Ứng dụng thực tế
Mạch nhỏ trong bài hôm nay chính là nguyên lý của rất nhiều hệ thống tự động hóa.
💡 Đèn sân vườn tự động
💡 Đèn hành lang tự động
💡 Đèn đường mô hình
💡 Đèn chuồng trại
💡 Hệ thống chiếu sáng nhà thông minh
Trong các hệ thống lớn, LED có thể được thay bằng relay và thiết bị điện phù hợp.
13. 🚀 Sau 4 bài, bạn đã làm được gì?
Bài 1: Arduino điều khiển LED.
Bài 2: Arduino đọc nút nhấn và điều khiển LED.
Bài 3: Arduino điều khiển nhiều thiết bị theo trình tự.
Bài 4: Arduino đọc cảm biến và tự động quyết định.
const int LIGHT_SENSOR = A0;
const int LED_PIN = 8;
const int LIGHT_THRESHOLD = 500;
void setup()
{
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int lightValue = analogRead(LIGHT_SENSOR);
Serial.print("Gia tri anh sang: ");
Serial.println(lightValue);
if (lightValue < LIGHT_THRESHOLD)
{
// Troi toi → Bat den
digitalWrite(LED_PIN, HIGH);
}
else
{
// Troi sang → Tat den
digitalWrite(LED_PIN, LOW);
}
delay(200);
}
🛒 BỘ LINH KIỆN NÂNG CẤP – BÀI 4
Không cần mua lại bộ Arduino cơ bản.
🛒 BỘ LINH KIỆN THỰC HÀNH ARDUINO – BÀI 4
Bạn không cần mua lại Arduino, breadboard, LED và dây nối.
Bài 4 chỉ cần bổ sung các linh kiện mới dưới đây.
Cảm biến ánh sáng LDR
1 chiếcDùng để phát hiện mức độ sáng – tối của môi trường.
Điện trở 10kΩ
1 chiếcKết hợp với LDR để tạo mạch chia áp đưa tín hiệu vào chân Analog.
🎓 Kèm nội dung thực hành: sơ đồ đấu dây + code + hướng dẫn + bài tập nâng cấp.
💬 ĐẶT BỘ LINH KIỆN BÀI 4 QUA ZALO
0 nhận xét Blogger 0 Facebook