Ambient Light Sensor Using Photo Resistor and LED Lights
Cảm biến ánh sáng xung quanh sử dụng điện trở ảnh và đèn LED
GIỚI THIỆU DỰ ÁN NÀY
Tôi đã sử dụng Arduino được một thời gian và tôi đã quyết định thiết kế dự án của riêng mình từ đầu. Tôi đã sửa đổi một số mạch mà tôi tìm thấy trực tuyến từ Alex Glow và Joe Coburn để chúng phù hợp hơn với dự án này. Xin vui lòng, nếu bạn tìm thấy bất kỳ vấn đề, hoặc nghĩ rằng bạn đã tìm thấy một cái gì đó hoạt động tốt hơn thiết kế của tôi, vui lòng bình luận bên dưới và tôi sẽ liên hệ lại với bạn.
Đấu dây
Tôi có một điện trở hình ảnh được nối dây vào chân tương tự 0 (bất kỳ chân tương tự nào cũng hoạt động) và 5V ở phía bên phải của bảng mạch. Nó chạy qua một điện trở 1K ohm nối đất. Tôi đã đấu dây một đèn LED (bất kỳ màu nào) ở phía đối diện của bảng mạch vào chân kỹ thuật số 13 (bất kỳ chân kỹ thuật số nào cũng hoạt động) và một điện trở 220-ohm nối đất (100-ohm cũng sẽ hoạt động). Hơi chếch về bên phải của đèn LED đầu tiên, nối dây một đèn LED có màu khác theo cùng một cách, chỉ với một chân kỹ thuật số khác.
Làm thế nào nó hoạt động
Nếu điện trở quang đọc giá trị trên 450, nó sẽ in "Nó khá nhẹ!" trên màn hình nối tiếp và tắt tất cả các đèn LED, như sau:
if(light > 450) { // If it is bright...
Serial.println("It is quite light!");
digitalWrite(13,LOW); //turn left LED off
digitalWrite(12,LOW); // turn right LED off
} Nếu nó đọc một giá trị từ 230 đến 450, nó sẽ in "Đó là ánh sáng trung bình!" trên màn hình nối tiếp và bật đèn LED bên trái, như sau:
else if(light > 229 && light < 451) { // If it is average light...
Serial.println("It is average light!");
digitalWrite(13, HIGH); // turn left LED on
digitalWrite(12,LOW); // turn right LED off
} Điều này chỉ để lại cho chúng tôi các giá trị dưới 230. Nếu giá trị dưới 230, nó sẽ in "Trời khá tối!" trên màn hình nối tiếp và bật cả hai đèn LED, như sau:
else { // If it's dark...
Serial.println("It is pretty dark!");
digitalWrite(13,HIGH); // Turn left LED on
digitalWrite(12,HIGH); // Turn right LED on
} Tôi đã thêm độ trễ 1000 vào cuối vòng lặp của mình để ngăn quá tải thông tin vào màn hình nối tiếp, như sau:
delay(1000); // don't spam the computer!
Đảm bảo rằng bạn xem sơ đồ và kiểm tra mã của mình trước khi tải lên hoặc chạy bất kỳ thứ gì.CODE
int light = 0; // store the current light value void setup() { // put your setup code here, to run once: Serial.begin(9600); //configure serial to talk to computer pinMode(13, OUTPUT); // configure digital pin 13 as an output pinMode(12, OUTPUT); // configure digital pin 12 as an output } void loop() { // put your main code here, to run repeatedly: light = analogRead(A0); // read and save value from PR Serial.println(light); // print current light value if(light > 450) { // If it is bright... Serial.println("It is quite light!"); digitalWrite(13,LOW); //turn left LED off digitalWrite(12,LOW); // turn right LED off } else if(light > 229 && light < 451) { // If it is average light... Serial.println("It is average light!"); digitalWrite(13, HIGH); // turn left LED on digitalWrite(12,LOW); // turn right LED off } else { // If it's dark... Serial.println("It is pretty dark!"); digitalWrite(13,HIGH); // Turn left LED on digitalWrite(12,HIGH); // Turn right LED on } delay(1000); // don't spam the computer! }