Trong Arduino bạn upload đoạn code sau:
// Khai báo các chân nối với cảm biến, relay và button #define RELAY_PIN 14 // digital 0 #define PIR_PIN 12 // digital 1 #define LIGHT_PIN A0 // analog #define LIGHT_MIN 200 // ngưỡng ánh sáng coi là tối để bật đèn, tùy chỉnh theo nhu cầu #define LIGHT_ON_DURATION 15000 // 15s, thời gian tắt đèn sau khi không còn chuyển động int lightStatus = 0; boolean relayStatus = false; unsigned long lastMotionDetected = 0; // lưu thời gian lần cuối phát hiện chuyển động void setup() { Serial.begin(9600); // Thiết lập chế độ hoạt động của các chân pinMode(PIR_PIN, INPUT); pinMode(RELAY_PIN, OUTPUT); } void loop() { // Đọc trạng thái ánh sáng hiện tại từ quang trở và đổi ra % lightStatus = analogRead(A0) * 100 / 1024; //Serial.print("Trang thai anh sang hien tai: "); Serial.print(lightStatus); Serial.println("%"); int motionDetected = digitalRead(PIR_PIN); if (motionDetected) { Serial.println("Phat hien chuyen dong"); // Nếu trời tối hơn mức quy định và đèn đang tắt thì bật đèn if (lightStatus < LIGHT_MIN && !relayStatus) { Serial.println("Phat hien chuyen dong va troi toi, yeu cau bat den"); digitalWrite(RELAY_PIN, HIGH); relayStatus = true; } lastMotionDetected = millis(); // Lưu thời gian lần cuối phát hiện chuyển động } // Nếu đèn đang bật, kiểm tra để tắt nếu không có chuyển động sau 1 thời gian quy định if (relayStatus) { unsigned long current = millis(); if (current - lastMotionDetected > LIGHT_ON_DURATION) { Serial.println("Khong phat hien chuyen dong sau mot thoi gian, yeu cau tat den"); digitalWrite(RELAY_PIN, LOW); relayStatus = false; } } delay(50); }
Sau khi upload, bạn thử chuyển động trước cảm biến chuyển động và lấy tay che cảm biến ánh sáng lại để giả lập trời tối, đèn sẽ tự động bật. Sau khoảng 15 giây không phát hiện chuyển động, đèn sẽ tự động tắt. Như vậy bạn đã làm được một bóng đèn thông minh sử dụng được rất nhiều nơi có ích nhé.