背景说明
在使用柿饼派制作桌面时钟或其他显示设备的时候,发现屏幕一直亮着,就想着能不能制作一个类似手机一样的息屏功能,记得柿饼派的出厂Demo 中有一定时间内不操作屏幕会进入锁屏界面的功能,就想着在这个基础上添加一些背光控制的功能,实现类手机的息屏功能。
话不多说,开干
1.先查看一下柿饼派的电路图,确定 LCD 背光控制的引脚是哪个。
从这里可以看到 LCD_BL_EN 这个引脚是控制 LCD 背光的开关的。
然后看M3模块上的主控的引脚, LCD_BL_EN 的 IO 引脚是 PE5。
2.先写个 C 代码测试一下背光控制
include include define LCD_BL_EN_PINGET_PIN(GPIO_PORT_E, GPIO_PIN_5)intlcd_on(void){ rt_pin_mode(LCD_BL_EN_PIN, PIN_MODE_OUTPUT); rt_pin_write(LCD_BL_EN_PIN,PIN_HIGH); rt_kprintf(“LCD ON !!!\n”);return0; }intlcd_off(void){ rt_pin_mode(LCD_BL_EN_PIN, PIN_MODE_OUTPUT); rt_pin_write(LCD_BL_EN_PIN, PIN_LOW); rt_kprintf(“LCD OFF!!!\n”); } MSH_CMD_EXPORT(lcd_on,lcd_on); MSH_CMD_EXPORT(lcd_off,lcd_off); 然后编译,更新固件,通过 msh 命令行使用 lcd_on 和 lcd_off 测试验证LCD 背光正常开关。3.编写 js-c 部分代码 include includeinclude include include define LCD_BL_EN_PINGET_PIN(GPIO_PORT_E, GPIO_PIN_5)staticjs_object_tjs_message_obj= JS_ECMA_VALUE_UNDEFINED; JS_DECLARE_HANDLER(lcd_on){ rt_kprintf(“==> lcd blackligt on\n”); rt_pin_mode(LCD_BL_EN_PIN, PIN_MODE_OUTPUT); rt_pin_write(LCD_BL_EN_PIN, PIN_HIGH);returnjs_create_number(1); } JS_DECLARE_HANDLER(lcd_off){ rt_kprintf(“==> lcd blackligt off\n”); rt_pin_mode(LCD_BL_EN_PIN, PIN_MODE_OUTPUT); rt_pin_write(LCD_BL_EN_PIN, PIN_LOW);returnjs_create_number(0); }js_object_tmodule_init(void){js_object_tobj = js_create_object();if(js_resolve_error(obj))returnjs_create_null(); rt_kprintf("==> module_init\n"); JS_REGISTER_METHOD_ALIAS(obj, lcd_on,lcd_on_handler);JS_REGISTER_METHOD_ALIAS(obj, lcd_off, lcd_off_handler);returnobj; }JS_MODULE(module_demo, module_init)
4.通过 UI Builder 创建 UI 工程
1.参考柿饼派出厂Demo 的代码,设计锁屏界面
锁屏界面需要注意的是需要把page 的 BindTouch 绑定在 onTounch 函数中处理。
还有点击解锁的按钮的事件绑定在 onBtn 函数中处理,是否进入主页面等操作。
2.设计主页面,这里仅是创建一个页面,放置了一个背景图片。
3.由于 UI 工程的页面和代码需要相对应,这里就直接上传了代码,有兴趣的可以下载试试。
原作者:shadowliang
|