嵌入式

Arduino 温度传感器DS18B20

2022-07-02  本文已影响0人  Charles2018

实验一

串口打印温度值

电路图.jpg

注意:由于DS18B20没有高电平输出能力,通过外接10kohm上拉电阻解决。

代码

#include<OneWire.h>             // 单总线库
#include<DallasTemperature.h>   // Dallas传感器DS18B20库

#define datpin 10               // 传感器引脚

OneWire onewire(datpin);
DallasTemperature sensors(&onewire);

void setup()
{
    Serial.begin(9600);
    sensors.begin();            // 初始化温度传感器DS18B20
}

void loop()
{
    sensors.requestTemperatures();          // 发出温度请求
    Serial.print("Temperature:");
    float val = sensors.getTempCByIndex(0); // 读取温度值
    Serial.print(val);
    Serial.println("C");
    delay(500);
}
演示1 演示2

实验二

LCD1602显示温度值

接线图.jpg

代码

#include<DallasTemperature.h>
#include<LiquidCrystal.h>
#include<OneWire.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //设置lcd1602引

int datpin = 9;
OneWire onewire(datpin);
DallasTemperature sensors(&onewire);

void setup()
{
    sensors.begin();
    lcd.begin(16, 2);
    lcd.print("Welcome to ");
    lcd.setCursor(5, 1); // 第六列,第二行
    delay(3000);
    lcd.clear(); // 清屏
}

void loop()
{
    sensors.requestTemperatures();
    float val = sensors.getTempCByIndex(0);
    lcd.setCursor(0, 1); // 第一列,第二行
    lcd.print(val);
    lcd.setCursor(6, 2); 
    lcd.print("C");
    if (val > 30)
    {
        lcd.setCursor(0, 0);
        lcd.print("It's hot!!!");
    }
    else
    {
        lcd.setCursor(0, 0);
        lcd.print("Temperatures: ");
    }
    delay(1000);
}
演示
上一篇 下一篇

猜你喜欢

热点阅读