|
本帖最后由 OpenJumper 于 2022-1-17 17:25 编辑
[md]## 一、人体红外感应实验
今天我们要人体红外感应模块,人体红外的用途十分广泛,可以被用于许多的场合,比如商场的感应水龙头,感应灯等,都是运用了这个模块,通过感应到有物体接近或是运动,就会发射出信号。
## 二、实验器材
+ UNO控制板:1块
+ 人体红外感应模块:1块
+ 蜂鸣器:1个
+ 面包板:1块
+ 面包板专用跳线:若干
## 三、硬件连接图
图17-1
## 四、硬件知识要点
人体红外传感器基本原理是检测人或者动物发出的红外线并用经过菲泥尔滤光片增强后聚集到红外感应源上,将感应的红外信号转化为电信号。本实验利用人体红外传感器检测人或者动物运动发出的红外线,发出警报。
人体红外原理:人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。所以,红外探测基本概念是感应移动物体温度与背景物体温度的差异。
## 五、程序编写[/md]
- int Sensor_pin = 2;
- int Buzzerpin = 3;
- void Alarm() //蜂鸣器发出警报
- {
- for(int i=0;i<100;i++){
- digitalWrite(Buzzerpin,HIGH); //发声音
- delay(2);
- digitalWrite(Buzzerpin,LOW); //不发声音
- delay(2); //修改延时时间,改变发声频率
- }
- }
- void setup()
- {
- pinMode(Sensor_pin,INPUT); //设置人体红外接口为输入状态
- pinMode(Buzzerpin,OUTPUT); //设置蜂鸣器接口为输出状态
- }
- void loop()
- {
- int val=digitalRead(Sensor_pin); //定义参数存储人体红外传感器读到的状态
- if(val == 1) //如果检测到有动物运动(在检测范围内),蜂鸣器发出警报
- {
- Alarm();
- }
- else
- {
- return;
- }
- delay(100); //延时100毫秒
- }
复制代码
[md]
## 六、程序知识要点
digitalRead()
描述:
读取指定引脚的值,HIGH或LOW。
语法:
digitalRead(PIN)
参数:
pin:你想读取的引脚号(int)
返回:
HIGH 或 LOW
例子:[/md]
- ledPin = 13 // LED连接到13脚
- int inPin = 7; // 按钮连接到数字引脚7
- int val = 0; //定义变量存以储读值
-
- void setup()
- {
- pinMode(ledPin, OUTPUT); // 将13脚设置为输出
- pinMode(inPin, INPUT); // 将7脚设置为输入
- }
-
- void loop()
- {
- val = digitalRead(inPin); // 读取输入脚
- digitalWrite(ledPin, val); //将LED值设置为按钮的值
- }
复制代码
[md]
将13脚设置为输入脚7脚的值。
注意:
如果引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)。
模拟输入脚能当做数字脚使用,参见A0,A1等。
## 七、拓展阅读
在拓展阅读中,我们来做一个感应灯的实验[/md]
- int Sensor_pin = 2;
- int Ledpin = 3;
- void Alarm() //Led点亮
- {
- for(int i=0;i<100;i++){
- digitalWrite(Ledpin,HIGH); //发光
- delay(2);
- digitalWrite(Ledpin,LOW); //不发光
- delay(2); //修改延时时间
- }
- }
- void setup()
- {
- pinMode(Sensor_pin,INPUT); //设置人体红外接口为输入状态
- pinMode(Ledpin,OUTPUT); //设置led接口为输出状态
- }
- void loop()
- {
- int val=digitalRead(Sensor_pin); //定义参数存储人体红外传感器读到的状态
- if(val == 1) //如果检测到有动物运动(在检测范围内),led点亮
- {
- Alarm();
- }
- else
- {
- return;
- }
- delay(500); //延时500毫秒
- }
复制代码 |
|