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);
}
演示