NodeMCU检测Flash按键实现长按触发(用于进入设计好的配置模式)(C++开发)
程序员文章站
2022-06-08 19:18:37
...
零、芯片io脚
一、按键中断触发
只有部分io口支持中断,选io时注意这个。nodeMCU的flash按钮不支持中断。只能用下面的循环判断。
这里的例子是gpio2。
int pinInterrupt = 2; //接中断信号的脚 2= gpio2
void onChange()
{
if ( digitalRead(pinInterrupt) == LOW )
Serial.println("Key Down");
else
Serial.println("Key UP");
}
void setup()
{
Serial.begin(115200); //打开串口
pinMode( pinInterrupt, INPUT);//设置管脚为输入
//Enable中断管脚, 中断服务程序为onChange(), 监视引脚变化
attachInterrupt( digitalPinToInterrupt(pinInterrupt), onChange, CHANGE);
}
void loop()
{
// 模拟长时间运行的进程或复杂的任务。
for (int i = 0; i < 100; i++)
{
// 什么都不做,等待10毫秒
delay(10);
}
}
二、循环检测按键并判断长按事件
int pinInterrupt = 0; //0 is the flash button ,so can use flash button as the config button
//gpio0
void setup()
{
Serial.begin(115200); //打开串口
pinMode( pinInterrupt, INPUT);//设置管脚为输入
}
int count = 0;
void loop()
{
while(digitalRead(pinInterrupt) == LOW) {
delay(200);
count ++;
if (count >= 25) { //>=5s
Serial.println("Long Key");
break;
}
}
count = 0;
delay(200);//nothing to do just delay
}