人体感应小夜灯设计 利用热释电传感器和光敏传感器设计一款人体感应小夜灯电路,要求:当光线不足(黑夜)并且有人在感应区活动时打开小夜灯, 打代码
时间: 2024-02-23 08:59:09 浏览: 148
以下是一种可能的人体感应小夜灯的Arduino代码实现。需要先安装相应的热释电传感器和光敏传感器的库。
```
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2 // DHT传感器连接到2号引脚
#define DHTTYPE DHT11 // DHT 11
#define PIRPIN 3 // 热释电传感器连接到3号引脚
#define LDRPIN 4 // 光敏传感器连接到4号引脚
#define LEDPIN 5 // LED灯连接到5号引脚
DHT dht(DHTPIN, DHTTYPE);
int pirState = LOW; // 当前PIR传感器状态
int pirLastState = LOW; // 上一次PIR传感器状态
int ldrValue = 0; // 光敏传感器读数
int ledState = LOW; // 当前LED灯状态
void setup() {
pinMode(PIRPIN, INPUT);
pinMode(LDRPIN, INPUT);
pinMode(LEDPIN, OUTPUT);
dht.begin();
Serial.begin(9600);
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
pirState = digitalRead(PIRPIN);
ldrValue = analogRead(LDRPIN);
if (pirState == HIGH && ldrValue < 100) { // 当有人体活动且光线不足时
digitalWrite(LEDPIN, HIGH); // 打开LED灯
ledState = HIGH;
} else if (pirState == LOW || ldrValue >= 100) { // 当没有人体活动或光线充足时
digitalWrite(LEDPIN, LOW); // 关闭LED灯
ledState = LOW;
}
if (pirState != pirLastState) { // 当PIR传感器状态发生变化时
pirLastState = pirState;
Serial.println("PIR state changed");
}
if (ledState != LOW) { // 当LED灯处于打开状态时
Serial.print("Temperature: ");
Serial.print(t);
Serial.print("°C, Humidity: ");
Serial.print(h);
Serial.print("%");
}
delay(500);
}
```
该代码实现的功能为:读取DHT11温湿度传感器的数据,当热释电传感器检测到有人体活动且光线不足时,打开LED灯,并在串口监视器上输出当前温湿度数据。当没有人体活动或者光线充足时,关闭LED灯。
阅读全文