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

專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino的輕觸按鍵檢測(cè)

作者:y8686   來(lái)源:轉(zhuǎn)自y8686   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月05日   【字體:

在Arduino上做單純按鍵檢測(cè),其實(shí)是很簡(jiǎn)單的。 但是我這里做的方法考慮了一下防抖和抗干擾。

 
大概的原理是:
 
每一次主循環(huán)檢測(cè)一次按鍵,發(fā)現(xiàn)低電平(可能為按鍵按下),就在計(jì)數(shù)器變量(o_prell)加一, 直到計(jì)數(shù)器變量(o_prell)達(dá)到 BUTTONS_SAMPLES 定義的值,則判定按鍵按下。 而在此過(guò)程中如果檢測(cè)到高電平,則計(jì)數(shù)器變量(o_prell)減一,這樣起到防抖和抗干擾的作用。
 
按鍵釋放時(shí),則相反,計(jì)數(shù)器變量(o_prell)減一,直到 0。
 
BUTTONS_SAMPLES 我設(shè)置的比較大, 是6000, 主要因?yàn)槌绦蚶餂](méi)什么代碼,主循環(huán)比較快。如果程序代碼較多,主循環(huán)沒(méi)有這么快,這個(gè)值要調(diào)低的。
這個(gè)值改低一點(diǎn),按鍵靈敏度會(huì)提高,但是防抖和抗干擾的作用會(huì)變差。
 
如下程序?qū)崿F(xiàn)的功能是,每按一次按鍵,Arduino板上的LED會(huì)切換亮滅。  按鍵接在pin#7和GND之間,pin#7需要上拉電阻到5V。
 
 
C++語(yǔ)言: 高亮代碼由發(fā)芽網(wǎng)提供


#define BUTTON_PIN          7       // Button pin
#define LED_PIN             13      // Led pin
#define BUTTONS_SAMPLES     6000   // Affect the sensitivity of the button
#define BUTTON_PRESSED      LOW     // The state of the pin when button pressed

unsigned int o_prell          = 0;      // counter for button pressing detection
boolean button_state          = false;  
unsigned int led_state        = LOW;    // Led off at the beginning

void setup()
{
   //Serial.begin(9600);

   pinMode(BUTTON_PIN, INPUT);
   pinMode(LED_PIN, OUTPUT);
   
   // set initial LED state
   digitalWrite(LED_PIN, led_state);
}

void loop()
{
   check_button();
   digitalWrite(LED_PIN, led_state);
}

void check_button()
{
   int button_input    =   digitalRead(BUTTON_PIN);

   if ((button_input == BUTTON_PRESSED) && (o_prell <</SPAN> BUTTONS_SAMPLES))
   {
       o_prell++;      // counting for button pressing
   }
   else if ((button_input == BUTTON_PRESSED) && (o_prell == BUTTONS_SAMPLES) && !button_state)
   {
       button_state = true;    // button pressed
       //led_state = HIGH;
       led_state = !led_state;
   }
   else if ((button_input != BUTTON_PRESSED) && (o_prell > 0))
   {
       o_prell--;      // counting for button releasing,  or debouncing / immunity
   }
   else if ((button_input != BUTTON_PRESSED) && (o_prell == 0) && button_state)
   {
       button_state = false;
       //led_state = LOW;
   }
}
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 久热在线 | 久草免费在线视频 | 一区二区小视频 | 国产成人在线免费观看 | 在线黄网 | 老熟女毛片| 日本久久久久久 | 人人爱人人 | 国产一区在线播放 | www一区| 亚洲天堂国产 | 色婷婷网 | 亚洲www| 亚洲激情在线视频 | 日韩欧美三区 | 一级黄色小视频 | 久久er99热精品一区二区 | 午夜激情网站 | 欧美一区二区在线视频 | 蜜臀久久99精品久久久久久宅男 | 欧美视频在线观看一区 | 96av视频| 天天操天天操天天 | 亚洲狠狠| 中文字幕在线观看一区二区三区 | 精品一区二区三区四区 | 日本黄色一级 | 久久天天操 | 国产黄在线观看 | 欧美一区二区三区在线 | 国产黄色在线 | 日本一本在线 | 激情丁香| www一区二区 | 中文字幕精品在线观看 | 亚洲免费大片 | 中文字幕播放 | 伊人精品视频 | 精品免费国产一区二区三区四区 | 99黄色| 女子spa高潮呻吟抽搐 |