当前位置:首页 > 问问

用32程序读取不到DHT11的值为什么 32程序为何无法读取DHT11值?

1、DHT11介绍

DHT11是一种数字温湿度传感器,可以通过单一的总线线路实时测量湿度和温度。它使用了一个CRC校验和的32位单总线数字信号来实现通讯。

DHT11运作时,需要的电源电压为3V~5.5V,输出的电平为3.3V左右,具有较高的测量精度和快速的反应时间。

2、程序无法读取值的可能原因

可能的原因有很多,以下列举几个最常见的因素:

(1)传输方式错误:DHT11的数据传输采用单总线数字信号,如果传输方式不对,将无法读取到正确的数据。

(2)接口未连接好:如果缺失或不正确地连接了传感器,就无法从其读取到精确的数据。

(3)程序编写错误:编写的程序中存在漏洞,如语法错误,变量名拼写错误等。

3、如何解决问题?

以下是几个解决问题的方法:

(1)检查程序:若程序因编写错误或语法错误而无法读取到值,则需要重新检查编码并进行修复。

(2)检查接口:保持电路接线正确并检查传感器和计算机之间的连接是否牢固无误。另外,还应该检查如下方面:

① 接线是否正确:通过确认接线方式与示例代码中的接线方式是否相同,来检查所使用的连接方式是否正确;

② 结束线匹配:确认结束电阻和电容是否合适。非法的电容和终止电阻可能导致传感器无法响应;

③ 连接稳定性:确认连接方式和稳定性是否正确,特别是对于I/O口电平是否稳定。

(3)切换传输方式:从使用单总线数字信号到使用不同的方法进行数据传输。

4、示例参考代码

以下示例代码可用于在32程序中读取温湿度传感器DHT11数据:

```

#define DHT11_PIN 2

int dht11_dat[5] = {0, 0, 0, 0, 0};

void read_dht11_dat()

uint8_t laststate = HIGH;

uint8_t counter = 0;

uint8_t j = 0, i;

float f;

pinMode(DHT11_PIN, OUTPUT);

digitalWrite(DHT11_PIN, LOW);

delay(18);

digitalWrite(DHT11_PIN, HIGH);

delayMicroseconds(40);

pinMode(DHT11_PIN, INPUT);

for (i = 0; i < 85; i++)

{

counter = 0;

while (digitalRead(DHT11_PIN) == laststate)

{

counter++;

delayMicroseconds(1);

if (counter == 255)

{

break;

}

}

laststate = digitalRead(DHT11_PIN);

if (counter == 255)

break;

if ((i >= 4) && (i % 2 == 0))

{

dht11_dat[j / 8] <<= 1;

if (counter > 30)

dht11_dat[j / 8] |= 1;

j++;

}

}

if ((j >= 40) && (dht11_dat[4] == ((dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3]) & 0xFF)))

{

f = dht11_dat[2] * 9.0 / 5.0 + 32;

Serial.print("Humidity = ");

Serial.print(dht11_dat[0], DEC);

Serial.print(".");

Serial.print(dht11_dat[1], DEC);

Serial.print("% ");

Serial.print("Temperature = ");

Serial.print(dht11_dat[2], DEC);

Serial.print(".");

Serial.print(dht11_dat[3], DEC);

Serial.print("C ");

Serial.print(f);

Serial.print("F");

}

delay(1000);

void setup()

Serial.begin(9600);

Serial.println("DHT11 Humidity & temperature Sensor\n\n");

void loop()

read_dht11_dat();

```

以上程序所用的传输方式为单总线数字信号,可简单易行地读取到温湿度传感器的数据。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章