|
樓主 |
發表於 2014-4-20 17:52:09
|
顯示全部樓層
搞了一整個下午,終於將2個功能寫入同一個程式當中,也許寫的不是很漂亮,但動作是正常了,
接下來還想再加入一氧化碳警報與防盜警報,一氧化碳警報也許還可以,防盜警報方面還要加一顆解除按鈕,
就不知要如何寫了 ? 希望知道的大大能幫助在下,感謝各位
int snr1 = 2; //設定第2腳為snr1火災偵測
int snr2 = 4; //設定第4腳為snr2瓦斯偵測
int led1 = 13; //設定第13腳為led1
int led2 = 8; //設定第8腳為led2
int buzzer = 12; //設定第12腳為嚮笛
int a; //60秒旗標設a為嚮笛啟動的基準次數
void setup()
{
Serial.begin(9600); //設定Serial傳輸速度
pinMode(led1, OUTPUT); //設定led1腳為輸出模式
pinMode(led2, OUTPUT); //設定led2腳為輸出模式
pinMode(snr1, INPUT); //設定snr1腳為輸入模式
pinMode(snr2, INPUT); //設定snr2腳為輸入模式
pinMode(buzzer, OUTPUT); //設定buzzer腳為輸出模式
}
void loop()
{
int snr1Sate = digitalRead(snr1); //設snr1Sate為讀取數位輸入PIN腳snr1的值
int snr2Sate = digitalRead(snr2); //設snr2Sate為讀取數位輸入PIN腳snr2的值
if(snr1Sate == 1 && snr2Sate == 1)
{
Serial.println("Safe"); //序列訊息顯示Safe
digitalWrite(led1, LOW); // led1滅
digitalWrite(led2, LOW); // led2滅
digitalWrite(buzzer, HIGH); //寫入嚮笛腳為高電位不叫
a=0;
}
else
{
if(a==60 && snr1Sate == 0 && snr2Sate == 1) //當a=60,snr1Sate==1 snr2Sate==0,則執行以下指令
{
Serial.println("Get Fired"); //序列訊息顯示 Get Fired
digitalWrite(buzzer, HIGH); //因a=60所以嚮笛停止
digitalWrite(led1, HIGH); // led1亮
delay(500); //持續點亮0.5秒
digitalWrite(led1, LOW); //led1滅
delay(500); //熄滅0.5秒
}
if(a==60 && snr1Sate == 1 && snr2Sate == 0) //當a=60,snr1Sate==0 snr2Sate==1,則執行以下指令
{
Serial.println("Gas out of pape"); //序列訊息顯示 ""Gas out of pape"
digitalWrite(buzzer, HIGH); //因a=60所以嚮笛停止
digitalWrite(led2, HIGH); //led2亮
delay(500); //持續點亮0.5秒
digitalWrite(led2, LOW); //led1滅
delay(500); //熄滅0.5秒
}
if(a==60 && snr1Sate == 0 && snr2Sate == 0) //當a=60,snr1Sate==0 snr2Sate==0,則執行以下指令
{
Serial.println("Gas out of pape & Get Fired"); //序列訊息顯示 ""Gas out of pape & Get Fired"
digitalWrite(buzzer, HIGH); //因a=60所以嚮笛停止
digitalWrite(led1, HIGH); // led1亮
digitalWrite(led2, HIGH); //led2亮
delay(500); //持續點亮0.5秒
digitalWrite(led1, LOW); //led1滅
digitalWrite(led2, LOW); //led2滅
delay(500); //熄滅0.5秒
}
else
{
if(a!=60 && snr1Sate == 0 && snr2Sate == 1) //當a不等60,snr1Sate==0 snr2Sate==1,則執行以下指令
{
Serial.println("Get Fired"); //序列訊息顯示 Get Fired
digitalWrite(buzzer, LOW); //寫入嚮笛腳為低電位叫
digitalWrite(led1, HIGH); // led1亮
delay(500); //持續點亮0.5秒
digitalWrite(led1, LOW); //led1滅
delay(500); //熄滅0.5秒
a=a++; //a每循環過1次就加1,然後程式跳回void loop()再執行
}
if(a!=60 && snr1Sate == 1 && snr2Sate == 0) //當a不等60,snr1Sate==1 snr2Sate==0,則執行以下指令
{
Serial.println("Gas out of pape"); //序列訊息顯示 "Gas out of pape"(瓦斯漏氣)
digitalWrite(buzzer, LOW); //寫入嚮笛腳為低電位叫
digitalWrite(led2, HIGH); // led2亮
delay(500); //持續點亮0.5秒
digitalWrite(led2, LOW); //led1滅
delay(500); //熄滅0.5秒
a=a++; //a每循環過1次就加1,然後程式跳回void loop()再執行
}
if(a!=60 && snr1Sate == 0 && snr2Sate == 0) //當a=60,snr1Sate==0 snr2Sate==0,則執行以下指令
{
Serial.println("Gas out of pape & Get Fired"); //序列訊息顯示 ""Gas out of pape & Get Fired"
digitalWrite(buzzer, LOW); //因a=60所以嚮笛停止
digitalWrite(led1, HIGH); // led1亮
digitalWrite(led2, HIGH); //led2亮
delay(500); //持續點亮0.5秒
digitalWrite(led1, LOW); //led1滅
digitalWrite(led2, LOW); //led2滅
delay(500); //熄滅0.5秒
a=a++; //a每循環過1次就加1,然後程式跳回void loop()再執行
}
}
}
} |
|