Repost it use
[mw_shl_code=cpp,true]// Handle the Button 抖动
// by tsaiwn@ydu.edu.tw 育达科大 多媒体与游戏系; 苗栗; 台湾
int btA = 3; // 5 ? 压下开灯 pin 3 ? pin 5 ? change it by yourself; 0.168 second should be enough
int btB = 4; // 压下熄灭灯
int led = 13;
int bounce = 168; // bounce time for 抖动判断; you can change it to test it
void setup( ) {
pinMode (btA,INPUT_PULLUP);
pinMode (btB,INPUT_PULLUP);
pinMode (led,OUTPUT);
}
int aStat = HIGH; //没按下是 HIGH (因INPUT_PULLUP)
int bStat = HIGH;
void loop( ) {
if( clickA( ) ) digitalWrite(led,HIGH);
if( clickB( ) ) digitalWrite(led, LOW);
} // loop(
long lastHitAA = 0;
long lastHitBB = 0;
bool clickCheck(int btn, int& status, long& lastTime); // declare
bool clickA( ) {
return clickCheck(btA, aStat, lastHitAA);
}
bool clickB( ) {
return clickCheck(btB, bStat, lastHitBB);
}
//
bool clickCheck(int bt, int& xxStat, long& lastHit) {
int a = digitalRead(bt);
if(a == xxStat) return false; // no change
int m = millis( );
if(a == LOW) { // 压下 !
if(m - lastHit < bounce) return false; // ignore
lastHit = m; // record the time
return true; // Yes, you hit it
}
// released btnA ( Low --> HIGH)
return false;
}
/// End of the Program
// by tsaiwn@ydu.edu.tw 育达科大 多媒体与游戏系; 苗栗; 台湾
//==========================================================[/mw_shl_code]