【开源获奖案例】智能猫粮控制系统

本期为大家推送迪文开发者论坛的获奖开源案例:智能猫粮控制系统。工程师使用迪文智能屏实现了监测猫粮的温度、湿度、余量,保存猫咪吃粮记录等功能,并别出心裁的设计了一套水墨画风格ui,以及手指触摸时的水墨点击效果,增强触摸的视觉反馈。
   方案简介  
ui图片素材
迪文智能屏是基于图片完成ui开发,需根据屏幕显示内容提前准备好图片、音频等素材。
界面开发
dgus软件是通过图层叠加来还原ui效果,将准备好的素材在dgus软件中组合成完整的画面,并设置好显示、触摸功能。
实现点击特效和音效
通过51程序来获取触摸位置,实现按压效果跟随手指移动,同时实现按键伴音音效。
(1)检测触摸位置代码并播放音频:
void touchdetect()
{
u16 va[3] = 0;
u8 i = 0;
for(i = 0;i < 3;i++)
{
va[i] = read_dgus(0x0016 + i);
if(va[0] == 0x5a01)
{
}
else
{
break;
}
}
if(i != 0)  //第一次点击进入
{
u16 play[2] = {0x0001, 0x4000};
touchanimationflag = 1;
touchanimationcnt = 0;
touchposx = va[1];
touchposy = va[2];
write_dgus_vp(0x00a0, play, 2);
}
}
(2)触摸特效显示的代码如下:
void touchstart()
{
if(touchanimationflag == 1)
{
if(touchanimationcnt == 0)
{
write_dgus(0x5011, touchposx - 100);
write_dgus(0x5012, touchposy - 100);
}
write_dgus(0x5000, touchanimationcnt);
touchanimationcnt++;
if(touchanimationcnt == 6)
{
touchanimationflag = 0;
write_dgus(0x5011, 1024);
write_dgus(0x5012, 600);
}
}
}
实现猫粮自动出粮
接下来是通过屏幕设定对应的参数,然后数据通过esp32传输到猫粮控制器,实现猫粮的自动出粮功能,具体代码如下所示:
//获取按键状态
void get_key_status()
{
int i = 0;
//u16 va=read_dgus(addr);
u16  va=read_dgus(0x1000);
if(va != 0x0000)
{
//状态页
if(va == 0x0103)    //放置g数量
{
u16 switchpage[2] = {0x5a01, 19};
setnum = placegramnum;
backpage = 1;   //返回状态页
write_dgus(0x4000 + 0, setnum % 10);
write_dgus(0x4000 + 2, setnum / 10 % 10);
write_dgus(0x4000 + 4, setnum / 100 % 10);
write_dgus(0x4000 + 6, setnum / 1000 % 10);
write_dgus_vp(0x0084, switchpage, 2);
}
else if(va == 0x0102)
{
onesenddata3(placegramnum); //放置一次粮
}
else if(va == 0x0101)   //设置页面
{
u16 switchpage[2] = {0x5a01, 3};
for(i = 0;i < 6;i++)
{
if(i == 0)
{
write_dgus(0x3070 + i * 0x10 + 0, currenttime[i] % 10);
write_dgus(0x3070 + i * 0x10 + 2, currenttime[i] / 10 % 10);
write_dgus(0x3070 + i * 0x10 + 4, currenttime[i] / 100 % 10);
write_dgus(0x3070 + i * 0x10 + 6, currenttime[i] / 1000 % 10);
}
else
{
write_dgus(0x3070 + i * 0x10 + 0, currenttime[i] % 10);
write_dgus(0x3070 + i * 0x10 + 2, currenttime[i] / 10 % 10);
}
}
write_dgus_vp(0x0084, switchpage, 2);    //进入设置页
}
else if(va == 0x0100)   //记录页面
{
u16 switchpage[2] = {0x5a01, 2};
for(i = 0;i 0)
{
lookeatcnt--;
for(i = 0;i < 6;i++)
{
if(i == 0)
{
write_dgus(0x2000 + i * 0x10 + 0, eatfeedlist[lookeatcnt][i] % 10);
write_dgus(0x2000 + i * 0x10 + 2, eatfeedlist[lookeatcnt][i] / 10 % 10);
write_dgus(0x2000 + i * 0x10 + 4, eatfeedlist[lookeatcnt][i] / 100 % 10);
write_dgus(0x2000 + i * 0x10 + 6, eatfeedlist[lookeatcnt][i] / 1000 % 10);
}
else
{
write_dgus(0x2000 + i * 0x10 + 0, eatfeedlist[lookeatcnt][i] % 10);
write_dgus(0x2000 + i * 0x10 + 2, eatfeedlist[lookeatcnt][i] / 10 % 10);
}
}
}
}
else if(va == 0x0202)   //记录页面下一个
{
if(lookeatcnt < eatcnt - 1)
{
lookeatcnt++;
for(i = 0;i = 0x0304 && va = 0x030a && va = 0x0304 && backnum = 0x030a && backnum 0)
setnum--;
write_dgus(0x4000 + 0, setnum % 10);
write_dgus(0x4000 + 2, setnum / 10 % 10);
write_dgus(0x4000 + 4, setnum / 100 % 10);
write_dgus(0x4000 + 6, setnum / 1000 % 10);
}
write_dgus(0x1000, 0);
}
}

防雷器的综合应用案例
微信小程序的APP页面配置学习说明
马斯克发布AI大模型Grok:挑战ChatGPT,X平台将搭载
无线传感器网络的特点与节点的应用设计
半导体设备企业拓荆科技拟冲刺IPO
【开源获奖案例】智能猫粮控制系统
山西公交站安装数字标牌LED显示屏
小米MIX屏幕受力设计有缺陷?
浅谈一下连接器专业知识
ECAT_motion管理功能块介绍
华为Mate X2是否值得高价入手?
福特投资 Solid Power 拟共同为下一代电动汽车开发固态电池
ISEN对太阳能研究的两大方向
处理器核心大战2010年即将打响
中国喷涂材料市场规模:2017年热喷涂涂料市场规模约为9.7亿美元
AMD平台的“变砖” 更新Win10全搞定
科学家发现锂硫能让电池电量增强四倍
扩展坞的通信接口如何防静电?
智能升级的镜面显示屏,所以信息一镜掌握
VR技术已“入侵”你的生活