欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

NodeMCU检测Flash按键实现长按触发(用于进入设计好的配置模式)(C++开发)

程序员文章站 2022-06-08 19:18:37
...

零、芯片io脚

NodeMCU检测Flash按键实现长按触发(用于进入设计好的配置模式)(C++开发)

一、按键中断触发

只有部分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
    }