欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機如何讓蜂鳴器響6次就停,下一次條件成立還繼續(xù)響6次 [打印本頁]

作者: 羅大韓    時間: 2021-6-10 22:55
標題: 單片機如何讓蜂鳴器響6次就停,下一次條件成立還繼續(xù)響6次
如何讓蜂鳴器響6次就停,下一次條件成立還繼續(xù)響6次??現(xiàn)在的問題是蜂鳴器只在第一次條件成立的時候響6次就停,第二次條件成立就不響了,我想實現(xiàn)的是只要條件成立就響6次就停,程序該怎么改呢?程序中shu是紅外檢測到的人數,是個變量,shezhishu是可以通過按鍵調節(jié)設置值,只要統(tǒng)計到的人數小于設置的值,蜂鳴器就會響6次就停,想要實現(xiàn)的是只要條件成立就響6次就停,而不是只有第一次條件成立響6次就停第二次條件成立就不響了。程序該怎么改???這是部分程序int b=0;
uint shezhishu=0;
int shu;


if(shu<shezhishu)                                                                                                                        //實際檢測到場人數小于設置數
  {
  if(b<=5)
  {
  beer=0; //蜂鳴器響
  delay(100);
  beer=1;
  delay(100);
  b++;                                                                                                                                        //啟用蜂鳴器報警
  }
  }
  else
  {
  beer=1;
  }

   if(h1==0&&h2==0&&h3==0&&h4==0)                                                //如果四個紅外傳感器都感應到人
   {        
   shu=4;                                                                                                        //則說明檢測到4人
   }  
     if(h1==1&&h2==1&&h3==1&&h4==1)                                       
   {
   shu=0;                                                                                                                                
   }



作者: 戰(zhàn)鋰    時間: 2021-6-11 07:54
一直檢測,檢測完調用蜂鳴器響,就行了。

void bbbb(){
if(shu<shezhishu)                                                                                                                        //實際檢測到場人數小于設置數
  {
  if(b<=5)
  {
  beer=0; //蜂鳴器響
  delay(100);
  beer=1;
  delay(100);
  b++;                                                                                                                                        //啟用蜂鳴器報警
  }
  }
  else
  {
  beer=1;
  }
}

while(1){
   if(h1==0&&h2==0&&h3==0&&h4==0)                                                //如果四個紅外傳感器都感應到人
   {        
   shu=4;                                                                                                        //則說明檢測到4人
   }  
     if(h1==1&&h2==1&&h3==1&&h4==1)                                       
   {
   shu=0;                                                                                                                                
   }
bbbb();
}

作者: wulin    時間: 2021-6-11 08:00

#define b 20000 //根據主循環(huán)周期調整b值
bit sign=0;

void warning()//放在主循環(huán)中運行,因為沒有阻滯延時,不會影響其它程序運行
{
        static unsigned int  i;
        static unsigned char j;
        if(sign==1)     //蜂鳴器報警條件
        {
                i++;
                if(i>=b)//響鈴周期
                {
                        i=0;
                        j++;
                }
                if(i<b/2)//一半時間響,一半時間停
                        beer=0; //蜂鳴器響
                else beer=1;//蜂鳴器停
                if(j>=6)
                {//全部復位
                        sign=0;
                        i=0;
                        j=0;
                        beer=1;
                }
        }
}

作者: 羅大韓    時間: 2021-6-11 08:55
wulin 發(fā)表于 2021-6-11 08:00
#define b 20000 //根據主循環(huán)周期調整b值
bit sign=0;

謝謝大哥
作者: 羅大韓    時間: 2021-6-11 08:56
戰(zhàn)鋰 發(fā)表于 2021-6-11 07:54
一直檢測,檢測完調用蜂鳴器響,就行了。

void bbbb(){

謝謝大哥
作者: 名字不是重點    時間: 2021-6-11 09:11
你的代碼少了一條賦值:
if(shu<shezhishu)                                                                                                                        //實際檢測到場人數小于設置數
  {
  b=0;  //沒有這個賦值,b在一輪過后就一直大于5了,最極限能5151*5=255)后溢出重來。
  if(b<=5)
  {
  beer=0; //蜂鳴器響
  delay(100);
  beer=1;
  delay(100);
  b++;                                                                                                                                        //啟用蜂鳴器報警
  }
  }
  else
  {
  beer=1;
  }
作者: yzwzfyz    時間: 2021-6-11 11:07
本帖最后由 yzwzfyz 于 2021-6-11 17:48 編輯

1、做一個只響6次的小程序。
2、條件成立就調用它。
以下是要點,需要你下決斷:
小程序運行過程序中,如何處理新出現(xiàn)的條件:
1、立即停止小程序,則6次就可能變成4次……;
2、不理它,新出現(xiàn)的條件就被放棄,但是不影響上次6次鳴叫;
3、延時處理,待6次鳴叫完成后,再叫6次,這樣可能一直6次、6次地叫不停(如果新條件多次到來)。
……
只事先架構、考慮好預案,你才能如愿以償。
作者: declansang    時間: 2022-12-26 12:43
wulin 發(fā)表于 2021-6-11 08:00
#define b 20000 //根據主循環(huán)周期調整b值
bit sign=0;

不錯的思路,已借鑒。。。





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1