嵌入式技术论坛
直播中

李军

7年用户 1234经验值
私信 关注
[经验]

如何去实现柿饼派一种类手机的息屏功能呢

背景说明

在使用柿饼派制作桌面时钟或其他显示设备的时候,发现屏幕一直亮着,就想着能不能制作一个类似手机一样的息屏功能,记得柿饼派的出厂Demo 中有一定时间内不操作屏幕会进入锁屏界面的功能,就想着在这个基础上添加一些背光控制的功能,实现类手机的息屏功能。

话不多说,开干

1.先查看一下柿饼派的电路图,确定 LCD 背光控制的引脚是哪个。

1.jpg

从这里可以看到 LCD_BL_EN 这个引脚是控制 LCD 背光的开关的。

1.jpg

然后看M3模块上的主控的引脚, LCD_BL_EN 的 IO 引脚是 PE5。

2.先写个 C 代码测试一下背光控制

include
include
define LCD_BL_EN_PIN GET_PIN(GPIO_PORT_E, GPIO_PIN_5)//PE5 //44 如果SDK 不支持 GET_PIN获取,可以直接使用IO 编号:
int lcd_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”);
return 0;
}

int lcd_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
include // C与JS交互的API相关头文件
include
include
include
define LCD_BL_EN_PIN GET_PIN(GPIO_PORT_E, GPIO_PIN_5) // 定义需要操作的IO口
static js_object_t js_message_obj = JS_ECMA_VALUE_UNDEFINED;

JS_DECLARE_HANDLER(lcd_on) // 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);
return js_create_number(1);
}

JS_DECLARE_HANDLER(lcd_off) //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);
return js_create_number(0);
}

js_object_t module_init(void)
{
js_object_t obj = js_create_object();
if (js_resolve_error(obj))
return js_create_null();

rt_kprintf("==> module_init\n");
JS_REGISTER_METHOD_ALIAS(obj, lcd_on,lcd_on_handler); // 注册一个 lcd_on 方法
JS_REGISTER_METHOD_ALIAS(obj, lcd_off, lcd_off_handler); // 注册一个 lcd_off 方法
 return obj;
}

//C上实现一个JS的module,名字叫做 mudule_demo,然后JS上便可以require(‘module_demo’)引入使用
JS_MODULE(module_demo, module_init)

4.通过 UI Builder 创建 UI 工程

1.参考柿饼派出厂Demo 的代码,设计锁屏界面

1.jpg

锁屏界面需要注意的是需要把page 的 BindTouch 绑定在 onTounch 函数中处理。

1.jpg

还有点击解锁的按钮的事件绑定在 onBtn 函数中处理,是否进入主页面等操作。

2.设计主页面,这里仅是创建一个页面,放置了一个背景图片。

1.jpg

3.由于 UI 工程的页面和代码需要相对应,这里就直接上传了代码,有兴趣的可以下载试试。

原作者:shadowliang

更多回帖

发帖
×
20
完善资料,
赚取积分