|
|
本帖最后由 Tottiii 于 2014-12-6 21:30 编辑
曾几何时,还在新西兰上大学的我。一天回到家中,突然耳边响起震耳欲聋的警报声。。。差点没把自己给吓尿 。结果是忘了进门输入门禁密码。
今天偶得一个HC-SR501红外人体感应模块。为了缅怀一下逝去的青春,也决定不再只是做伸手党。今天准备发一张简单的帖子。还望坛子里的各位大大别取笑。这篇帖子主要是针对初学者吧,毕竟此模块能运用于自动开关,防盗报警器,自动空调等等。。。
21世纪被称为光学世纪,随着光电技术的发展。光学产品在人类生活中扮演了很重要的地位。今天我们要介绍的HC-SR501模块就是应用了热释电效应。
------------------------------------------------------------------------------------------
产品规格:
◦ 电压: 5V – 20V
◦ 电流: 65mA
◦ TTL 输出: 3.3V, 0V
◦ 激发方法: L – 不允许重复激发, H-允许重复激发
◦ 探测范围:<20 degree, < 7m
◦ 工作温度: – 15 ~ +70
------------------------------------------------------------------------------------------
从配图1可以看出,这个模块的连接其实是很简单的。主要就是GND-接地;OUT-是高低信号;Vcc-5V电压。下方左边的potentiometor是调节“灵敏度调控”:顺时针旋转是增大灵敏度(最大7m),逆时针是减小(最小2-3m)。下方右边的potentiometor是调节“延时调控”:顺时针旋转是增大延时(最大300s),逆时针是减小(最小5s)。
按图连接好,当首先通电的1分钟为启动状态,其具体表现是output会出现0-3次。然后将进入一般模式。其实这次的代码是很简单的。是用一盏LED来表示输出结果。当模块感应到人体后即会输出HIGH(3.3V)信号.当人体静止或离开则会输出LOW(0V)。
- // The script is used to test the HC-SR501 infrared sensor
- //Define Pins and variables
- int ledpin = 13;
- int Sout = 11;
- int pinState = LOW;
- int val = 0;
- void setup() {
- pinMode(ledpin, OUTPUT);
- pinMode(Sout, INPUT);
- Serial.begin(9600);
- }
- void loop() {
- val = digitalRead(Sout); // read input
- if (val == HIGH) { // input HIGH
- digitalWrite(ledpin, HIGH); // LED ON
- Serial.println("Motion Detected!!");
- pinState = HIGH;
- } else {
- digitalWrite(ledpin, LOW); // turn LED OFF
- if (pinState == HIGH){
- Serial.println("Motion ended!");
- pinState = LOW;
- }
- }
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|