/***************************************************** 湖南创乐博智能科技有限公司 name:Humiture Detection function:you can see the current value of humidity and temperature displayed on the I2C LCD1602. ******************************************************/ //include the libraries #include <dht.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 and 0x3F for a 16 chars and 2 line display dht DHT;//create a variable type of dht const int DHT11_PIN= A0;//Humiture sensor attach to pin7 void setup() { Serial.begin(9600);//initialize the serial lcd.init(); //initialize the lcd lcd.backlight(); //open the backlight } void loop() { //READ DATA //Serial.println("DHT11:"); D: int chk = DHT.read11(DHT11_PIN);//read the value returned from sensor switch (chk) { case DHTLIB_OK: //Serial.println("OK!"); break; case DHTLIB_ERROR_CHECKSUM: //goto D; // Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: goto D; Serial.print("Time out error,\t"); break; default: // goto D; Serial.print("Unknown error,\t"); break; } // DISPLAY DATA lcd.setCursor(0, 0); lcd.print("Tem:"); Serial.print("Tem:"); lcd.print(DHT.temperature,1); //print the temperature on lcd Serial.print(DHT.temperature,1); lcd.print(char(223));//print the unit" ℃ " lcd.print("C"); Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("Hum:"); Serial.print("Hum:"); lcd.print(DHT.humidity,1); //print the humidity on lcd Serial.print(DHT.humidity,1); lcd.print(" %"); Serial.println(" %"); delay(200); //wait a while } 根据上述代码画出流程图并且写出关键函数的理解使用并写出代码逻辑的文字表述
时间: 2023-07-24 11:16:06 浏览: 177
根据上述代码,可以画出以下流程图:
```
起始
|
|--- 设置串口通信速率为9600
|
|--- 初始化LCD1602显示屏
|
|--- 打开背光
|
|--- 进入循环
|
|--- 读取DHT11传感器数据
| |
| |--- 检查传感器返回值
| | |
| | |--- 若返回值为OK
| | | |
| | | |--- 打印"OK!"
| | |
| | |--- 若返回值为Checksum error
| | | |
| | | |--- 跳转至读取数据步骤
| | |
| | |--- 若返回值为Time out error
| | | |
| | | |--- 打印"Time out error"
| | |
| | |--- 若返回值为Unknown error
| | | |
| | | |--- 打印"Unknown error"
|
|
|--- 显示温度数据
| |
| |--- 设置光标位置为第一行第一列
| |
| |--- 打印"Tem:"
| |
| |--- 打印温度值到LCD1602显示屏
|
|
|--- 显示湿度数据
|
|--- 设置光标位置为第二行第一列
|
|--- 打印"Hum:"
|
|--- 打印湿度值到LCD1602显示屏
|
|--- 延时200毫秒
```
关键函数的理解使用及代码逻辑的文字表述:
- `setup()` 函数主要用于初始化设置,包括设置串口通信速率为9600,初始化LCD1602显示屏并打开背光。
- `loop()` 函数是主要的循环函数,用于读取DHT11传感器数据并显示在LCD1602显示屏上。
- `DHT.read11(DHT11_PIN)` 函数用于读取DHT11传感器的温湿度数据,并返回一个值表示读取状态。
- `chk` 变量用于保存读取DHT11传感器数据的返回值。
- 使用 `switch` 语句对 `chk` 进行判断,根据不同的返回值打印相应的提示信息。
- `lcd.setCursor(0, 0)` 和 `lcd.setCursor(0, 1)` 用于设置光标位置,分别将光标移动到第一行和第二行的第一列。
- `lcd.print()` 用于将数据打印到LCD1602显示屏上。
- `delay(200)` 用于延时200毫秒。
整个代码逻辑的文字表述是:初始化设置后进入循环,循环中首先读取DHT11传感器数据并判断返回值,然后将温度和湿度数据分别显示在LCD1602显示屏的第一行和第二行。每次循环结束后延时200毫秒。这样就实现了通过DHT11传感器获取温湿度数据并显示在LCD1602显示屏上的功能。
阅读全文