Ardunio thực chiến: BÀI 4 – CẢM BIẾN ÁNH SÁNG – ĐÈN TỰ ĐỘNG - A-Kinh nghiem hay

Ardunio thực chiến: BÀI 4 – CẢM BIẾN ÁNH SÁNG – ĐÈN TỰ ĐỘNG


💡
BÀI 4 – ARDUINO THỰC HÀNH

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

① Đọc cảm biến Biết cách đọc giá trị analog từ cảm biến.
② Hiểu Analog Phân biệt tín hiệu Digital và Analog.
③ Xử lý dữ liệu Dùng giá trị cảm biến để đưa ra quyết định.
④ Tự động hóa Tạo hệ thống đèn tự động bật/tắt.

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
🛒 Bộ nâng cấp Bài 4:
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.

🧠 CODE BÀI 4 – ĐÈN TỰ ĐỘNG
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); }

8. 🧠 Giải thích chương trình

① Khai báo chân cảm biến

const int LIGHT_SENSOR = A0;

Arduino sẽ đọc cảm biến thông qua chân A0.

② Khai báo chân LED

const int LED_PIN = 8;

LED được điều khiển bằng chân Digital 8.

③ Đặt ngưỡng ánh sáng

const int LIGHT_THRESHOLD = 500;

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

int lightValue = analogRead(LIGHT_SENSOR);

Khác với Bài 2 sử dụng:

digitalRead()

Bài 4 sử dụng:

analogRead()

để đọc giá trị Analog.

⑤ Đưa ra quyết định

if (lightValue < LIGHT_THRESHOLD) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); }

Đây chính là phần tạo nên tính “tự động”.

🌙 Tối → Arduino bật đèn.
☀️ 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ư:

Gia tri anh sang: 720 Gia tri anh sang: 715 Gia tri anh sang: 703 Gia tri anh sang: 420 Gia tri anh sang: 310 Gia tri anh sang: 280

Hãy thử dùng tay che LDR rồi bỏ tay ra. Bạn sẽ thấy giá trị thay đổi.

💡 Lưu ý: Giá trị thực tế có thể khác nhau tùy LDR, điện trở, môi trường và cách đấu mạch. Vì vậy không nên coi 500 là một giá trị cố định cho mọi mạch.

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:

Sáng: 750 Trong phòng: 600 Tối: 250

Bạn có thể đặt:

const int LIGHT_THRESHOLD = 450;

Khi đó:

Giá trị < 450 → coi là tối → bật đèn.
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ị:

const int LIGHT_THRESHOLD = 500;

thành:

const int LIGHT_THRESHOLD = 300;

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 ý:

if (lightValue < LIGHT_THRESHOLD) { // LED đỏ ON // LED xanh OFF } else { // LED đỏ OFF // LED xanh ON }

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.

⚠️ An toàn: Không đấu trực tiếp điện lưới 220V vào Arduino hoặc breadboard. Các bài thực hành với điện lưới cần thiết bị đóng cắt, cách ly và biện pháp an toà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.

👁️ INPUT
🧠 PROCESS
⚡ OUTPUT
🤖 AUTOMATION
💻 CODE ARDUINO – CẢM BIẾN ÁNH SÁNG
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);
}
✅ Đã copy code!

🛒 BỘ LINH KIỆN NÂNG CẤP – BÀI 4

Không cần mua lại bộ Arduino cơ bản.

🔆 LDR 1 chiếc
🔧 Điện trở 10kΩ 1 chiếc
♻️ Dùng lại bộ cũ Arduino + breadboard + LED + dây

🛒 BỘ LINH KIỆN THỰC HÀNH ARDUINO – BÀI 4

💡 Cảm biến ánh sáng – Đèn tự động
♻️ ĐÃ CÓ BỘ ARDUINO TỪ BÀI 1?
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ếc

Dùng để phát hiện mức độ sáng – tối của môi trường.

🔧

Điện trở 10kΩ

1 chiếc

Kết hợp với LDR để tạo mạch chia áp đưa tín hiệu vào chân Analog.

♻️ TIẾP TỤC SỬ DỤNG BỘ LINH KIỆN CŨ Arduino Uno + Breadboard + LED + điện trở LED + dây jumper + cáp USB

🎓 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
🤖 Arduino thực hành – Học đến đâu, làm đến đó.

Next
This is the most recent post.
Previous
Older Post

0 nhận xét Blogger 0 Facebook

 

 
A-Kinh nghiem hay ©Email: Inluon@gmail.com. Powered by >Template sưu tầm trên Internet
Link:|Fanpage||Website|Zalo|Telegram
Top
// //