久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

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


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

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



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

void bbbb(){
if(shu<shezhishu)                                                                                                                        //實(shí)際檢測到場人數(shù)小于設(shè)置數(shù)
  {
  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)                                                //如果四個紅外傳感器都感應(yīng)到人
   {        
   shu=4;                                                                                                        //則說明檢測到4人
   }  
     if(h1==1&&h2==1&&h3==1&&h4==1)                                       
   {
   shu=0;                                                                                                                                
   }
bbbb();
}

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

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

void warning()//放在主循環(huán)中運(yùn)行,因?yàn)闆]有阻滯延時,不會影響其它程序運(yù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)
                {//全部復(fù)位
                        sign=0;
                        i=0;
                        j=0;
                        beer=1;
                }
        }
}

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

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

void bbbb(){

謝謝大哥
作者: 名字不是重點(diǎn)    時間: 2021-6-11 09:11
你的代碼少了一條賦值:
if(shu<shezhishu)                                                                                                                        //實(shí)際檢測到場人數(shù)小于設(shè)置數(shù)
  {
  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、條件成立就調(diào)用它。
以下是要點(diǎn),需要你下決斷:
小程序運(yùn)行過程序中,如何處理新出現(xiàn)的條件:
1、立即停止小程序,則6次就可能變成4次……;
2、不理它,新出現(xiàn)的條件就被放棄,但是不影響上次6次鳴叫;
3、延時處理,待6次鳴叫完成后,再叫6次,這樣可能一直6次、6次地叫不停(如果新條件多次到來)。
……
只事先架構(gòu)、考慮好預(yù)案,你才能如愿以償。
作者: declansang    時間: 2022-12-26 12:43
wulin 發(fā)表于 2021-6-11 08:00
#define b 20000 //根據(jù)主循環(huán)周期調(diào)整b值
bit sign=0;

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





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人在线视频观看 | 久久影院一区 | 久久视频精品在线 | 色婷婷亚洲一区二区三区 | 99精品免费久久久久久日本 | 青青草一区 | 久久精品小短片 | 一区二区三区久久 | 瑟瑟激情 | 碰碰视频 | 97精品国产97久久久久久免费 | 在线观看中文字幕 | 欧美精品在线一区二区三区 | 亚洲精品在 | av在线电影网站 | 亚洲精品二三区 | 日日日干干干 | 欧美在线成人影院 | 亚洲成人免费av | 精品综合久久久 | 一二三四av | 精品96久久久久久中文字幕无 | 中文字幕男人的天堂 | 97精品久久| 亚洲a在线视频 | 免费看国产精品视频 | 亚洲最大的黄色网址 | 中文字幕不卡在线88 | 日韩视频区 | 91久久久久久久久久久 | 一区二区在线观看av | 狠狠干五月天 | 国产精品久久精品 | 免费在线看a | 在线观看免费av片 | 在线午夜电影 | 小早川怜子xxxxaⅴ在线 | 国产综合精品一区二区三区 | 亚洲aⅴ | 91美女在线观看 | 日本精品视频一区二区 |