改进代码 #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(" %")); }
时间: 2024-03-24 10:36:28 浏览: 199
有几个可以改进的地方:
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);
}
```
阅读全文