23:02:26.006 -> Error reading temperature! 23:02:26.006 -> Error reading humidity! 23:02:28.057 -> Error reading temperature! 23:02:28.102 -> Error reading humidity! 23:02:30.107 -> Error reading temperature! 23:02:30.139 -> Error reading humidity! 23:02:32.236 ->
时间: 2024-03-04 18:53:28 浏览: 16
这些错误信息表明无法读取DHT11传感器的温度和湿度数据。这可能是由于以下原因导致的:
1. 电源问题:DHT11需要3.3V的电压供电,如果电源不稳定或电压不足,可能会导致无法正常读取数据。
2. 连接问题:确保正确连接DHT11传感器的引脚。此外,还应检查引脚之间的连接,以确保它们没有松动或断开。
3. 代码问题:您可能需要检查您的代码,确保正确设置DHTPIN变量并使用正确的库。
4. 传感器问题:如果以上所有问题都得到解决并且仍然无法读取数据,则可能是传感器本身存在问题。
相关问题
改进代码 #include <SoftwareSerial.h> #include <DHT.h> #include <Nextion.h> #define DHT_PIN 2 #define DHT_TYPE DHT11 #define BAUD_RATE_SERIAL 9600 #define BAUD_RATE_NEXTION 9600 #define DELAY_SENSOR_READY 2000 DHT dht(DHT_PIN, DHT_TYPE); SoftwareSerial mySerial(10, 11); NexText g0(0, 2, "g0"); NexText g1(0, 3, "g1"); void setup() { Serial.begin(BAUD_RATE_SERIAL); while (!Serial); mySerial.begin(BAUD_RATE_NEXTION); dht.begin(); NexInit(); } void loop() { delay(DELAY_SENSOR_READY); // 读取温湿度数据 float temperature, humidity; if (readTemperatureHumidity(&temperature, &humidity)) { // 在Nextion显示屏上显示温湿度数据 displayTemperatureHumidity(temperature, humidity); // 向串口发送温湿度数据 char data[20]; sprintf(data, "T:%.1f C, H:%.1f %%", temperature, humidity); mySerial.println(data); } } // 从DHT11传感器读取温湿度数据 bool readTemperatureHumidity(float* temperature, float* humidity) { float temp, hum; if (!dht.readTemperatureAndHumidity(temp, hum)) { Serial.println("Error Reading DHT11!"); return false; } *temperature = temp; *humidity = hum; return true; } // 在Nextion显示屏上显示温湿度数据 void displayTemperatureHumidity(float temperature, float humidity) { g0.setText(String("Temperature: ") + String(temperature) + String(" C")); g1.setText(String("Humidity: ") + String(humidity) + String(" %")); }
有几个可以改进的地方:
1. 代码注释:建议添加注释,让代码更易读懂。
2. 常量定义:建议将常量放在代码开头定义,如`DELAY_SENSOR_READY`,`BAUD_RATE_SERIAL`等。
3. 字符串拼接:在显示温湿度数据时,可以使用`String`类的`concat`函数拼接字符串,而不是使用`+`运算符。
改进后的代码如下:
```C++
#include <SoftwareSerial.h>
#include <DHT.h>
#include <Nextion.h>
#define DHT_PIN 2
#define DHT_TYPE DHT11
#define BAUD_RATE_SERIAL 9600
#define BAUD_RATE_NEXTION 9600
#define DELAY_SENSOR_READY 2000
DHT dht(DHT_PIN, DHT_TYPE);
SoftwareSerial mySerial(10, 11);
NexText g0(0, 2, "g0");
NexText g1(0, 3, "g1");
void setup() {
Serial.begin(BAUD_RATE_SERIAL);
while (!Serial); //等待串口连接
mySerial.begin(BAUD_RATE_NEXTION);
dht.begin();
NexInit();
}
void loop() {
delay(DELAY_SENSOR_READY);
// 读取温湿度数据
float temperature, humidity;
if (readTemperatureHumidity(&temperature, &humidity)) {
// 在Nextion显示屏上显示温湿度数据
displayTemperatureHumidity(temperature, humidity);
// 向串口发送温湿度数据
char data[20];
sprintf(data, "T:%.1f C, H:%.1f %%", temperature, humidity);
mySerial.println(data);
}
}
// 从DHT11传感器读取温湿度数据
bool readTemperatureHumidity(float* temperature, float* humidity) {
float temp, hum;
if (!dht.readTemperatureAndHumidity(temp, hum)) {
Serial.println("Error Reading DHT11!");
return false;
}
*temperature = temp;
*humidity = hum;
return true;
}
// 在Nextion显示屏上显示温湿度数据
void displayTemperatureHumidity(float temperature, float humidity) {
String t = "Temperature: ";
t.concat(temperature);
t.concat(" C");
String h = "Humidity: ";
h.concat(humidity);
h.concat(" %");
g0.setText(t);
g1.setText(h);
}
```
arduino-esp32-c3对MF53-103F-3950-800L温度传感器的温度读取代码参考
您可以参考以下代码进行温度读取:
```
// include the required libraries
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_AM2320.h>
// create an instance of the sensor
Adafruit_AM2320 am2320 = Adafruit_AM2320();
void setup() {
Serial.begin(9600);
// initialize the sensor
if (!am2320.begin()) {
Serial.println("Error initializing AM2320 sensor!");
while (1);
}
}
void loop() {
// read the temperature and humidity
float temperature = am2320.readTemperature();
float humidity = am2320.readHumidity();
// print the temperature and humidity to the serial monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
delay(5000); // wait for 5 seconds before taking another reading
}
```
这是基于 Adafruit_AM2320 库的代码。在此例中,它用于读取 AM2320 温湿度传感器的温度值和相对湿度值。如果您的传感器型号是MF53-103F-3950-800L,则根据您的传感器规格可能需要进行一些适当的修改。