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