接线图:
引脚连接:
1. 将 PIR 信号引脚连接到 arduino 数字 引脚 13。
2. 将 PIR V+ 引脚连接 到 arduino 5v 引脚。
3. 将 PIR GND 引脚连接到 arduino GND 引脚。
4. 将arduino数字 引脚12连接 到220欧姆电阻,并将该电阻连接到 LED V+ 引脚。
5. 将 LED GND 引脚连接到 arduino GND 引脚。
6. 将蜂鸣器 V+ 引脚连接 到 arduino 数字 引脚 11
7. 将蜂鸣器 GND 引脚连接到 arduino GND 引脚。
程序代码:
//校准传感器的时间
int calibrationTime = 30;
long unsigned int lowIn;
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int pirPin = 13; //PIR传感器输入13引脚
int ledPin = 12; //led灯珠连接到12引脚
int Buzzer = 11; //蜂鸣器连接到11引脚。
/
//SETUP
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(Buzzer, OUTPUT);
digitalWrite(pirPin, LOW);
//给传感器一些时间校准
Serial.print("校准传感器 ");
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
}
Serial.println(" done");
Serial.println("SENSOR ACTIVE");
delay(50);
}
//LOOP
void loop(){
if(digitalRead(pirPin) == HIGH){//如果PIR检测到有人移动时,将给13引脚返回高电平。
digitalWrite(ledPin, HIGH); //如果有人移动,则设置led为高电平,点亮led,蜂鸣器警报500毫秒。
tone(Buzzer,500);
if(lockLow){
lockLow = false;
Serial.println("---");
Serial.print("检测到有人在运动的时间为: ");
Serial.print(millis()/1000);
Serial.println(" 秒时");
delay(50);
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW){ //PIR锁定结束后返回低电平,PIR再次进入到检测状态。
digitalWrite(ledPin, LOW); //关闭led显示。
noTone(Buzzer);//关闭蜂鸣器。
if(takeLowTime){
lowIn = millis(); //记录返回低电平时,进入系统的时间。
takeLowTime = false;
}
if(!lockLow && millis() - lowIn > pause){
lockLow = true;
Serial.print("移动停止在: ");
Serial.print((millis() - pause)/1000);
Serial.println(" sec");
delay(50);
}
}
}