我买的DHT11模块自带上拉电阻(1k),若你买的只是模块,直接读取可能读取不到温度,需要自行接一个上拉电阻(1k~10k都行)到模块的DATA引脚。
1、添加DHT库:
找到Adafruit的DHT_sensor_library,并安装
2、选择例程:
3、例如我们要把DHT11的DATA口接到合宙ESP32C3的GPIO4口:
接线方式:
合宙ESP32C3 | DHT11 |
VCC(3.3V) | VCC |
GND | GND |
GPIO4 | DATA |
例程代码:(记得更改GPIO管脚定义,程序与接线对应,我这里接线GPIO4,例程仅需更改宏定义#define DHTPIN 4)
#include "DHT.h"#define DHTPIN 4 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 3 (on the right) of the sensor to GROUND (if your sensor has 3 pins)
// Connect pin 4 (on the right) of the sensor to GROUND and leave the pin 3 EMPTY (if your sensor has 4 pins)
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);void setup() {Serial.begin(9600);Serial.println(F("DHTxx test!"));dht.begin();
}void loop() {// Wait a few seconds between measurements.delay(2000);// Reading temperature or humidity takes about 250 milliseconds!// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)float h = dht.readHumidity();// Read temperature as Celsius (the default)float t = dht.readTemperature();// Read temperature as Fahrenheit (isFahrenheit = true)float f = dht.readTemperature(true);// Check if any reads failed and exit early (to try again).if (isnan(h) || isnan(t) || isnan(f)) {Serial.println(F("Failed to read from DHT sensor!"));return;}// Compute heat index in Fahrenheit (the default)float hif = dht.computeHeatIndex(f, h);// Compute heat index in Celsius (isFahreheit = false)float hic = dht.computeHeatIndex(t, h, false);Serial.print(F("Humidity: "));Serial.print(h);Serial.print(F("% Temperature: "));Serial.print(t);Serial.print(F("°C "));Serial.print(f);Serial.print(F("°F Heat index: "));Serial.print(hic);Serial.print(F("°C "));Serial.print(hif);Serial.println(F("°F"));
}
编译下载运行结果: