Arduino UNO 制作温度显示报警

Arduino UNO 制作温度显示报警

所需要的材料

1.DHT11 温度湿度感应器
2.LCD1602 液晶显示矩阵
3.LCD1602 转接板
4.Arduino UNO
5.面包板一块
6.接线若干
7.蜂鸣器一个

线路接法

Arduino UNO 制作温度显示报警_第1张图片
说明

将板上的5V的vcc和GND接到面包板上

蜂鸣器1极接7号针脚(可自定义),另一只脚接GND,

DHT11模块,VCC和GND接面包板的正负两极, Data接8号引脚

LCD1602模块是带IIC转接版的,只有四个输出口,

引脚说明
GND —— 地线
VCC —— 电源(5V or 3.3v 电源不同显示效果有点差别)
SDA —— I2C 数据线
SCL —— I2C 时钟线

接线说明
LCD1602 i2c模块 Ardunio Uno
GND <——> GND接地线
VCC <——> 5V 接电源
SDA <——> A4
SCL <——> A5

我的LCD1602是带I2C的
Arduino UNO 制作温度显示报警_第2张图片

这模块是通过LCD1602屏 和 LCD1602 I2C 模块 焊接结合的,可以直接买焊接好的,也可以分开买

代码

#include 
#define DHTPIN 8
#define DHTTYPE DHT11
#define BEEPPIN 7

//LingShun lab
#include 
#include  //引用I2C库

DHT dht(DHTPIN, DHTTYPE);

//设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册
LiquidCrystal_I2C lcd(0x27, 16, 2);
int warn = 0;

void setup()
{
    Serial.begin(9600);
    pinMode(BEEPPIN, OUTPUT);
    dht.begin();

    lcd.init();                  // 初始化LCD
    lcd.backlight();             //设置LCD背景等亮
}


void loop()
{
    delay(2000);

    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if(t > 28 && warn == 0)
    {
        beeWarnning();
    }
    else if(warn == 1)
    {
        stopWarn();
    }

    lcd.setCursor(0, 0);
    lcd.print("Humidity:");
    lcd.print(h);
    Serial.println("Humidity:");
    Serial.print(h, DEC);
    lcd.setCursor(0, 1); //将闪烁的光标设置到column 0, line 1 (注释:从0开始数起,line 0是显示第一行,line 1是第二行。)
    lcd.print("Temperature:");
    lcd.print(t);
    Serial.println("Temperature:");
    Serial.print(t, DEC);
}

void beeWarnning()
{
    warn = 1;
    for (int i = 200; i <= 800; i++) //用循环的方式将频率从200HZ 增加到800HZ
    {
        tone(7, i);                   //在四号端口输出频率
        delay(5);                     //该频率维持5毫秒
    }
}

void stopWarn()
{
    warn = 0;
    noTone(BEEPPIN);
}

DHT11模块引用库需要另外下载,下载地址:https://github.com/adafruit/DHT-sensor-library.git
不过这个库缺少一个头文件,您需要另外去下载一下,放到这个代码目录下:Adafruit_Sensor.h
LCD1602_I2C的库,下载地址:https://github.com/marcoschwartz/LiquidCrystal_I2C.git

这两个库直接放到arduino的库目录下就可以了,直接在库目录git clone就好了

当用热源加热感应器的时候 ,温度超过28,蜂鸣器就会发出声响了。

引用文章
Arduino 和LCD1602液晶屏 I2C接口实验

附LCD1602设备地址寻找代码
把模块按接线方法接好,上传这段代码后,打开端口监视器,就能找到在I2C上的设备地址,大家可以试试哦

#include 
void setup()
{
    Wire.begin();
    Serial.begin(9600);
    Serial.println("\nI2C Scanner");
}
void loop()
{
    byte error, address;
    int nDevices;
    Serial.println("Scanning...");
    nDevices = 0;
    for (address = 1; address < 127; address++ ){
        // The i2c_scanner uses the return value of
        // the Write.endTransmisstion to see if
        // a device did acknowledge to the address.
        Wire.beginTransmission(address);
        error = Wire.endTransmission();
        if (error == 0){
            Serial.print("I2C device found at address 0x");
            if (address < 16)
            Serial.print("0");
            Serial.print(address, HEX);
            Serial.println(" !");
            nDevices++;
        }else if (error == 4){
            Serial.print("Unknow error at address 0x");
            if (address < 16)
                Serial.print("0");
            Serial.println(address, HEX);
        }
    }
    if (nDevices == 0)
        Serial.println("No I2C devices found\n");
    else
        Serial.println("done\n");
    delay(5000); // wait 5 seconds for next scan
}

你可能感兴趣的:(编程语言,Arduino)