我最近几天新添加了OLED显示的功能,将细节修修改改的,终于算处理好了,我将工程已经打包上传了:
(6条消息) 【免费】stm32智能加湿器源码资源-CSDN文库
演示视频:
这是一些说明
/****************************************************************************************
雾化器触发条件转到 void JSQ_Work(void) 中设置
硬件:
stm32f103rct6
OLED屏幕1.3寸128*64(IIC协议,GND在前):
OLED_SDA GPIO_Pin_15 //OLED屏IIC数据信号
OLED_SCL GPIO_Pin_13 //OLED屏IIC时钟信号
DHT11(GND,VCC,DATA):
GND,VCC正常接,DATA接PA3(可以自己修改) --- DHT11_Init(GPIOA,GPIO_Pin_3);
继电器:
输入端:VCC,GND,接入3.3v,IN引脚连接PA6(可以自己修改) --- JSQ_Init(GPIOA,GPIO_Pin_6);
输出端:COM 接开发板5v, NO 接雾化器正级
雾化器:
正级 接 继电器 NO
负极 接 开发板 GND
按键:
key1:将temp目标值+1,到了目标值上限(tempload_UpLimit)后,再次按下,目标值就回到 tempload_DownLimit
key2:控制加湿器(J S Q) 允许开/关闭,JSQ有3种状态 :
CAN(表示允许开,但是未触发条件),
BAN(表示禁止,不管条件触没触发)
ING(表示正在开启中)
key3:控制DHT11 开/关,DHT11有2种状态 :
ING(表示正在开启中)
BAN(表示禁止,暂停检测温湿度,停止JSQ(加湿器)工作)
指示灯:
红灯(PC5) , 蓝灯(PB2)
红灯:代表DHT11的状态
常亮:刚开机,未开始检测
闪烁:DHT11正在检测温湿度
关闭:DHT11禁止检测温湿度
蓝灯:代表J S Q(加湿器)的状态
常亮:允许开(条件未触发)
闪烁:正在开启
关闭:禁止JSQ(加湿器)工作,不管条件触发没有
****************************************************************************************/
我将详细的解释放在工程包里面了,这篇文章我只展示效果图
这里将屏幕分成了6个区域 ,
1 ,2
3, 4
5, 6
等下就用这6个区域解释。
1区:DHT11: ING/BAN
我靠,这个水印好烦啊,怎么去掉啊。。。
这里 “DHT11:”是不变的内容 ,后面的状态才是会变的。 ING代表正在检测温湿度,BAN代表禁止检测温湿度
可以用按键key3控制
2区:JSQ: ING/CAN/BAN
JSQ:ING 代表加湿器正在工作
JSQ:CAN 代表加湿器允许工作,但是还未触发条件
JSQ:BAN 代表加湿器被禁止工作
3区:24 + 1x4
这里24是代表设定目标温度的下限,可以在程序中修改
+ 1x 不变
4:代表在初始目标值上加了4次1℃
4区:TEMP->28.0
27.6℃
TEMP->(可变) 代表现在的温度目标值
(可变)℃ 代表实时温度值
5区:
文字描述,不可变
6区:
HUMI->00.0
64.0RH%
HUMI->(不可变)
PS:本来应该代表现在的湿度目标值,但是因为我的开发板只有3个按键,没有办法再单独设置湿度的目标值了。
(可变)RH% 代表实时湿度值
小总结:
这个小项目我修修改改的弄了10天左右吧,整个工程中,除了OLED驱动的程序是直接CV的,其他的我都是自己敲的,不懂的就看了人家的再敲。
不足的地方:
我不知道为什么,有时候按键要是按快了程序就不继续运行了,卡在那一步了,很玄学。我想应该是由于按键中断的时间有时候很巧妙,比如说主程序在执行检测温湿度的任务中,按键触发了,可能就引发了堵车吧。希望等后面学到RTOS后我能把这个问题解决好。