调试程序
按下容易出现抖动,也程序误以为按下开关,所以要避免Debounce
int buttonState = 0; // 按钮状态
int beforeState = 0; // 按下前的状态
int counter = 0; // 计数器
void setup() {
.begin(9600); // 频率设置
Serial
(LED_BUILTIN, OUTPUT); // 设置点亮LED
pinMode
(16, INPUT); // D0针脚为信号监测
pinMode}
void loop() {
= digitalRead(16); // 获取按钮状态
buttonState
if (buttonState == HIGH) { // 判断是否按下
(LED_BUILTIN,LOW ); //按下点亮
digitalWrite} else {
(LED_BUILTIN,HIGH ); // 否则关闭
digitalWrite}
//Serial.println(buttonState);
//Serial.println(beforeState);
//Serial.println("------------------------");
if(buttonState==HIGH and beforeState==LOW){
++counter;
.print("the press time is: ");
Serial.print(counter);
Serial.println();
Serial//Serial.println("++++++++++++++++++++++++++++++++++");
}
//Serial.println(buttonState);
// 避免debounce
if(buttonState!=beforeState){
(50);
delay}
=buttonState; // 将按钮当前状态传递回去
beforeState(1);
delay}
精简程序
int buttonState = 0; // 按钮状态
int beforeState = 0; // 按下前的状态
int counter = 0; // 计数器
void setup() {
.begin(9600); // 频率设置
Serial(16, INPUT); // D0针脚为信号监测
pinMode}
void loop() {
if(buttonState==HIGH and beforeState==LOW){
++counter;
.print("the press time is: ");
Serial.print(counter);
Serial.println();
Serial}
if(buttonState!=beforeState){
(50);
delay}
=buttonState; // 将按钮当前状态传递回去
beforeState(1);
delay}