在Arduino IDE中使用DS18B20、Nano开发板和OLED屏显示学号、姓名与温度
一、引言
在电子制作与嵌入式开发中,实时获取环境数据并直观展示是常见需求。本文将详细介绍如何利用Arduino Nano开发板,结合DS18B20温度传感器与OLED显示屏,实现屏幕显示学号、姓名以及实时温度数据。通过这个项目,读者可以掌握传感器数据采集与OLED显示的基础应用,对Arduino开发有更深入的理解。
二、硬件准备
1. Arduino Nano开发板:作为整个系统的核心控制器,负责处理传感器数据并控制OLED屏显示。
2. DS18B20温度传感器:用于测量环境温度,具有高精度、单总线通信的特点。
3. OLED显示屏:这里选用常见的I2C接口的0.96寸OLED屏,用于显示学号、姓名和温度信息。
4. 杜邦线:若干,用于连接各个硬件模块。
5. 面包板(可选):方便硬件连接,使电路布局更整洁。
三、硬件连接
1. DS18B20与Arduino Nano连接
- VCC:连接到Arduino Nano的5V引脚,为传感器供电。
- DQ:连接到Arduino Nano的任意数字引脚,本文中连接到D2引脚,用于数据传输。
- GND:连接到Arduino Nano的GND引脚,提供接地。
2. OLED显示屏与Arduino Nano连接(I2C接口)
- VCC:连接到Arduino Nano的3.3V引脚(部分OLED屏也可接5V,根据具体规格而定)。
- GND:连接到Arduino Nano的GND引脚。
- SCL:连接到Arduino Nano的A5引脚。
- SDA:连接到Arduino Nano的A4引脚。
四、软件准备
1. 安装Arduino IDE:从Arduino官方网站(https://www.arduino.cc/)下载并安装适合你操作系统的Arduino IDE。
2. 安装必要的库
- OneWire库:用于与DS18B20温度传感器进行单总线通信。在Arduino IDE中,依次点击“项目”->“加载库”->“管理库”,在搜索框中输入“OneWire”,找到并安装由Paul Stoffregen开发的OneWire库。
- DallasTemperature库:基于OneWire库,用于简化DS18B20温度传感器的数据读取操作。同样在库管理器中搜索“DallasTemperature”并安装。
- Adafruit SSD1306库:用于控制OLED显示屏。在库管理器中搜索“Adafruit SSD1306”,安装由Adafruit开发的该库。
五、代码编写
打开Arduino IDE,新建一个项目,将以下代码复制到编辑区域:
cpp
#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显示屏参数
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// 替换为你的学号和姓名
const char* studentID = "你的学号";
const char* studentName = "你的姓名";
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 初始化DS18B20传感器
sensors.begin();
// 初始化OLED显示屏
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Initializing...");
display.display();
delay(2000);
}
void loop() {
// 读取温度
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
// 清空OLED显示屏
display.clearDisplay();
// 显示学号
display.setCursor(0, 0);
display.println("学号:");
display.setCursor(40, 0);
display.println(studentID);
// 显示姓名
display.setCursor(0, 10);
display.println("姓名:");
display.setCursor(40, 10);
display.println(studentName);
// 显示温度
display.setCursor(0, 20);
display.println("温度:");
display.setCursor(40, 20);
display.print(temperature);
display.println(" ℃");
// 更新OLED显示屏
display.display();
delay(1000);
}
请务必将代码中的 studentID 和 studentName 替换为你自己的学号和姓名。
六、代码解释
1. 头文件引入:通过 #include 指令引入所需的库文件,包括与DS18B20通信的 OneWire 和 DallasTemperature 库,以及控制OLED屏的 Adafruit_GFX 和 Adafruit_SSD1306 库。
2. 引脚定义与对象创建:定义DS18B20连接的引脚,并创建 OneWire 和 DallasTemperature 对象用于传感器操作;同时定义OLED显示屏的参数,并创建 Adafruit_SSD1306 对象用于控制显示屏。
3. setup 函数:初始化串口通信、DS18B20传感器和OLED显示屏。在初始化OLED屏时,若失败则通过串口打印错误信息并进入死循环。
4. loop 函数:在循环中,首先读取DS18B20传感器的温度数据,然后清空OLED显示屏,依次显示学号、姓名和温度信息,最后更新OLED显示屏并延时1秒,以便周期性地刷新显示内容。
七、上传与测试
1. 使用USB数据线将Arduino Nano开发板连接到电脑。
2. 在Arduino IDE中,选择正确的开发板型号(Arduino Nano)和对应的端口(在“工具”菜单中选择)。
3. 点击上传按钮,将代码上传到Arduino Nano开发板。
4. 上传完成后,观察OLED显示屏,应能看到显示的学号、姓名和实时温度数据。同时,也可以通过串口监视器查看调试信息(如果有)。
八、总结
通过本文的介绍,我们成功地利用Arduino Nano开发板、DS18B20温度传感器和OLED显示屏,实现了学号、姓名和温度数据的显示。这个项目涵盖了传感器数据采集、I2C通信以及OLED显示等Arduino开发中的重要知识点。读者可以在此基础上,进一步扩展功能,例如添加数据记录、报警等功能,探索更多有趣的电子制作项目。
希望本文对你的学习和实践有所帮助,如果你在操作过程中遇到任何问题,欢迎在评论区留言交流!

589

被折叠的 条评论
为什么被折叠?



