徐州云建站模板,如何自己开公众号,wordpress所有外链本地化,北京做网站制作公司宠物喂食器 一、功能设计二、元器件选型三、UI设计四、原理图设计五、源代码设计六、成品展示 实物链接#xff1a;https://m.tb.cn/h.5iCUX6H?tkPL65WXCEipQ CZ3457
一、功能设计
1、设计一个触摸屏作为人机交互 2、通过触摸屏设置时间定时喂食喂水通风 3、获取当前水槽的… 宠物喂食器 一、功能设计二、元器件选型三、UI设计四、原理图设计五、源代码设计六、成品展示 实物链接https://m.tb.cn/h.5iCUX6H?tkPL65WXCEipQ CZ3457
一、功能设计
1、设计一个触摸屏作为人机交互 2、通过触摸屏设置时间定时喂食喂水通风 3、获取当前水槽的水位并显示 4、获取环境温湿度并显示
二、元器件选型
1、触摸屏采用2.8寸电阻触摸屏 2、单片机采用STM32F407ZGT6 3、喂水使用直流水泵 4、喂食使用舵机 5、通风使用风扇 6、控制开关使用继电器 7、温湿度获取使用DHT11 8、水位检测使用水位传感器
三、UI设计
1、UI使用LVGL 2、UI设计环境使用SquareLine Studio 3、生成代码导入到vsCode进行仿真运行编译比较快
4、调试UI界面比较满意后导入UI代码到keil5下载到单片机运行 四、原理图设计
1、STM32F407ZGT6最小系统设计 2、继电器控制电路设计
3、水泵和舵机电路设计
五、源代码设计
1、移植正点原子LVGL最小工程
2、导入生成的UI代码 3、编写IO控制程序舵机控制程序系统时间、定时喂食喂水程序、事件记录程序
void scan_timeout(void)
{int32_t remain_time[SCAN_TIME_NUM];static int32_t p_time 0x7fffffff;static uint8_t p_num;TimeTypeDef remain_time_min {0};char sprbuff[64];int32_t n_num 0;char buff[SCAN_TIME_NUM][8] {喂食,喂食,喂水,喂水,通风,通风};char * pbuf NULL;get_sys_date_time();//获取系统时间remain_time[0] time_compare(System.para.systime,System.para.feed.time1 );//计算时间差remain_time[1] time_compare(System.para.systime,System.para.feed.time2 );//计算时间差remain_time[2] time_compare(System.para.systime,System.para.feedwater.time1);//计算时间差remain_time[3] time_compare(System.para.systime,System.para.feedwater.time2);//计算时间差remain_time[4] time_compare(System.para.systime,System.para.ventilate.time1);//计算时间差remain_time[5] time_compare(System.para.systime,System.para.ventilate.time2);//计算时间差for(int i0; iSCAN_TIME_NUM; i) //看看时间差哪个短 找到最短那个任务优先执行{if(p_time remain_time[i] remain_time[i] 0){remain_time_min.hour remain_time[i] / 3600;remain_time_min.min remain_time[i] % 3600 /60;remain_time_min.sec remain_time[i] % 60;p_time remain_time[i];pbuf buff[i];p_num i;if(p_time 0)p_time 0x7fffffff;printf(i %d, remain_time[i]%d\r\n,i,remain_time[i]);}if(remain_time[i] 0){n_num ;}}if(n_num ! SCAN_TIME_NUM) //今天任务做完了吗 哦 没有就进去{if(p_time 30) //如果距离任务还不到 XXX秒了就进来运行任务{switch(p_num){case 0:sprintf(sprbuff,喂食时间到! %02d:%02d, System.para.feed.time1.hour,System.para.feed.time1.min);SW1_ON();break;case 1:sprintf(sprbuff,喂食时间到! %02d:%02d, System.para.feed.time2.hour,System.para.feed.time2.min);SW1_ON();break;case 2:sprintf(sprbuff,喂水时间到! %02d:%02d, System.para.feedwater.time1.hour,System.para.feedwater.time1.min);SW2_ON();break;case 3:sprintf(sprbuff,喂水时间到! %02d:%02d, System.para.feedwater.time2.hour,System.para.feedwater.time2.min);SW2_ON();break;case 4:sprintf(sprbuff,通风时间到! %02d:%02d, System.para.ventilate.time1.hour,System.para.ventilate.time1.min);SW3_ON();break;case 5:sprintf(sprbuff,通风时间到! %02d:%02d, System.para.ventilate.time2.hour,System.para.ventilate.time2.min);SW3_ON();break;}lv_label_set_text(ui_MainInfoLabel7,sprbuff);}else if(pbuf ! NULL){sprintf(sprbuff,主线任务 - %s %02d:%02d:%02d,pbuf,remain_time_min.hour,remain_time_min.min,remain_time_min.sec);printf(%s\r\n,sprbuff);lv_label_set_text(ui_MainInfoLabel7,sprbuff);switch_all_off();}}else{lv_label_set_text(ui_MainInfoLabel7,今日暂无任务);}
}六、成品展示