电子说
我的基本想法是通过Arduino LilyPad 实时at感器和人体红外感应模块的信号,有触发信号后驱动有源蜂鸣器模块报警。
用到的东西:
Arduino LilyPad板子 1
震动传感器 1
人体红外感应模块 1
有源蜂鸣器模块 1
白色发光管1
蓝色发光管1
按键开关1
USB转TTL板 1
充电宝 1
程序反复修改了几次,目前的算是定型了吧,检测到震动传感器的触发信号,延时5秒,蜂鸣器发出一种频率的报警声,同时白色发光管发光;
检测到人体红外感应模块的触发信号,延时5秒,蜂鸣器发出第二种种频率的报警声,同时蓝色发光管发光;检测到人体红外感应模块的触发信号和震动传感器的触 发信号,延时5秒,蜂鸣器发出第三种种频率的报警声,同时蓝色发光管和白色发光管发光;延时5秒是方便主人开门关闭报警;一旦声光报警触发会循环下去不会 停止,除非主人关闭电源或者充电宝电量不足。
下面是实物照片:
代码:
int bjbz1=0;
int bjbz2=0;
int bjbz3=0;
unsigned char state = 0;
unsigned char i,j,m;
void setup()
{
pinMode(7,INPUT);//7脚接SR501人体红外热释电传感器输出
pinMode(10,OUTPUT);//10脚接发光管蓝色输入
pinMode(2,INPUT);//2脚接震动传感器输出
pinMode(11,OUTPUT);//11脚接发光管白色输入
attachInterrupt(0, blink, FALLING);//D2口为外部中断0,当有下降沿触发的时候调用blink函数
pinMode(9,OUTPUT);//9脚接有源蜂鸣器模块输入
Serial.begin(9600);
}
void loop()
{
if ((state!=0) && (bjbz1==0)&&(digitalRead(7)==0))
{ Serial.println(“zheng dong ok”);
state = 0;
delay(5000);
digitalWrite(11,HIGH);
Alarm1();
delay(3000);
noTone(9);
bjbz1=1;
}
else
{ noTone(9);
digitalWrite(11,LOW);
bjbz1=0;
}
if ((digitalRead(7)==1)&& (bjbz2==0) )
{
Serial.println(“hongwai ok”);
if (bjbz2==0)
delay(5000);
digitalWrite(10,HIGH);
Alarm2() ;
delay(3000);
noTone(9);
bjbz2=1;
} else
{
noTone(9);
digitalWrite(10,LOW);
bjbz2=0;
}
if ((state!=0) && (bjbz3==0)&&(digitalRead(7)==1))
{
Serial.println(“zheng dong and hongwai ok”);
if (bjbz3==0)
delay(5000);
digitalWrite(11,HIGH);
digitalWrite(10,HIGH);
Alarm3() ;
delay(3000);
noTone(9);
bjbz3=1;
}
else
{ noTone(9);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
bjbz3=0;
}
}
void blink()//数字输入传感器下降沿触发中断服务函数
{
state++;
}
void Alarm1()
{
while(bjbz1==0)
{
for(int i=100;i《800;i++)
{
tone(9,i);
delay(5);
}
delay(5000);
for(int i=800;i》=200;i--)
{tone(9,i);
delay(5);
}
delay(2000);
}
}
void Alarm2()
{
while(bjbz2==0)
{
for(int j=700;j《=1500;j++)
{
tone(9,j);
delay(5);
}
delay(4000);
for(int j=1500;j》=700;j--)
{
tone(9,j);
delay(5);
}
delay(2000);
}
}
void Alarm3()
{
while(bjbz3==0)
{
for(int m=400;m《=1400;m++)
{
tone(9,m);
delay(5);
}
delay(5000);
for(int m=1400;m》=400;m--)
{
tone(9,m);
delay(5);
}
delay(2000);
}
}
全部0条评论
快来发表一下你的评论吧 !