Nodemcu freertos 学习之路 -- GPIO口控制LED灯开关

1.环境介绍

如果创建项目请看第2篇 led闪烁.  ESP8266实现开关功能。这里利用线程获取gpio的状态. 从而控制led灯 亮或灭

2.软件消抖

关于led灯的控制和GPIO口状态的读取 在第2篇中都有介绍了,这里主要处理软件消抖

软件消抖的原理是,当获取到按键按下的状态时。延迟20ms再获取一次状态,当第二次的状态同样为按下时。就判断为没有抖动了。即为按下状态。最后等待按键松开即可。

代码

void key_handler_task(void  *pvParameters){
key_init();
for(;;){
uint32_t bit;
if (GPIO_INPUT_GET(15) == 0x01){
vTaskDelay(20 / portTICK_RATE_MS);
if( GPIO_INPUT_GET(15) == 0x01){
led_toggle();
while( GPIO_INPUT_GET(15) == 0x01 );
}
}
vTaskDelay(100 / portTICK_RATE_MS);
}
vTaskDelete(NULL);
}

3.查看结果

Nodemcu freertos 学习之路 -- GPIO口控制LED灯开关_第1张图片

查看到led of led on 同时LED灯跟据开关次数不停迁换


你可能感兴趣的:(esp8266)