|
求教一下,小白一枚,通過人體熱釋模塊作個(gè)實(shí)驗(yàn),就是人經(jīng)過時(shí)燈亮,再經(jīng)過時(shí)燈滅。能否再控制燈亮達(dá)到幾分鐘后不管有沒有動(dòng)作燈都會(huì)自動(dòng)滅
- #define LED 7 //定義LED引腳為7
- #define BUTTON 2 //定義按鈕開關(guān)引腳2
- unsigned long ps=0;//定義上一次當(dāng)前循環(huán)時(shí)間間隔
- const long interval = 60000;//定義固定時(shí)間間隔1分鐘
- unsigned long cm=millis();//記錄程序到此運(yùn)行時(shí)間
- int val=0; //變量用來儲(chǔ)存按鈕狀態(tài)
- int old_val=0; //暫存val變量的上一個(gè)時(shí)間單位
- int state=0; //0表示LED關(guān)閉,1表示打開
- 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); //開啟LED
- if (cm-ps>=interval)
- {
- ps=cm;
- if(LED==HIGH)
- {
- digitalWrite(LED,LOW);
- }
- }
- }
- else
- {
- digitalWrite(LED,LOW); //關(guān)閉LED
- }
- }
復(fù)制代碼
|
|