求教:用人體熱釋制作感應燈實驗(程序為網上下載用于學習,自己添加了時間控制函數),
為何設定了無動作時的等待時間如1分鐘后燈無法自動熄滅,小白一枚請高手幫忙指點謝謝!程序代碼如下:
#define LED 7 //定義LED引腳為7
#define BUTTON 2 //定義按鈕開關引腳2
uint32_t duration=60000;//設定時間1分鐘(60000毫秒)
uint32_t time;
uint32_t nowtime;
int val=0; //變量用來儲存按鈕狀態
int old_val=0; //暫存val變量的上一個時間單位
int state=0; //0表示LED關閉,1表示打開
void setup()
{
pinMode(LED,OUTPUT); //設定LED引腳為輸出狀態
pinMode(BUTTON,INPUT); //設定按鈕引腳為輸入狀態
}
void loop()
{
val=digitalRead(BUTTON); //讀取按鈕狀態并儲存
if((val==HIGH)&&(old_val==LOW)) //檢查按鈕的變化情況
{
state=1-state;
delay(40); //延時簡單抗抖動
}
old_val=val; //VAL下載已經是舊的,讓我們暫存一下
if(state==1)
{ digitalWrite(LED,HIGH); //開啟LED
nowtime=millis();
if(millis()-nowtime>duration)
{
digitalWrite(LED,LOW);
}
}
else
{
digitalWrite(LED,LOW); //關閉LED
}
}
|