|
|
温湿度检测并显示,超过阈值警报
main.c
#include "stm32f4xx.h"
#include "./i2c/bsp_i2c.h"
#include "./i2c/bsp_i2c_oled.h"
#include "./bsp_aht10.h"
#include "./delay.h"
#include "./beep.h"
#include <stdio.h>
int main(void)
{
float humi, temp;
char buf[16];
// 初始化OLED
oled_Init();
oled_Clear();
AHT10_Init();
BEEP_GPIO_Config();
while (1) {
if (AHT10_ReadData(&humi, &temp) == 0)
{
// 1. 正确拆分湿度:整数部分 + 两位小数部分
uint16_t humi_int = (uint16_t)humi; // 取整数(如50.23 → 50)
uint16_t humi_dec = (uint16_t)((humi - humi_int) * 100); // 取两位小数(如0.23*100=23)
// 2. 正确拆分温度:整数部分 + 两位小数部分
uint16_t temp_int = (uint16_t)temp; // 取整数(如25.68 →25)
uint16_t temp_dec = (uint16_t)((temp - temp_int) * 100); // 取两位小数(如0.68*100=68)
// 3. 格式化字符串:保留两位小数(不足补0,如50.3→50.30)
sprintf(buf, "Humi:%d.%02d%%", humi_int, humi_dec); // %02d确保小数部分占2位,不足补0
oled_ShowString(1, 1, buf);
sprintf(buf, "Temp:%d.%02dC", temp_int, temp_dec);
oled_ShowString(2, 1, buf);
if(temp>30)
{
BEEP_ON;
oled_ShowString(3, 1, "warn!!");
}
else
{
BEEP_OFF;
oled_ShowString(3, 1, "normal");
}
}
Delay_ms(100);
}
}
/*********************************************END OF FILE**********************/
|
评分
-
查看全部评分
|