Arduino使用人体红外传感器

前言

人体红外传感器是一种热释电传感器,原理将释放电荷经放大器转为电压输出,现在常用的人体红外传感器即有人输出高电压,无人输出低电压。用在生活报警等应用。

读取
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。
Arduino使用人体红外传感器_第1张图片

判断人是否离开
/*
 *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");      //当人离开的时候打印
  }
}

Arduino使用人体红外传感器_第2张图片

完整程序

当没有监测到有人的时候,串口打印输出“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);
}

串口打印
Arduino使用人体红外传感器_第3张图片

你可能感兴趣的:(Arduino)