2017年4月11日 星期二

Arduino學習.按鍵計數器

Arduino學習.按鍵計數器

會用按鍵來控制LED燈後,此篇要用按鍵來計算次數,
並顯示在監控螢幕上,準備硬體安裝
開關*1
10K1k電阻*1
接線

外掛ArduBlock找出拼圖

上傳後打開監控畫面,並壓下按鍵,正常情形下,在未通路前GND訊號經過電阻到P2,當按鍵被壓下,高電位被傳送到P2腳位時,則變數count+1,並顯示在監控畫面上,此時應會發現,當按鍵一直被壓著,就會一直計算,因此需另多加判斷式,來判斷P2是否放手回復,才算一次↓
設定變數BTS和BTL是按下和放手,二種不同狀態,來判斷P2腳位是否有高位和低位的變化,當有變化時才計一次,沒變化時就不計次,此程式可運用在如光電感應器.近接開關或計算馬達轉速等等計數使用

bool _ABVAR_1_BTS= false ;
bool _ABVAR_2_BTL= false ;
int _ABVAR_3_count = 0 ;

void setup()
{
  pinMode( 2 , INPUT);
  pinMode( 13 , OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  _ABVAR_1_BTS = digitalRead(2) ;
  if (( ( _ABVAR_1_BTS ) != ( _ABVAR_2_BTL ) ))
  {
    if (( ( _ABVAR_1_BTS ) == ( HIGH ) ))
    {
      digitalWrite( 13 , HIGH );
      _ABVAR_3_count = ( _ABVAR_3_count + 1 ) ;
      Serial.print(_ABVAR_3_count);
      Serial.println();
    }
  }
  _ABVAR_2_BTL = _ABVAR_1_BTS ;
  digitalWrite( 13 , LOW );
  delay( 50 );
}

求知若渴,虛心若愚

5 則留言:

  1. 用相同方式接線後,發現count數是隨機成長的,甚至在移除pin2的杜邦線以後也是一樣狀況,請問有遇過這種狀況嗎?

    回覆刪除
    回覆
    1. 隨機成長??第一個程式是沒有加判斷式,不論有沒有放手都會一直加數,第二程式加了判斷有沒有放手,才加1,,移除pin2的杜邦線也一樣,那就是訊號沒接到GND,

      刪除
    2. 是,後來發現是杜邦線品質不良,直接變成Floating電位

      刪除
  2. 您好,我在使用相同方法接線後,count數會隨機成長與歸零,換了Arduino板子也一樣,請問版大有遇過類似狀況嗎?

    回覆刪除
    回覆
    1. 隨機歸零??程式裡並沒有歸零,若會自動歸零應該是電力供應不足不穩定,造成電力斷電後歸零,,,裝過電腦桌機就會知道,前置面板要另外很細的排線接到主機板,電力一般較弱且不穩定,,建議接在主機板上的USB接口,而非前置面板孔,

      刪除