前言
人体红外传感器是一种热释电传感器,原理将释放电荷经放大器转为电压输出,现在常用的人体红外传感器即有人输出高电压,无人输出低电压。用在生活报警等应用。
读取
int sensor_pin = 2;
void setup(){
Serial.begin(9600); //设置串口通信频率
pinMode(sensor_pin,INPUT); //设置为输入模式
}
void loop(){
int val = digitalRead(sensor_pin);
Serial.println(val); //打印输出电压值
delay(1000); //1s打印一条信息
}
串口打印
当手靠近的时候,串口输出1,即为输出高电平,输出0为低电平。观察发现,这款红外传感器的延时的时间为10s。
判断人是否离开
/*
*richowe
*/
int sensor_pin = 2;
int c = 0;
void setup() {
Serial.begin(9600);
pinMode(sensor_pin,INPUT);
Serial.flush();
}
void loop() {
int val = digitalRead(sensor_pin);
if (val == 1){
delay(50);
if (val == 1){
c = 1; //反转c值
Serial.println("have people");
delay(5000);
delay(5000); //延时10s
}
}
else if (c==1 && val==0){
c = 0;
Serial.println("people left"); //当人离开的时候打印
}
}
完整程序
当没有监测到有人的时候,串口打印输出“NONE”,当有人靠近的时候,串口打印“have people”,当人离开的时候,串口打印“people left”。
/*
*richowe
*/
int sensor_pin = 2;
int c = 0;
void setup() {
Serial.begin(9600);
pinMode(sensor_pin,INPUT);
Serial.flush();
}
void loop() {
int val = digitalRead(sensor_pin);
if (val == 1){
delay(50);
if (val == 1){
c = 1; //反转c值
Serial.println("have people"); //延时10s
}
}
else if (c==1 && val==0){
c = 0;
Serial.println("people left"); //当人离开的时候打印
}
else {
Serial.println("NONE");
}
delay(5000);
delay(5000);
}
串口打印