esp8266--03 按钮次数计数

调试程序

按下容易出现抖动,也程序误以为按下开关,所以要避免Debounce


int buttonState = 0;         // 按钮状态
int beforeState = 0;		// 按下前的状态	
int counter = 0;			// 计数器

void setup() {

  Serial.begin(9600); 		// 频率设置
 
  pinMode(LED_BUILTIN, OUTPUT);		// 设置点亮LED
 
  pinMode(16, INPUT);				// D0针脚为信号监测
}

void loop() {
  buttonState = digitalRead(16);		// 获取按钮状态

  if (buttonState == HIGH) {			// 判断是否按下
          digitalWrite(LED_BUILTIN,LOW );	//按下点亮
      } else {
          digitalWrite(LED_BUILTIN,HIGH );   // 否则关闭
            }
  
  //Serial.println(buttonState); 
  //Serial.println(beforeState); 
  //Serial.println("------------------------");         
  if(buttonState==HIGH and beforeState==LOW){
      ++counter;
      Serial.print("the press time is: ");
      Serial.print(counter);
      Serial.println();
      //Serial.println("++++++++++++++++++++++++++++++++++");
    }
  //Serial.println(buttonState);
  // 避免debounce
  if(buttonState!=beforeState){
    delay(50);
    }
  beforeState=buttonState;			// 将按钮当前状态传递回去
  delay(1);
}

精简程序

int buttonState = 0;         // 按钮状态
int beforeState = 0;		// 按下前的状态	
int counter = 0;			// 计数器

void setup() {
  Serial.begin(9600); 		// 频率设置
  pinMode(16, INPUT);				// D0针脚为信号监测
}

void loop() {       
  if(buttonState==HIGH and beforeState==LOW){
      ++counter;
      Serial.print("the press time is: ");
      Serial.print(counter);
      Serial.println();
    }
  if(buttonState!=beforeState){
    delay(50);
    }
  beforeState=buttonState;			// 将按钮当前状态传递回去
  delay(1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值