2021-04-28

                                                                                                                              Arduino人体红外报警系统设计

        人体红外报警的程序本身极其简单,只需要执行模拟数值输入函数:analogRead(analogPin);即可从模拟口读到红外传感器的相应数值。当可侦测的范围内没有没有人体红外辐射温度(热释电)变化时返回的数值较小,当有人体红外辐射温度(热释电)变化时返回的数值较大,当返回的数值大于100时,判断有人在活动。当然,此值可以调试直到找到合适的值。

       为了实现项目提出的不仅返回人体红外警报信号,还要能从串口输入控制信号控制LED灯亮和灭,因此,还要加入基本的判断处理,代码如下:

int  LEDPin=13;                //人体感应LED灯的引脚

int  analogPin=3;             //人体感应电位器(中间的引脚)连接到模拟输入引脚3

int  buttonState=LOW;     //人体感应读取的当前按键状态

void  setup()

{

   //声名引脚为输入模式

   pinMode(analogPin,INPUT);

   pinMode(LEDPin,OUTPUT);

   Serial.begin(9600);

}

char  A_D='A';                //区别执行人体红外自动检测和远程控制红灯

void  loop()

{

   if(Serial.available())

{

   A_D=Serial.read();

}

digitalWrite(LEDPin, LOW);

if(A_D=='1')             //远程指挥

{

digitalWrite(LEDPin, HIGH);      //红灯亮

delay(100);

}

if(A_D=='0')              //远程指挥

{

digitalWrite(LEDPin, LOW);           //红灯亮

}

if(A_D=='A')                    //人体红外检测处理程序

{     //人体感应处理

buttonState=analogRead(analogPin);           //从输入引脚读取数值

//注意,人体红外传感器读取间隔默认2.5秒

if(buttonState>100)

{           //如果读入数值大于200,说明有人进入区域。一般测到人体红外,返回数值为670左右

digitalWrite(LEDPin,HIGH);            //红灯亮

Serial.println(buttonState);

Serial.print("In:");

Serial.print(buttonState);           //显示读取的数值

Serial.println("");

delay(2000);              //让灯亮一段时间

}

else{

digitalWrite(LEDPin,LOW);

}

}

}

        下载到Arduino  UNO板后,可以从串口输入A、1、0等值查看输出结果,观察Arduino LED小灯的变化情况。对人体的探测会出现间隔反应延时的情况,这是因为人体红外检测传感器读取默认间隔是2.5s。这个间隔时间是可调的。

       

       

你可能感兴趣的:(arduino)