在用stm32做温湿度报警的时候遇到的问题,实际也只是想熟悉一下到达阈值之后蜂鸣器报警的流程,后面要将设置的湿度到达阈值报警改为CO浓度过高报警,或者是烟雾浓度过高报警,更实用一些。
首先,定义了一个u8类型的变量a,将DHT11读取湿度值的十位和个位存放在a中,然后实用判断语句,设置阈值,当湿度到达阈值之后,蜂鸣器间断性报警(就是滴滴~滴滴~)。但是,这时候就遇到了一个问题,明明湿度还没有到达阈值,蜂鸣器就一直响,还不是我设置的间断性的响,而是不间断的一直响,一开始我以为是变量a的问题,后来通过OLED显示a 的值,发现是和检测的湿度值一样的;然后我设置当a小于阈值蜂鸣器响,发现是正常的,当湿度值升高到阈值以上,蜂鸣器就不响了。
最后!我才想起来!之前不知道看哪个老师说过,引脚在没有定义的时候处于悬空状态,那么它有可能是高电平,也有可能是低电平(这里可能有错误,可能没有定义的时候默认是低电平也说不定),所以蜂鸣器才在没有到达阈值之前不按照我设置的方式响,只需要在Beep初始化函数或者在判断语句之前将Beep的控制引脚置一就好了(用的是低电平触发蜂鸣器)。
其实要是之前在B站上学习的时候能做好笔记的话,就不会在这种傻瓜问题上卡这么久了,几乎是晚了一天才想起来。。。
博主分享在使用STM32进行温湿度监控时,遇到蜂鸣器提前响的问题。通过理解引脚未定义状态可能导致的干扰,解决了蜂鸣器在湿度未达阈值时的误报警。后续计划拓展至CO及烟雾浓度检测。
1320





