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