本帖最后由 lulugl 于 2025-7-20 17:35 编辑
【前言】
在评测计划中有使用pwm来实现调节屏幕亮度,因此本篇为如何使用HMI实现对屏的亮度调节。实现原理为,使用TouchGFX Designer添加一个滑动控件,通过滑动来修改pwm的占空比,实现ST7789的BLK的电压实现。
本次工程在上一篇试用的基础上创建:https://bbs.21ic.com/icview-3470090-1-1.html
【GUI设计】
1、向屏幕添加slider控件,修改背景图标,适配屏幕大小,并修改其最大最小值:
2、同时添加一个Text组件,让其动态显示当前亮度。
3、同时添加图片以及其他说明标签,最后设计的界面如下:
4、添加slider值变化时的虚拟函数:
设计好后重新生成工程。
【代码设计】
1、首先在screenview.hpp中添加virtual void funChange(int value);
2、在screenview.cpp中实现,其代码如下:
void screenView::funChange(int value)
{
int pwmVal = value * 5;
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_3, pwmVal);
Unicode::snprintf(textLightBuffer,TEXTLIGHT_SIZE, "%d", value);
textLight.invalidate();
}
下载后实现效果如下:
调节后效果如下:
【总结】
TouchGFX可以非常方便的实现HMI,提供了非常方便的控制,在少量的代码下,轻松实现对屏幕的的亮度调节。
|