——来自迪文开发者论坛
本期为大家推送迪文开发者论坛获奖开源案例——隔空手势识别测试系统,工程师采用7英寸COF,通过T5L OS核与 PAJ7620U2手势识别传感器进行数据交互,不需要使用任何按键,只需将手贴近传感器即可进入菜单系统控制屏幕,实现上、下、左、右、贴近、远离、左旋转、右旋转、挥手9种手势效果。不一样的屏幕交互体验,推荐大家前来观看!
【演示视频】
完整开发资料含迪文屏DGUS工程资料与C51代码,获取方式:
1. 前往迪文开发者论坛获取:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=9911&extra=page%3D1
2. 微信公众号中回复“隔空手势识别”获取。
【UI素材展示】
【UI开发示例】
【C51工程设计】
T5L OS核与PAJ7620U2手势识别传感器进行数据交互,检测当前的手势,判断当前显示的图片和翻页显示的图片,实现利用手势来切换页面的功能。参考代码如下:
void select_operate(uint16_t gesrure_value)
{
if(gesrure_value == GES_UP) //上
{
if(select_value >= 2)
{
select_value -= 2;
}
dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);
}
else if(gesrure_value == GES_DOWN) //下
{
if(select_value <= 1)
{
select_value += 2;
}
dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);
}
else if(gesrure_value == GES_LEFT) //左
{
if(select_value % 2 == 1)
{
select_value -= 1;
}
dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);
}
else if(gesrure_value == GES_RIGHT) //右
{
if(select_value % 2 == 0)
{
select_value += 1;
}
dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);
}
}
void turning_operate(uint16_t gesrure_value)
{
uint16_t i = 0;
uint8_t turning_mode = 0; //翻页模式,0上,1下,2左,3右
uint16_t turning_count = 0; //翻页最终次数
if(gesrure_value == GES_UP || gesrure_value == GES_DOWN || gesrure_value == GES_LEFT || gesrure_value == GES_RIGHT)
{
if(gesrure_value == GES_UP) //上
{
turning_mode = 0;
turning_count = 48;
}
else if(gesrure_value == GES_DOWN) //下
{
turning_mode = 1;
turning_count = 48;
}
else if(gesrure_value == GES_LEFT) //左
{
turning_mode = 2;
turning_count = 80;
}
else if(gesrure_value == GES_RIGHT) //右
{
turning_mode = 3;
turning_count = 80;
}
if(turning_current_image == 0 || turning_current_image == 2)
{
turning_current_image = 1;
}
else
{
turning_current_image = 2;
}
for(i = 0;i <= turning_count;i++)
{
switch(turning_mode)
{
case 0:
dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, 0, 480 - i * 10);
t5l0_sys_delay_ms(20);
if(turning_last_image != 0)
{
dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0, 0 - i * 10);
}
break;
case 1:
dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, 0, -480 + i * 10);
t5l0_sys_delay_ms(20);
if(turning_last_image != 0)
{
dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0, 0 + i * 10);
}
break;
case 2:
dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, 800 - i * 10, 0);
t5l0_sys_delay_ms(20);
if(turning_last_image != 0)
{
dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0 - i * 10, 0);
}
break;
case 3:
dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, -800 + i * 10, 0);
t5l0_sys_delay_ms(20);
if(turning_last_image != 0)
{
dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0 + i * 10, 0);
}
break;
}
t5l0_sys_delay_ms(20);
}
turning_last_image = turning_current_image;
}
}