[esp32 + LVGL]物理按键控制屏幕上开关和LED闪烁

请添加图片描述

1.简述

IO0 对应按键 控制 IO2LED闪烁,同时当LED亮的时候开关闭合,当LED灭的时候LED闪烁。
为什么这么做,因为手里没有触摸屏。

2. 实现原理

首先我们要明白开关闭合的原理,对于触摸屏来说,当你触摸开关的时候会触发点击事件,同时给开关控件添加点击事件。
添加点击事件,也就是开关闭合

 lv_obj_add_state(guider_ui.screen_sw_1,LV_STATE_CHECKED);
清除点击事件,也就是开关打开
lv_obj_clear_state(guider_ui.screen_sw_1,LV_STATE_CHECKED);

#3.部分代码

    pinMode(LED,OUTPUT);
    pinMode(key, INPUT);
}
    bool state_led = 0;
    uint8_t key_state = 0;
void key_scan()
{
    if(digitalRead(key)==LOW){
        delay(10);
        if(digitalRead(key)==LOW){
            key_state++;
            if(key_state>=200) key_state =200;
        }
    }
    else key_state = 0;
}
void loop()
{    key_scan();
    if(key_state==2){
        state_led = !state_led;
        if(state_led){
        digitalWrite(LED,LOW);
        lv_obj_clear_state(guider_ui.screen_sw_1,LV_STATE_CHECKED);
        }


        else {digitalWrite(LED,HIGH);
           lv_obj_add_state(guider_ui.screen_sw_1,LV_STATE_CHECKED);
        }
    }
    lv_timer_handler(); /* let the GUI do its work */
    delay( 5 );
}

ps: 我上面这种做法很不建议,很时消耗资源,导致LVGL运行十分的卡顿,LVGL内置键盘,鼠标,编码器的接口,因此当没有触摸屏幕的时候用以上器件最为合适了。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我可以提供一些建议,但最终的实现取决于您的需求和技术水平。首先,您需要搜集所需的组件,如esp32Lvgl,WiFi模块等。其次,您需要确定网络天气时钟的功能,以及如何实现它们。最后,您需要开发和调试代码,以完成您的项目。 ### 回答2: ESP32是一个非常强大的开发板,具有Wi-Fi和蓝牙连接功能。Lvgl是一个开源跨平台的GUI库,可以用于制作各种应用界面。现在,我将用300字中文回答如何使用ESP32Lvgl来制作一个网络天气时钟。 首先,我们需要搭建ESP32的开发环境。这包括安装Arduino IDE和ESP32的开发库。接下来,我们将安装并配置Lvgl库。此外,我们还需要安装Json库,用于解析天气数据。 然后,我们需要通过Wi-Fi连接到互联网。我们可以使用ESP32的内置Wi-Fi模块来连接到无线网络,并获取天气数据。我们需要预先获取一个天气API的密钥,并根据API文档中的要求获取天气数据。 接下来,我们需要设计和创建界面。我们可以使用Lvgl库中的各种控件来创建时钟和天气显示。可以创建一个时钟控件,并使用时间库获取当前时间。然后,我们可以创建一个文本框来显示天气数据。 最后,我们需要使用Json库解析天气数据,并将其显示在界面上。我们可以使用ESP32的HTTP客户端库来发送API请求,并使用Json库解析和获取所需的天气数据。 在代码编写完成后,我们可以将代码烧录到ESP32开发板中,并通过串口监视器来进行调试和查看输出。 总结起来,使用ESP32Lvgl来制作一个网络天气时钟需要完成以下步骤:搭建开发环境、连接到Wi-Fi和获取天气数据、创建界面、解析天气数据、编写和烧录代码。通过这个过程,我们可以实现一个功能强大的网络天气时钟。 ### 回答3: 使用ESP32LVGL编写网络天气时钟是一种将网络天气数据与时钟功能结合的创新方案。ESP32是一款功能强大的物联网开发板,而LVGL是一款开源的图形库,能够提供丰富的用户界面功能。 首先,我们可以通过ESP32连接到互联网,使用WiFi或者以太网连接,以获取实时的天气数据。通过与天气API进行通信,可以获取到当地的天气信息,例如温度、湿度、风速等。 然后,利用LVGL的图形库功能,我们可以在屏幕上创建一个美观的时钟界面,并实时显示当前的时间和日期。可以使用LVGL中的时钟小部件来显示时间,并使用合适的字体和样式来提高用户体验。 此外,我们可以利用LVGL的图表功能来显示天气趋势。通过将天气数据以图表的形式表示出来,用户可以直观地了解未来一段时间的天气变化。 另外,LVGL还提供了按钮、滑块等用户交互控件,我们可以利用这些控件来增加一些额外的功能,例如用户可以通过按钮切换不同城市的天气信息,或者调整屏幕亮度等。 最后,将ESP32LVGL进行集成,在开发板上运行我们编写的代码,就可以实现一个功能齐全的网络天气时钟。用户可以通过屏幕直观地获得当前的时间和日期,同时还可以获取实时的天气信息,方便用户决策出门及日常生活。这样的天气时钟不仅提供了时钟的基本功能,还能够通过与网络的结合,提供更多的实用功能,使生活更加便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

おもいね

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值