当前位置: 首页 > ai >正文

STM32项目分享:基于STM32的智能洗衣机

“我们不做一锤子买卖,只做技术成长的长期伙伴!”

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于STM32的智能洗衣机 -视频分享

二、项目简介

题目:洗衣机
主控:STM32
显示:OLED显示屏
DS18B20温度传感器
水位传感器
湿度传感器
控制模块:抽水继电器➕排水继电器
声光报警:LED+蜂鸣器
功能:
1、可按键选择模式(快洗,慢洗,甩干,速度不同),时间,水位等数据。
2、选择完毕之后按下开始,进行抽水,当水位超过阈值后开始根据模式进行转动,转动时间根据设定时间进行转动,一共三次,等完毕后,打开排水,直到水位小于10,最后快速甩干。然后结束蜂鸣器报警两下,中间可按键暂停,暂停中蜂鸣器报警。

三、原理图设计

四、PCB硬件设计

五、程序设计

#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "dht11.h"
#include "adc.h"
#include "pwm.h"
#include "IOput.h"
#include "usart.h"
#include "timer.h"#define d 2.7
/* 改p值这个偏差就行  */
#define p 168  
float water;
int voltage;extern u8 res;
u16 i = 0;
u8 show_flag,show1_flag,max_wd=30,dec_wd=20,max_sd=60,dec_sd=40;
u16 count1=0;
u8 mode = 0;						/*模式*/
u8 mode_over = 1;
u16 gears = 0;
u8 time = 0;						/*时间*/
u8 time_chose_over = 1;
u8 leofwa = 0;					/*阈值*/u16 leofwa_now = 0;	/*实际水位值*/
u8 rain = 0;void Mode_Chose(u8* mode,u8* time,u8* level);
void start_wash(u8 mode,u8 time,u8 leofwa);
void turn(u8 mode,u8 time,u8 leofwa);float Water_read(void)
{u16 adcx;float voltage;adcx=Get_Adc_Average(ADC_Channel_1,10);voltage = adcx*(float)d/(float)p;Delay_1ms(50);return voltage;
}float Water_out(int o)
{int i;float num = 0;float out;for(i=0;i<o;i++){ num += Water_read(); }  out = num/o;  return out;
}int main (void)
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);DHT11_Init();Adc_Init();OLED_Init();delay_ms(1);OLED_Clear();output_init();input_init();TIM_PWM_Init(100,36);while(1){Mode_Chose(&mode,&time,&leofwa);start_wash(mode,time,leofwa);//		rain = 100-Get_Adc_Average(4,10)*100/4096;
//		OLED_ShowNum(40,2,rain,2,16);}
}
void Mode_Chose(u8* mode,u8* time,u8* level)
{OLED_Clear();while(mode_over){key_scan(1,1,1);if(set_flag == 1){*mode = 1;*time = 5;*level = 30;OLED_ShowCH(0,2,"mode: ");OLED_ShowNum(40,2,*mode,2,16);OLED_ShowCH(0,4,(u8*)"time: ");OLED_ShowNum(48,4,*time,2,16);OLED_ShowCH(0,6,(u8*)"level: ");OLED_ShowNum(50,6,*level,2,16);key_scan(1,1,1);if(add_flag){OLED_Clear();mode_over = 0;add_flag = 0;return;}}else if(set_flag == 2){*mode = 2;*time = 5;*level = 35;OLED_ShowCH(0,2,"mode: ");OLED_ShowNum(40,2,*mode,2,16);OLED_ShowCH(0,4,(u8*)"time: ");OLED_ShowNum(40,4,*time,2,16);OLED_ShowCH(0,6,(u8*)"level: ");OLED_ShowNum(50,6,*level,2,16);key_scan(1,1,1);if(add_flag){OLED_Clear();mode_over = 0;add_flag = 0;return;}}else if(set_flag == 3){*mode = 3;*time = 4;*level = 20;OLED_ShowCH(0,2,"mode: ");OLED_ShowNum(40,2,*mode,2,16);OLED_ShowCH(0,4,(u8*)"time: ");OLED_ShowNum(48,4,*time,2,16);OLED_ShowCH(0,6,(u8*)"level: ");OLED_ShowNum(50,6,*level,2,16);key_scan(1,1,1);if(add_flag){OLED_Clear();mode_over = 0;add_flag = 0;return;}}else if(set_flag == 4){set_flag = 0;}}
}
void start_wash(u8 mode,u8 time,u8 leofwa)
{OLED_Clear();OLED_ShowCH(30,2,(u8*)"START....");delay_ms(3000);turn(mode,time,leofwa);/*开始运转*/}
void turn(u8 mode,u8 time,u8 leofwa)
{for(i=0;i<3;i++){/*抽水*/while(1 && mode ){JDQ1_Control(0);/*打开抽水继电器*/JDQ2_Control(1);/*关闭排水继电器*/leofwa_now = Water_out(10)-20;if(leofwa_now>=40){leofwa_now=40;}
//			leofwa_now = Get_Adc_Average(1,20);OLED_Clear();OLED_ShowCH(0,1,"level: ");OLED_ShowNum(56,1,leofwa_now,2,16);if(leofwa < leofwa_now){JDQ1_Control(1);/*关闭抽水继电器*/mode = 0;break;}}if(dec_flag == 0){run_dir(0,500);delay_ms((time*1000)/3);run_dir(0,0);delay_ms(1000);}key_scan(1,1,1);if(dec_flag == 1){while(1){beep_contr();key_scan(1,1,1);if(add_flag){dec_flag = 0;add_flag = 0;Beep_Off();break;}}}Beep_Off();}run_dir(0,0);while(1){JDQ1_Control(1);/*关闭抽水继电器*/JDQ2_Control(0);/*打开排水继电器*/leofwa_now = Water_out(10)-20;if(leofwa_now>=40){leofwa_now=40;}rain = 100-Get_Adc_Average(4,10)*100/4096;OLED_Clear();OLED_ShowCH(0,1,"level: ");OLED_ShowNum(56,1,leofwa_now,2,16);OLED_ShowCH(0,4,(u8*)"humi: ");OLED_ShowNum(48,4,rain,2,16);if(leofwa_now <= 10){JDQ2_Control(1);/*关闭排水继电器*/for(i=0;i<9;i++){rain = 100-Get_Adc_Average(4,10)*100/4096;OLED_ShowCH(0,4,(u8*)"humi: ");OLED_ShowNum(48,4,rain,2,16);run_dir(0,500);delay_ms(100);run_dir(0,0);delay_ms(100);}break;}}beep_contr();mode_over = 1;}

六、资料分享

点击即可查看当前资料分享。

http://www.xdnf.cn/news/18647.html

相关文章:

  • 开源大模型天花板?DeepSeek-V3 6710亿参数MoE架构深度拆解
  • 微软恶意软件删除工具:官方免费的系统安全防护利器
  • 网络编程1-基本概念、函数接口
  • 2.1.5 数学与其他
  • VUE 的弹出框实现图片预览和视频预览
  • C++数据结构之二叉搜索树
  • AEB 强制来临,东软睿驰Next-Cube-Lite有望成为汽车安全普惠“破局器”
  • macbook国内源安装rust
  • 【AGI使用教程】GPT-OSS 本地部署(2)
  • 【AMBA总线互联IP】
  • 自然语言处理——07 BERT、ELMO、GTP系列模型
  • python文件import找不到其它目录的库解决方案
  • Python爬虫第四课:selenium自动化
  • 【云馨AI-大模型】AI热潮持续升温:2025年8月第三周全球动态
  • MySQL数据库精研之旅第十一期:打造高效联合查询的实战宝典(二)
  • 禁用 Nagle 算法(TCP_NODELAY)
  • RuoYi-Vue3项目中Swagger接口测试404,端口问题解析排查
  • 信誉代币的发行和管理机制是怎样的?
  • linux下camera 详细驱动流程 OV02K10为例(chatgpt版本)
  • stm32温控大棚测控系统(CO2+温湿度+光照)+仿真
  • Linux->多线程2
  • 56 C++ 现代C++编程艺术5-万能引用
  • Wagtail CRX 简介
  • 详解无监督学习的核心原理
  • vscode配置remote-ssh进行容器内开发
  • Linux服务测试题(DNS,NFS,DHCP,HTTP)
  • 微服务-21.网关路由-路由属性
  • 零基础玩转STM32:深入理解ARM Cortex-M内核与寄存器编程
  • 采摘机器人设计cad+三维图+设计说明书
  • LangChain RAG系统开发基础学习之文档切分