改进代码 #include <SoftwareSerial.h> #include <Adafruit_Sensor.h> #include <DHT.h> #include <DHT_U.h> #include <Nextion.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT_Unified dht(DHTPIN, DHTTYPE); SoftwareSerial mySerial(10, 11); // RX, TX NexText g0 = NexText(0, 2, "g0"); // Specify the page ID and component ID for the temperature display NexText g1 = NexText(0, 3, "g1"); // Specify the page ID and component ID for the humidity display void setup() { Serial.begin(9600); while (!Serial); mySerial.begin(9600); dht.begin(); NexInit(); // Initialize the Nextion display } void loop() { sensors_event_t event; dht.temperature().getEvent(&event); float temperature = event.temperature; dht.humidity().getEvent(&event); float humidity = event.relative_humidity; // Send temperature and humidity data through serial communication mySerial.write((byte)(temperature / 256)); mySerial.write((byte)(temperature)); mySerial.write((byte)(humidity / 256)); mySerial.write((byte)(humidity)); // Display the temperature and humidity on the Nextion display String tempStr = String(temperature, 1) + "C"; String humStr = String(humidity, 1) + "%"; g0.setText(tempStr.c_str()); g1.setText(humStr.c_str()); delay(2000); }
时间: 2024-03-23 16:42:28 浏览: 165
Adafruit_Sensor-master.zip
在代码中,可以进行如下改进:
1. 在初始化串口时,可以加上一个延时,以确保串口正常启动。例如:
```
Serial.begin(9600);
while (!Serial) {
delay(10);
}
```
2. 在发送数据到串口时,可以使用更好的数据类型。例如,使用 `float` 类型的变量 `temp` 和 `hum` 来存储温度和湿度数据,然后将它们转换为 `int` 类型的变量再发送到串口。例如:
```
float temp, hum;
dht.temperature().getEvent(&event);
temp = event.temperature;
dht.humidity().getEvent(&event);
hum = event.relative_humidity;
int tempInt = (int)(temp * 10);
int humInt = (int)(hum * 10);
mySerial.write((byte)(tempInt >> 8));
mySerial.write((byte)(tempInt & 0xFF));
mySerial.write((byte)(humInt >> 8));
mySerial.write((byte)(humInt & 0xFF));
```
3. 在设置文本显示时,可以使用 `dtostrf()` 函数将浮点数转换为字符串,并且可以使用更简洁的方式设置文本。例如:
```
char tempStr[10], humStr[10];
dtostrf(temp, 5, 1, tempStr);
dtostrf(hum, 5, 1, humStr);
g0.setText(tempStr);
g1.setText(humStr);
```
阅读全文