功能介绍:采用stm32作为主控cpu,采用ds18b20采集当前的温度,通过继电器驱动进行加氧、换水、投食、加热,通过按键可以控制加氧、换水、投食,加热通过温度传感器自动控制,低于22度自动进行加热,并且相关数据显示到OLED显示屏上,通过蓝牙模块将数据上传到手机APP,文末有资料分享:
52-基于stm32单片机智能鱼缸自动抽水加氧喂食(程序+原理图+元件清单全套资料)
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。
int main(void)
{
unsigned char *dataPtr = NULL;
unsigned short timeCount = 30; //发送间隔变量
uint8_t status;
long int cardnum=0;
u16 adcx;
int temp,mq7,lux,temp1=25,mq=200,num=0;
Hardware_Init(); //初始化外围硬件
OLED_Init();
OLED_ColorTurn(0);
OLED_DisplayTurn(0);
OLED_ShowString(0,0,"TEMP:",16); OLED_ShowString(70,0,"C",16);
OLED_ShowString(0,16,"JR:",16); OLED_ShowString(60,16,"JY:",16); //加热 加氧
OLED_ShowString(0,32,"TS:",16); OLED_ShowString(60,32,"HS:",16); //投食 换水
OLED_Refresh();
KEY_Init();
LED_Init();
LED=1;
Q1=Q2=Q3=Q4=1;
K1=K2=K3=1;
while(1)
{
temp=DS18B20_Get_Temp();//读取温度
if(K1==0) //按键 换水
{
Q4=~Q4;
}
if(K2==0)//按键 加氧
{
Q3=~Q3;
}
if(K3==0)//按键 投食
{
Q2=~Q2;
}
if(temp<22) Q1=0; //加温
else Q1=1;
if(Q1==0)
{
OLED_ShowString(25,16," ON",16);
printf("JR:ON \r\n"); //蓝牙模块发送
}
else
{
OLED_ShowString(25,16,"OFF",16);
printf("JR:OFF \r\n"); //蓝牙模块发送
}
if(Q2==0)
{
OLED_ShowString(25,32," ON",16);
printf("TS:ON \r\n"); //蓝牙模块发送
}
else
{
OLED_ShowString(25,32,"OFF",16);
printf("TS:OFF \r\n"); //蓝牙模块发送
}
if(Q3==0)
{
OLED_ShowString(90,16," ON",16);
printf("JY:ON \r\n"); //蓝牙模块发送
}
else
{
OLED_ShowString(90,16,"OFF",16);
printf("JY:OFF \r\n"); //蓝牙模块发送
}
if(Q4==0)
{
OLED_ShowString(90,32," ON",16);
printf("HS:ON \r\n"); //蓝牙模块发送
}
else
{
OLED_ShowString(90,32,"OFF",16);
printf("HS:OFF \r\n"); //蓝牙模块发送
}
OLED_ShowNum(40,0,temp,3,16);
OLED_Refresh();
printf("TEMP:%d C\r\n",temp); //蓝牙模块发送
delay_ms(300);
}
}