:::

6-2 按鈕模擬開關

一、按鈕模擬開關

發想:現在生活中的按鈕,大多當開關來用!如何修改為按一下,LED開,再按一下,LED關閉呢?

const int sw=12;    
const int led=13; 
boolean ledStatus=LOW;  
int val;        
void setup() 
{   
  Serial.begin(9600);
  pinMode(led,OUTPUT); 
  pinMode(sw,INPUT_PULLUP);   
}
void loop() 
{
  val=digitalRead(sw);  
  if(val==LOW)    
  {        
    ledStatus=!ledStatus;   
    digitalWrite(led,ledStatus);        
  }    
}

 

按下去放開,並不會很穩定的切換狀態,請問是為什麼?怎麼修改?

二、按鈕彈跳問題(bounce)

原來是機械式按鈕,會有彈跳問題

須加以修改,才能穩定的呈現按鈕功能

範例程式:

 

深入討論:http://yhhuang1966.blogspot.tw/2016/09/arduino_11.html

Arduino IDE 有內建的 debounce code 的範本,可直接拿來修改使用

三、練習

如何修改為目前常見手電筒的模式呢?按一下LED開,再按一下LED閃爍,再按一下LED關閉。


搜尋