找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

求教!關(guān)于arduino 時(shí)間控制問(wèn)題

查看數(shù): 5688 | 評(píng)論數(shù): 7 | 收藏 0
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2018-6-13 10:40

正文摘要:

求教:用人體熱釋制作感應(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&n ...

回復(fù)

ID:348109 發(fā)表于 2018-6-14 19:46
zhanghyg 發(fā)表于 2018-6-13 15:13
你這句目的是先做減法在比較,但是比較的優(yōu)先級(jí)大于減號(hào)的優(yōu)先級(jí),所以芯片會(huì)先做比較再做減法,要想達(dá)到 ...

改了,把nowtime=millis(); 放置在void setup(){}內(nèi)仍然不行。見(jiàn)笑了因?yàn)槭羌冃“滓粋(gè),還是要謝謝高手的指點(diǎn)!!以下是最新的程序代碼:


//人體熱釋模塊實(shí)驗(yàn),當(dāng)人經(jīng)過(guò)時(shí)燈亮,再經(jīng)過(guò)時(shí)燈滅。
//在燈亮情況下沒(méi)有人移動(dòng)時(shí)根據(jù)設(shè)定好的時(shí)間燈自動(dòng)熄滅。(本程序定義30秒鐘)
#define LED 7      //定義LED引腳為7
#define BUTTON 2   //定義按鈕開(kāi)關(guān)引腳2
const long duration=30000;//設(shè)定時(shí)間30秒
unsigned long millis();
unsigned long nowtime=0;
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
     if((millis()-nowtime)>duration&&(LED==HIGH))
      {
         nowtime=millis();
        digitalWrite(LED,LOW);
      }
   }
  else
  {
    digitalWrite(LED,LOW); //關(guān)閉LED
  }

}

ID:330198 發(fā)表于 2018-6-14 08:47

這句應(yīng)該放到最上面賦值,只能執(zhí)行一次,不然你每次循環(huán)到這里都會(huì)重新賦值,一樣的數(shù)值相減永遠(yuǎn)等于零。
ID:348109 發(fā)表于 2018-6-13 17:07
已經(jīng)加了掛號(hào),還是無(wú)法自動(dòng)熄滅,再次求教!謝謝!
nowtime=millis();

      if((millis()-nowtime)>duration)
      {

        digitalWrite(LED,LOW);
      }
ID:351227 發(fā)表于 2018-6-13 17:01
原來(lái)如此
ID:330198 發(fā)表于 2018-6-13 15:13

你這句目的是先做減法在比較,但是比較的優(yōu)先級(jí)大于減號(hào)的優(yōu)先級(jí),所以芯片會(huì)先做比較再做減法,要想達(dá)到目的加個(gè)括號(hào)就可以了。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表