0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【开源】基于迪文屏的智能眼

迪文智能屏 2023-06-22 10:17 次阅读

——来自迪文开发者论坛

本次为大家推荐的迪文开发者论坛开源项目是一个很有意思的模拟人眼跟随运动的例程。工程师使用几张人眼图片素材,实现了眼珠运动、眨眼、人脸识别和跟随等功能,让我们一睹为快:

01

方案简介

1. UI图片素材

编者注:迪文智能屏是基于图片来完成UI开发的,可以便捷的实现各类显示效果。

f5018964-10a2-11ee-a579-dac502259ad0.png

2.界面开发

通过DGUS软件开发界面比较简单,只需要两个图形控件即可。在该例程中,工程师选择了一款2.1寸圆形智能屏。f52095d4-10a2-11ee-a579-dac502259ad0.png

3.实现眨眼

隔一段时间让眼皮的图片轮流显示一下://眨眼动画

void blink_animat(void)

{

if(blink_flag == 0)

{

blink_cnt++;

if(blink_cnt >= 4)

{

blink_flag = 1;

}

}

else

{

blink_cnt--;

if(blink_cnt <= 0)

{

blink_flag = 0;

} }

write_dgus_vp(0x3000, (u8 *)&blink_cnt, 2);

}

void blink_run()

{

static u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 2000000)

{

run_timer_cnt = 0;

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

}

}

4.实现眼珠自然左右看

这里和眨眼类似,但是需要比较晶振的控制眼球运动的时间,这里经过多次调试,工程师设计出了下面这套代码。//眼珠动画
void eyeball_animat(void)

{

eyeball_timer_cnt++;

if(eyeball_timer_cnt < 50)

{

eyeball_cnt = 20;

}

else if(eyeball_timer_cnt < 51)

{

eyeball_cnt = 50;

}

else if(eyeball_timer_cnt < 52)

{

eyeball_cnt = 80;

}

else if(eyeball_timer_cnt < 53)

{

eyeball_cnt = 94;

}

else if(eyeball_timer_cnt < 103)

{

eyeball_cnt = 94;

}

else if(eyeball_timer_cnt < 104)

{

eyeball_cnt = 80;

}

else if(eyeball_timer_cnt < 105)

{

eyeball_cnt = 50;

}

else if(eyeball_timer_cnt < 106)

{

eyeball_cnt = 20;

}

else if(eyeball_timer_cnt < 107)

{

eyeball_cnt = -10;

}

else if(eyeball_timer_cnt < 108)

{

eyeball_cnt = -40;

}

else if(eyeball_timer_cnt < 158)

{

eyeball_cnt = -54;

}

else if(eyeball_timer_cnt < 159)

{

eyeball_cnt = -40;

}

else if(eyeball_timer_cnt < 160)

{

eyeball_cnt = -10;

}

else if(eyeball_timer_cnt < 161)

{

eyeball_cnt = 20;

eyeball_timer_cnt = 0;

}

//左右移动

// if(eyeball_flag == 0)

// {

// eyeball_cnt++;

// if(eyeball_cnt >= 94)

// {

// eyeball_flag = 1;

// }

// }

// else

// {

// eyeball_cnt--;

// if(eyeball_cnt <= -54)

// {

// eyeball_flag = 0;

// }

// }

if(eyeball_cnt >= 0)

{

eyeball_pos[0] = 0x00;

eyeball_pos[1] = eyeball_cnt;

}

else

{

eyeball_pos[0] = 0xFF;

eyeball_pos[1] = (eyeball_cnt & 0xFF);

}

write_dgus_vp(0x3111, (u8 *)&eyeball_pos, 2);

}

void eyeball_run()

{

static u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 20000)

{

run_timer_cnt = 0;

eyeball_animat();

}

}

5.加入ESP32人脸识别,实现眼珠跟随人脸运动

这里的处理方式是,检测到人脸的时候眼睛自己不运动了,定义一个变量在while循环中自增,当自增到一定数值时,眼珠就自己运动。当串口收到数据时,这个变量就清零,然后只根据人脸的位置进行眼睛的移动。主要代码如下:if(rec_data_timer_cnt < 1000000)

{

rec_data_timer_cnt++;

}

else

{

eyeball_run();

}

extern u32 rec_data_timer_cnt;

extern u16 eyeball_timer_cnt;

void Communication_CMD(u8 st)

{

if((uart[st].Rx_F==1 )&&(uart[st].Rx_T==0))

{

rec_data_timer_cnt = 0;

eyeball_timer_cnt = 0;

#if(Type_Communication==1)

Describe_8283(st);

#elif(Type_Communication==2)

Describe_Modbus(st);

#endif

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人脸识别
    +关注

    关注

    76

    文章

    4002

    浏览量

    81641
  • 迪文屏
    +关注

    关注

    3

    文章

    75

    浏览量

    5350
收藏 人收藏

    评论

    相关推荐

    开源获奖案例】基于T5L智能的汽车抬头显示器方案

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——基于T5L智能
    的头像 发表于 09-24 08:03 219次阅读
    【<b class='flag-5'>开源</b>获奖案例】基于T5L<b class='flag-5'>智能</b><b class='flag-5'>屏</b>的汽车抬头显示器方案

    高校暑期实践活动圆满结束

    产线车间,详细了解智能从设计到生产全流程,了解自主设计研发的人机交互专用ASIC在工业自动化、医疗器械、美容保健、智慧家居及家电、新能源等行业领域的应用案例
    的头像 发表于 09-03 08:02 228次阅读
    <b class='flag-5'>迪</b><b class='flag-5'>文</b>高校暑期实践活动圆满结束

    串口如何与电脑连接

    效果好、稳定性高、易于集成等特点。串口广泛应用于工业自动化、医疗设备、智能家居等领域。
    的头像 发表于 08-01 15:10 741次阅读

    开源获奖案例】基于T5L智能的便携功率计解决方案

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——基于T5L智能
    的头像 发表于 08-01 08:13 244次阅读
    【<b class='flag-5'>开源</b>获奖案例】基于T5L<b class='flag-5'>智能</b><b class='flag-5'>屏</b>的便携功率计解决方案

    串口ModBus开发流程

    这里接前一章节,继续的开发,前章主要讲解基础开发流程,此章节开始讲解ModBus协议栈的使用方法。前文指路:《
    的头像 发表于 07-19 08:21 403次阅读
    <b class='flag-5'>迪</b><b class='flag-5'>文</b>串口<b class='flag-5'>屏</b>ModBus开发流程

    开源获奖案例】基于T5L智能的指纹识别解决方案

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——基于T5L智能
    的头像 发表于 07-06 08:13 228次阅读
    【<b class='flag-5'>开源</b>获奖案例】基于T5L<b class='flag-5'>智能</b><b class='flag-5'>屏</b>的指纹识别解决方案

    串口基础GUI开发流程

    和UART4是RS232接口的,UART2也作为系统默认的调试串口,UART5是RS485接口的,但UART4和UART5都需要对系统的OS核做修改才能使用。的资料较为
    的头像 发表于 07-05 08:21 563次阅读
    <b class='flag-5'>迪</b><b class='flag-5'>文</b>串口<b class='flag-5'>屏</b>基础GUI开发流程

    开源获奖案例】与安卓手机双向联动控制音乐播放

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——
    的头像 发表于 04-29 08:13 474次阅读
    【<b class='flag-5'>开源</b>获奖案例】<b class='flag-5'>迪</b><b class='flag-5'>文</b><b class='flag-5'>屏</b>与安卓手机双向联动控制音乐播放

    开源获奖案例】多功能称重器

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——多功能称重器。工程师采用4英寸COF
    的头像 发表于 04-20 08:12 312次阅读
    【<b class='flag-5'>开源</b>获奖案例】多功能称重器

    控制WS2812氛围灯

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——
    的头像 发表于 01-26 08:12 884次阅读
    <b class='flag-5'>迪</b><b class='flag-5'>文</b><b class='flag-5'>屏</b>控制WS2812氛围灯

    开源获奖案例】智能培养室

    为大家推送开发者论坛获奖开源案例——智能培养室。工程师通过Modbus协议实现了T5L智能
    的头像 发表于 01-09 08:13 362次阅读
    【<b class='flag-5'>开源</b>获奖案例】<b class='flag-5'>智能</b>培养室

    安卓与的无线交互应用

    ——来自开发者论坛本期为大家推送开发者论坛获奖开源案例——安卓与
    的头像 发表于 12-13 08:13 591次阅读
    安卓与<b class='flag-5'>迪</b><b class='flag-5'>文</b><b class='flag-5'>屏</b>的无线交互应用

    浏览器网页与T5L串口深度扩展(Node-RED技术)

    ——来自开发者论坛本期为大家推送一个很有创意的开发者论坛获奖开源案例——浏览器网页与T5L
    的头像 发表于 12-09 08:13 759次阅读
    浏览器网页与T5L<b class='flag-5'>迪</b><b class='flag-5'>文</b><b class='flag-5'>屏</b>串口深度扩展(Node-RED技术)

    COF结构智能试用体验】基于串口通信的电子相册(动态平滑、完整代码)

    非常感谢的妍姐,给我提供了一块COF智能测试,经过一番摸索,详细了解了串口通讯的具体用法,结合上位机,试用Python脚本来进行通讯,实现了一个简单的电子相册的功能,下面将我的经
    发表于 12-06 15:58

    可完美兼容的串口

    如何让屏幕识别协议,下面介绍淘晶驰USART HMI上位机用法
    的头像 发表于 11-08 10:38 738次阅读
    可完美兼容<b class='flag-5'>迪</b><b class='flag-5'>文</b>的串口<b class='flag-5'>屏</b>?