我的基本想法是通過Arduino LilyPad 實時at感器和人體紅外感應模塊的信號,有觸發(fā)信號后驅(qū)動有源蜂鳴器模塊報警。
用到的東西:
Arduino LilyPad板子 1
震動傳感器 1
人體紅外感應模塊 1
有源蜂鳴器模塊 1
白色發(fā)光管1
藍色發(fā)光管1
按鍵開關1
USB轉(zhuǎn)TTL板 1
充電寶 1
程序反復修改了幾次,目前的算是定型了吧,檢測到震動傳感器的觸發(fā)信號,延時5秒,蜂鳴器發(fā)出一種頻率的報警聲,同時白色發(fā)光管發(fā)光;
檢測到人體紅外感應模塊的觸發(fā)信號,延時5秒,蜂鳴器發(fā)出第二種種頻率的報警聲,同時藍色發(fā)光管發(fā)光;檢測到人體紅外感應模塊的觸發(fā)信號和震動傳感器的觸 發(fā)信號,延時5秒,蜂鳴器發(fā)出第三種種頻率的報警聲,同時藍色發(fā)光管和白色發(fā)光管發(fā)光;延時5秒是方便主人開門關閉報警;一旦聲光報警觸發(fā)會循環(huán)下去不會 停止,除非主人關閉電源或者充電寶電量不足。
下面是實物照片:
代碼:
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腳接發(fā)光管藍色輸入
pinMode(2,INPUT);//2腳接震動傳感器輸出
pinMode(11,OUTPUT);//11腳接發(fā)光管白色輸入
attachInterrupt(0, blink, FALLING);//D2口為外部中斷0,當有下降沿觸發(fā)的時候調(diào)用blink函數(shù)
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()//數(shù)字輸入傳感器下降沿觸發(fā)中斷服務函數(shù)
{
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文章
32瀏覽量
12261 -
DIY
+關注
關注
176文章
888瀏覽量
349247 -
Arduino
+關注
關注
188文章
6477瀏覽量
187818 -
有源蜂鳴器
+關注
關注
0文章
30瀏覽量
11666
發(fā)布評論請先 登錄
相關推薦
評論