用ardunio驱动DS18B20传感器+OLED显示屏显示温度及学号姓名
一、项目背景
在嵌入式开发与电子小制作中,常需要采集环境温度并直观显示 。结合 Arduino 开发板、DS18B20 温度传感器和 OLED 显示屏,可快速搭建简易温度监测系统,还能添加个性化信息(如学号、姓名 ),适合学生课程实践、电子爱好者入门探索 。
二、硬件准备
- Arduino 开发板:如 Arduino Nano,作为主控单元协调各模块工作 。
- DS18B20 温度传感器:单总线数字温度传感器,测温范围广、精度较高,适合环境温度采集 。
- 0.96 寸 I2C 通信 OLED 显示屏(SSD1306 驱动):用于直观显示温度及个性化信息,I2C 通信方式接线简洁 。
- 杜邦线:用于连接各硬件模块引脚。
三、硬件连接
(一)DS18B20 接线
- VCC:接 Arduino 5V 引脚,为传感器供电 。
- GND:接 Arduino GND 引脚,实现共地 。
- DQ(数据引脚):接 Arduino 数字引脚 2(代码中可按需修改 ),通过单总线与主控通信 。
(二)OLED 显示屏接线(I2C 模式 )
- VCC:接 Arduino 3V3 引脚 。
- GND:接 Arduino GND 引脚 。
- SCL(时钟线):接 Arduino A5 引脚 。
- SDA(数据线):接 Arduino A4 引脚 。
四、软件实现(Arduino 代码 )
(一)库依赖安装
打开 Arduino IDE,通过 项目 → 加载库 → 管理库,搜索并安装以下库:
- OneWire :用于 DS18B20 单总线通信 。
- DallasTemperature :简化 DS18B20 温度读取逻辑 。
- Adafruit_GFX :Adafruit 图形库,提供 OLED 显示基础绘图功能 。
- Adafruit_SSD1306 :针对 SSD1306 驱动 OLED 屏的专用库 。
(二)完整代码
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// DS18B20 数据引脚定义
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// OLED 屏参数定义(0.96 寸 128×64 分辨率 )
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);
// 个性化信息(替换为实际学号、姓名 )
const char* studentID = “你的学号”;
const char* studentName = “你的姓名”;
void setup() {
Serial.begin(9600);
sensors.begin(); // 初始化 DS18B20 传感器
// 初始化 OLED 屏,地址 0x3C(若屏地址不同需修改 )
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F(“OLED 初始化失败!”));
while(1); // 初始化失败则死循环提示
}
display.clearDisplay(); // 清屏
display.setTextSize(1); // 设置字体大小
display.setTextColor(WHITE); // 设置字体颜色为白色
}
void loop() {
sensors.requestTemperatures(); // 触发温度采集
float temperature = sensors.getTempCByIndex(0); // 获取温度值(默认第一个传感器 )
display.clearDisplay(); // 清屏准备刷新内容
// 显示学号
display.setCursor(0, 0);
display.print("ID: ");
display.println(studentID);
// 显示姓名
display.setCursor(0, 10);
display.print("name: ");
display.println(studentName);
// 显示温度
display.setCursor(0, 20);
display.print(“temperature: “);
display.print(temperature);
display.println(” °C”);
display.display(); // 刷新 OLED 屏显示内容
delay(1000); // 延迟 1 秒,周期性采集显示
}
四、图片展示
更多推荐




所有评论(0)