如何通过Deepseek的指导用Arduino Nano实现温度显示系统搭建
如何通过Deepseek的指导用Arduino Nano实现温度显示系统搭建概述打开Deepseek,对Deepseek进行提问,首先要给予你想要Deepseek对你提供帮助的内容,且说明你手中现有的器件,例如我的提示词“假设我现在有一块arduino nano开发板,一块18B20温度采集器和一块四线OLED显示屏,我该如何编写一段代码和接线,将这些元件组成一套能够在显示屏上显示特定数字和文字以
·
如何通过Deepseek的指导用Arduino Nano实现温度显示系统搭建
概述
打开Deepseek,对Deepseek进行提问,首先要给予你想要Deepseek对你提供帮助的内容,且说明你手中现有的器件,例如我的提示词“假设我现在有一块arduino nano开发板,一块18B20温度采集器和一块四线OLED显示屏,我该如何编写一段代码和接线,将这些元件组成一套能够在显示屏上显示特定数字和文字以及温度采集器采集到的温度信息。
实验材料
DS18B20温度传感器
ArduinolDE
四线OLED显示屏(I2C协议)
usb线
Arduino Nano引脚
杜邦线(公对公或公对母,根据传感器引脚类型选择)
硬件连接图
引脚连接对照表
DS18B20 | Arduino Nano |
---|---|
VCC | 5V |
GND | GND |
DATA | 数字引脚D2 |
OLED | Arduino Nano |
---|---|
VCC | 3.3V |
SDA | A4 |
SCL | A5 |
GND | GND |
详细接线步骤
1. DS18B20温度传感器接线
-
电源连接
- 将DS18B20的 VCC(红) 连接到Arduino Nano的 5V 引脚
- 将DS18B20的 GND(黑) 连接到Arduino Nano的 GND 引脚
-
数据线连接
- 将DS18B20的 DATA(黄) 连接到Arduino Nano的 数字引脚D2
-
上拉电阻连接
- 在DS18B20的 DATA(黄) 和 VCC(红) 之间焊接或插入一个 4.7kΩ电阻
- 若使用面包板,电阻两端分别插入DATA线和VCC线的同一行即可。
2. OLED显示屏接线
-
电源连接
- 将OLED的 VCC 连接到Arduino Nano的 5V 引脚
- 将OLED的 GND 连接到Arduino Nano的 GND 引脚
-
I2C通信连接
- 将OLED的 SDA 连接到Arduino Nano的 A4(即SDA引脚)
- 将OLED的 SCL 连接到Arduino Nano的 A5(即SCL引脚)
完整接线示意图
Arduino Nano DS18B20 OLED
+------------+ +------------+ +------------+
| 5V |-----------| VCC (红) | | VCC |
| GND |-----------| GND (黑) |-------| GND |
| D2 |-----------| DATA (黄) | | |
| A4 (SDA) |------------------------------| SDA |
| A5 (SCL) |------------------------------| SCL |
+------------+ +------------+ +------------+
| 4.7kΩ电阻 |
| DATA↔VCC |
+------------+
关键注意事项
-
上拉电阻必须连接
- 未添加4.7kΩ电阻会导致DS18B20无法返回温度数据(显示-127℃错误值)。
-
OLED地址验证
- 部分OLED的I2C地址可能是
0x3D
而非0x3C
,需通过I2C扫描工具确认(代码中需对应修改OLED_ADDR
)。
- 部分OLED的I2C地址可能是
-
电源稳定性
- 若使用外部电源,需确保Arduino Nano和传感器共地(GND相连)。
-
防静电保护
- 焊接或插拔时避免静电击穿传感器(尤其是DS18B20)。
测试建议
-
分步验证
- 先单独测试OLED显示(用示例代码显示静态文本)
- 再单独测试DS18B20温度读取(通过串口监视器输出温度值)
- 最后整合两者功能。
-
故障排查
- OLED不亮:检查电源是否反接,I2C地址是否正确。
- 温度值异常:检查DATA线是否虚焊,上拉电阻是否脱落。
- 显示乱码:检查库文件是否安装正确,或尝试降低I2C通信速率。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// 硬件配置
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_ADDR 0x3C // OLED地址(0x3C或0x3D)
#define TEMP_PIN 2 // DS18B20数据引脚
Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);
OneWire oneWire(TEMP_PIN);
DallasTemperature sensors(&oneWire);
// ==== 修改以下信息 ====
const char* studentID = "20210001"; // 你的学号
const char* studentName = "Li Ming"; // 你的姓名
// =====================
void setup() {
Serial.begin(9600);
// 初始化OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println("OLED初始化失败!");
while (1);
}
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
// 初始化温度传感器
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
display.clearDisplay();
// 显示学号姓名(顶部)
display.setTextSize(1);
display.setCursor(0, 0);
display.print("ID:");
display.print(studentID);
display.print(" ");
display.print(studentName);
// 显示温度(中部)
display.setTextSize(2);
display.setCursor(0, 20);
display.print("Temp:");
display.setTextSize(3);
display.setCursor(0, 40);
display.print(tempC, 1);
display.print(" C");
display.display();
delay(2000);
}
一、Arduino IDE准备工作
1. 软件安装(若未安装)
- 下载地址:Arduino IDE官网
- 选择适合操作系统的版本(Windows/MacOS/Linux)
2. 开发板支持包安装(Arduino Nano)
- 打开IDE → 菜单栏
工具
→开发板
→开发板管理器
- 搜索
Arduino AVR Boards
→ 点击安装
- 安装完成后,选择开发板:
工具 → 开发板 → Arduino AVR Boards → Arduino Nano
- 选择处理器版本:
工具 → Processor → ATmega328P (Old Bootloader)
(兼容大多数Nano)
3. 安装依赖库
库名称 | 安装方式 |
---|---|
OneWire | 菜单栏 工具 → 管理库 → 搜索 OneWire → 安装 |
DallasTemperature | 同上,搜索 Dallas Temperature → 安装 |
Adafruit SSD1306 | 搜索 Adafruit SSD1306 → 安装 |
Adafruit GFX | 搜索 Adafruit GFX Library → 安装 |
代码操作流程
创建新项目
- 打开Arduino IDE →
文件
→新建
- 清空默认代码(删除所有内容)
配置开发板参数
- 选择开发板:
工具 → 开发板 → Arduino Nano
- 选择处理器:
工具 → Processor → ATmega328P (Old Bootloader)
- 选择端口:
工具 → 端口
→ 选择显示Arduino Nano的COM口(Windows)或/dev/cu.usbserial-XXXX
(Mac)
编译与上传
- 点击
✓
(验证/编译)检查代码是否有语法错误 - 确认无误后,点击
→
(上传)将代码写入Arduino Nano - 观察IDE底部状态栏,显示
上传成功
即完成操作
常见问题解决
1. 编译报错 fatal error: Adafruit_GFX.h: No such file or directory
- 原因:未正确安装Adafruit GFX库
- 解决:通过库管理器重新安装
Adafruit GFX Library
2. 上传失败 avrdude: ser_open(): can't open device
- 原因:端口被占用或选择错误
- 解决步骤:
- 拔插USB线重新识别端口
- 关闭其他串口监控软件(如串口助手)
- 确认选择了正确的COM口
3. OLED显示乱码
- 原因:I2C地址不匹配
- 解决:修改代码中的
OLED_ADDR
为0x3D
并重新上传
4. 温度值固定为 85.0℃
- 原因:DS18B20上拉电阻未连接
- 解决:检查DATA引脚和VCC之间的4.7kΩ电阻是否接触良好
最终效果验证
成功上传后,您的设备将显示:
- 顶部:
ID:20210001 Li Ming
(您的学号姓名) - 中部:
Temp:25.5 C
(实时温度) - 刷新频率:每2秒更新一次温度值
更多推荐
所有评论(0)