delay_ms(1500);
DHT11_Read_Data(&temp,&humi);
delay_ms(1500);
printf("humi=%2d\r\n",humi);
Delay_ms(500);
if(k==l){
printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CuTemperature\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n",SC,temp);
Delay_s(2);
printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CurrentHumidity\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n",SC,humi);
Delay_s(2);
k=k-10;
该回答引用GPT
以下是可能的修正代码:
delay_ms(1500);
uint8_t temp, humi;
DHT11_Read_Data(&temp, &humi);
delay_ms(1500);
printf("humi=%2d\r\n", humi);
Delay_ms(500);
if (k == l) {
printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CuTemperature\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, temp);
Delay_s(2);
printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CurrentHumidity\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, humi);
Delay_s(2);
k = k - 10;
}
这个修正代码假设你已经有了一个名为 DHT11_Read_Data
的函数,它可以读取 DHT11 传感器的温度和湿度数据,并将它们存储在 temp
和 humi
变量中。如果你没有这个函数,你需要编写它或者使用其他可用的库函数。
下面是修正后的代码,主要问题是 printf 后面的 dth11 函数名称和参数没有写对。建议将 DHT11_Read_Data(&temp,&humi); 提前至 printf 之前,这样可以避免输出值过早或过晚的问题。
delay_ms(1500);
int temp, humi;
DHT11_ReadData(&temp, &humi);
delay_ms(1500);
printf("Temperature=%d\r\n", temp);
Delay_ms(500);
if (k == l) {
printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CuTemperature\\\":%d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, temp);
Delay_s(2);
printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CurrentHumidity\\\":%d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, humi);
Delay_s(2);
k -= 10;
}
你好,你的这个问题实验现象是什么,贴的代码也不完整,代码片段中哪个是测量函数,描述得有些乱,把需求描述清楚一些,可以更好的有参考答案
我看到以下几个问题:
delay_ms(1500) 两次调用之间没有任何逻辑,可以合并为 delay_ms(3000)
humi 变量定义后没有初始化,第一次读取 DHT11 的数据前它的值是不定的。应该初始化为 0,如:
c
int humi = 0;
c
printf("humi=%2d\r\n",humi);
Delay_ms(500);
c
int l = 0;
if(k==l) { ... }