前述:
QQ:961209458
V X:F9986858
承接毕业设计。
1)温度控制、步进电机控制、定时控制三个控制部分;
2)时间、温度、步进电机转速显示;
3)录音模块。
1)定时喂食。能够根据不同宠物种类以及主人喂养宠物的方式习惯,自己定义时间为宠物提供食物;
2)定量喂食。通过步进电机的定时转速实现控制定量宠物粮食;
3)实时显示。OLED将检测的参数数据实时显示到屏幕上,显示时间、温度、步进电机转速转速;
4)语音提示。自定义录音,实现当到达定时喂食的时间时自动播放提示音宠物前来进食;
5)设置投喂量。设置控制步进电机转动时间,从而控制食物量多少。
能够自定义时间为宠物提供食物;
通过步进电机的定时转速实现控制定量宠物粮食;
OLED将检测的参数数据实时显示到屏幕上;
自定义录音提示音宠物前来进食;
设置步进电机控制食物量。
通过语音模块录制语音信息,再按键设定喂食时间,屏幕显示数据信息。
到达所设置的时间,语音模块自动播放语音吸引宠物前来进食,同时单片机控制电机驱动工作,控制定量食物。
演示视频
#include "REG51.h" #include "oled.h" #include "bmp.h" #include "Ds18b20.h" #include "DS1302.h" #include "JQ8900.h" #include "delay.h" //按键位定义 sbit K1 = P3^2; sbit K2 = P3^3; sbit K3 = P3^4; sbit K4 = P3^5; //步进电机位定义 sbit IN1 = P1^3; sbit IN2 = P1^4; sbit IN3 = P1^5; sbit IN4 = P1^6; //喂食时分 char FeedHour = 12; char FeedMinter = 1; char speed = 7;//电机转速 int count50ms=200;//电机转动时间 默认不修改 char MP3 = 1;//播放音频编号 范围:1-7 bit FeedOnOff=1;//喂食开关 0:关 1:开 默认开 char FeedTimeChange = 0;//修改顺序 0:时 1:分 2:电机速度 3:音频播放 //ms延时函数 void Delay_xms(u16 x) { u16 i,j; for(i=0;i<x;i++) for(j=0;j<112;j++); } //顺时针转动 void MotorCW(void) {IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 1;Delay_xms(speed);//转速调节IN1 = 0;IN2 = 0;IN3 = 0;IN4 = 1;Delay_xms(speed);//转速调节IN1 = 0;IN2 = 0;IN3 = 1;IN4 = 1;Delay_xms(speed);//转速调节IN1 = 0;IN2 = 0;IN3 = 1;IN4 = 0;Delay_xms(speed);//转速调节IN1 = 0;IN2 = 1;IN3 = 1;IN4 = 0;Delay_xms(speed);//转速调节IN1 = 0;IN2 = 1;IN3 = 0;IN4 = 0;Delay_xms(speed);//转速调节IN1 = 1;IN2 = 1;IN3 = 0;IN4 = 0;Delay_xms(speed);//转速调节IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 0;Delay_xms(speed);//转速调节 } //设置定时器状态 state:0 定时器关 1:定时器开 void SetTimer0(unsigned char state) {TR0 = state;ET0 = state;EA = state; } //定时器初始化 void Timer0Init() {TMOD = 0X01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;SetTimer0(0); } //喂食控制 void FeedControl() {//计算当前时分char NowHour,NowMinter;NowHour=TIME[2]/16*10+TIME[2]&0x0f;NowMinter=TIME[1]/16*10+TIME[1]&0x0f;//显示时分OLED_ShowNum(40,6,FeedHour,2,16);OLED_ShowNum(64,6,FeedMinter,2,16);//显示电机速度OLED_ShowNum(100,6,8-speed,1,16);//显示播放音频顺序OLED_ShowNum(116,6,MP3,1,16);if((NowHour==FeedHour)&&(NowMinter==FeedMinter)&&(count50ms==200)&&(FeedOnOff==1)){ONE_LINE_PLAY_SONG(MP3);//播放指定编号音频SetTimer0(1);//开启定时器 电机转动时间计时while(1)//步进电机转动{MotorCW();if(count50ms<=0) //时间结束{SetTimer0(0);//关闭定时器,退出电机转动break;}}}while((K2==0)||(K1==0))//喂食时间加减{if(K1==0){if(FeedTimeChange==0){if(++FeedHour>=23) FeedHour=23;//时最高到23}if(FeedTimeChange==1){if(++FeedMinter>=59) FeedMinter=59;//分最高到59}if(FeedTimeChange==2){if((speed--)<=1) speed=1;//速度最大为7}if(FeedTimeChange==3){if(++MP3>=7) MP3=7;//音频编号最大为7}}if(K2==0){if(FeedTimeChange==0){if((FeedHour--)<=0) FeedHour=0;//时最小为0}if(FeedTimeChange==1){if((FeedMinter--)<=0) FeedMinter=0;//分最小为0}if(FeedTimeChange==2){if(++speed>=7) speed=7;//速度最小为1}if(FeedTimeChange==3){if((MP3--)<=1) MP3=1;//音频编号最小为1}}delay_ms1(200);}if(K3==0)//修改喂食时间修改顺序{delay_ms1(10);if(K3==0){if(++FeedTimeChange>=4) FeedTimeChange=0;}while(K3==0);}if(K4==0)//修改喂食开关{delay_ms1(10);if(K4==0){FeedOnOff=~FeedOnOff;}delay_ms1(200);}//显示喂食开关状态if(FeedOnOff==1){OLED_ShowString(104,0,"ON ",16);}if(FeedOnOff==0){OLED_ShowString(104,0,"OFF",16);} } void Timer0Isr() interrupt 1 {TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;count50ms--; } int main(void) {OLED_Init();//初始化OLEDOLED_Clear();Timer0Init();ONE_LINE_VOL(25);//设置音量25OLED_ShowString(0,0,"Temp: . ",16);OLED_ShowString(0,2,"Time: : :",16);OLED_ShowString(0,4,"20 - - Wee:",16);OLED_ShowString(0,6,"Feed: : ",16);while(1){FeedControl();//喂食控制Ds1302ReadTime();//读取时间GetTemp(Ds18b20ReadTemp());//读取温度//显示温度OLED_ShowNum(40,0,shi,1,16);OLED_ShowNum(48,0,ge,1,16);OLED_ShowNum(64,0,xs,1,16);//显示时分秒OLED_ShowNum(40,2,TIME[2]/16,1,16);OLED_ShowNum(48,2,TIME[2]&0x0f,1,16);OLED_ShowNum(64,2,TIME[1]/16,1,16);OLED_ShowNum(72,2,TIME[1]&0x0f,1,16);OLED_ShowNum(88,2,TIME[0]/16,1,16);OLED_ShowNum(96,2,TIME[0]&0x0f,1,16);//显示年月日周OLED_ShowNum(16,4,TIME[6]/16,1,16);OLED_ShowNum(24,4,TIME[6]&0x0f,1,16);OLED_ShowNum(40,4,TIME[4]/16,1,16);OLED_ShowNum(48,4,TIME[4]&0x0f,1,16);OLED_ShowNum(64,4,TIME[3]/16,1,16);OLED_ShowNum(72,4,TIME[3]&0x0f,1,16);OLED_ShowNum(120,4,TIME[5]&0x0f,1,16);} }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219相关知识
基于STM32设计的宠物投喂器
基于单片机的智能宠物喂食器设计
一种基于雨滴传感器的宠物玩具的制作方法
智能宠物饲养系统设计
一种蓝牙无线驱动的智能宠物训练器的制造方法
使用STM32实现简单的智能宠物喂食器
基于STM32的智能宠物看护喂养系统(程序源码+原理图+PCB+Boom表+实物操作说明)
毕业设计 基于STM32的智能宠物投喂系统(全套资料)
基于STM32的宠物远程投喂和监测系统设计
基于物联网技术的智能宠物投喂器的设计与制作
网址: 基于步进电机驱动的智能宠物投喂 https://m.mcbbbk.com/newsview219588.html
上一篇: 首届2020宠物食品适口性专题论 |
下一篇: 宠物总喜欢在外面乱吃东西,应该怎 |