——來自迪文開發(fā)者論壇
本期為大家推送迪文開發(fā)者論壇獲獎開源案例——隔空手勢識別測試系統(tǒng),工程師采用7英寸COF,通過T5L OS核與 PAJ7620U2手勢識別傳感器進行數(shù)據(jù)交互,不需要使用任何按鍵,只需將手貼近傳感器即可進入菜單系統(tǒng)控制屏幕,實現(xiàn)上、下、左、右、貼近、遠離、左旋轉(zhuǎn)、右旋轉(zhuǎn)、揮手9種手勢效果。不一樣的屏幕交互體驗,推薦大家前來觀看!
【演示視頻】
完整開發(fā)資料含迪文屏DGUS工程資料與C51代碼,獲取方式:
1. 前往迪文開發(fā)者論壇獲取:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=9911&extra=page%3D1
2. 微信公眾號中回復(fù)“隔空手勢識別”獲取。
【UI素材展示】
【UI開發(fā)示例】
【C51工程設(shè)計】
T5L OS核與PAJ7620U2手勢識別傳感器進行數(shù)據(jù)交互,檢測當前的手勢,判斷當前顯示的圖片和翻頁顯示的圖片,實現(xiàn)利用手勢來切換頁面的功能。參考代碼如下:
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; //翻頁最終次數(shù)
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;
}
}