美文网首页和12岁小同志搞创客开发
和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

作者: 不脱发的程序猿 | 来源:发表于2021-12-07 23:53 被阅读0次

    本篇博文将使用DHT11做一款温湿度检测器,检测的温湿度数据将通过LCD1602显示。

    项目连线效果如下所示:

    实现代码如下所示:

    #include <dht11.h>

    #include <Wire.h>

    #include <LiquidCrystal_I2C.h>

    LiquidCrystal_I2C lcd(0x20,16,2);  //设置LCD的地址为0x20,可以设置2行,每行16个字符

    dht11 DHT;

    #define DHT11_PIN 4

    void setup(){

      lcd.init();                // LCD初始化设置

      lcd.backlight();          // 打开LCD背光

      Serial.begin(9600);      // 设置串口波特率9600

      //串口输出”Type, status, Humidity(%), Temperature(C)”

      Serial.println("Type,\tstatus,\tHumidity(%),\tTemperature(C)");

      lcd.print("Humidity(%): ");    //LCD屏显示” Humidity(%):”

      lcd.setCursor(0, 1);            //光标移到第2行,第一个字符

      lcd.print("Temp(C): ");        //LCD屏显示”Temp(C):”

    }

    void loop(){

      int chk;    //chk用于存储DHT11传感器的数据

      Serial.print("DHT11, \t");   

      //读取DHT11传感器的数据

      chk = DHT.read(DHT11_PIN);   

      switch (chk){   

        case DHTLIB_OK: 

                    Serial.print("OK,\t");

                    break;

        case DHTLIB_ERROR_CHECKSUM:

                    Serial.print("Checksum error,\t");

                    break;

        case DHTLIB_ERROR_TIMEOUT:

                    Serial.print("Time out error,\t");

                    break;

        default:

                    Serial.print("Unknown error,\t");

                    break;

      }

    //串口显示温湿度值

      Serial.print(DHT.humidity,1);

      Serial.print(",\t");

      Serial.println(DHT.temperature,1);

      //LCD显示温湿度值

      lcd.setCursor(12, 0);

      lcd.print(DHT.humidity,1);

      lcd.setCursor(8, 1);

      lcd.print(DHT.temperature,1);

      delay(1000);

    }

    首先把用到的库声明一下:

    #include <dht11.h>

    #include <Wire.h>

    #include <LiquidCrystal_I2C.h>

    本项目使用到dht11.h和LiquidCrystal_l2C的库,需要加载库,那么Wire.h的库为什么不需要加载呢?因为我们下载的Arduino IDE本身自带这个库。

    有了现有的库,所以只需要在程序的一开始声明一下LCD:

    LiquidCrystal_I2Clcd(0x20,16,2);//设置LCD的地址为0x20,可以设置2行,每行16个字符

    其中:

    0X20:是LCD I2C地址,由屏后面的A0~A1决定,可参见产品手册;

    16:每行16个字符;

    2:共2行。

    程序中LiquidCrystal_I2C.h设计函数说明如下表所示:

    “switch”可以理解为是“开关”,多选择开关。与if语句相似之处在于switch…case也用于判断,又与if不同点在于它能判断多种情况。使用如下所示:

    需要注意几点:

    1、case后面是冒号,不是分号。

    2、关键字break用于退出switch语句,通常每条case语句都以break结尾。如果没有break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break,或者switch语句结尾。

    最后,下载运行程序看看效果吧~

    相关文章

      网友评论

        本文标题:和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

        本文链接:https://www.haomeiwen.com/subject/knezxrtx.html