使用Arduino Uno、DHT11和0.96寸OLED显示温湿度数据
创作时间:
作者:
@小白创作中心
使用Arduino Uno、DHT11和0.96寸OLED显示温湿度数据
引用
CSDN
1.
https://m.blog.csdn.net/2301_78925693/article/details/145160812
在物联网和智能家居项目中,显示环境的温湿度是一个常见的需求。今天,我们将通过一个简单的项目,使用Arduino Uno、DHT11温湿度传感器和0.96寸OLED显示屏来实现这一功能。这个项目不仅适合初学者,还能为更复杂的项目提供基础。
硬件连接
DHT11 温湿度传感器
- VCC 连接到 Arduino Uno 的 5V 引脚。
- GND 连接到 Arduino Uno 的 GND 引脚。
- DATA 连接到 Arduino Uno 的 D2 引脚。
0.96 寸 OLED 显示屏(I2C)
- VCC 连接到 Arduino Uno 的 5V 引脚。
- GND 连接到 Arduino Uno 的 GND 引脚。
- SCL 连接到 Arduino Uno 的 A5 引脚。
- SDA 连接到 Arduino Uno 的 A4 引脚。
软件准备
在开始编程之前,确保已经安装了以下库:
- Adafruit GFX Library
- Adafruit SSD1306 Library
- DHT Library
可以通过 Arduino IDE 的“库管理器”安装这些库:
- 打开 Arduino IDE,点击“草图”->“包含库”->“管理库...”。
- 在库管理器中搜索并安装 Adafruit GFX Library、Adafruit SSD1306 Library 和 DHT Library。
代码实现
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHT.h"
// OLED显示屏设置
#define SCREEN_WIDTH 128 // OLED显示宽度,以像素为单位
#define SCREEN_HEIGHT 64 // OLED显示高度,以像素为单位
// 创建SSD1306显示对象
#define OLED_RESET -1 // 重置引脚(不适用时使用-1)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// DHT11设置
#define DHTPIN 2 // DHT传感器数据引脚连接到Arduino的数字引脚2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// 初始化串口通信,以便在串行监视器中查看输出(可选)
Serial.begin(9600);
// 初始化DHT11传感器
dht.begin();
// 初始化OLED显示屏
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C是大多数0.96" OLED的默认I2C地址
Serial.println(F("SSD1306 allocation failed"));
for(;;); // 停止执行
}
// 清空显示屏
display.clearDisplay();
// 设置文本大小(可选)
display.setTextSize(1);
// 设置文本颜色(白色)
display.setTextColor(SSD1306_WHITE);
// 设置光标位置
display.setCursor(0,0);
// 显示一些初始文本(可选)
display.println(F("DHT11 Test!"));
// 更新显示屏
display.display();
}
void loop() {
// 等待传感器稳定
delay(2000);
// 读取温度和湿度数据
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// 检查是否读取失败,有时传感器需要更长时间来稳定
if (isnan(humidity) || isnan(temperature)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// 清空显示屏
display.clearDisplay();
// 设置光标位置
display.setCursor(0,0);
// 显示温度和湿度数据
display.print(F("Temp: "));
display.print(temperature);
display.print(F(" *C Humidity: "));
display.print(humidity);
display.println(F("%"));
// 更新显示屏
display.display();
// 等待一段时间再读取下一次数据
delay(2000);
}
热门推荐
国产大模型加速迭代 开源渐成“必选项”
餐桌椅子尺寸标准及选购指南
儿童止咳的科学方法:从日常护理到专业治疗
深度:NBA各大奖项预测,以及对赛季剩余比赛的5个大胆预测
肺炎支原体又来了,咋办?
葵花籽油的营养价值
六字口号,运动精神的点睛之笔
货币通缩、期货和通胀对股市行情的影响
城市驾驶必备5 优秀习惯指南
判无罪释放后的后果:影响个体与社会的前进与成长
太阳光不同波段的作用及其利用
易学文化考试网:易学对职场发展的帮助?提升职业竞争力。
鼻子过敏治疗全攻略:西医、中医还是洗鼻?
甩脂机的危害有哪些?正在使用的人要注意
廉价机械键盘维修指南:使用电烙铁更换损坏的轴
五谷杂粮米糊热量高吗?营养科医生专业解读
律师为什么需要收取费用:法律服务的价值与收费机制解析
【图像分割】GrabCut算法
重庆大学2024年强基计划:招生专业、就业前景及录取分数线详解
机器人维护:修理工业机器人的完整指南
SPSS软件中缺失值分析的详细教程
职场培训:坚持的力量
猫咪会模仿人类行为
健身人士必读:科学饮食助力运动表现与肌肉恢复
小型休闲农庄规划方案
【加装电梯】消防安全攻略:四大举措,筑牢安全防线!
汽车玻璃壶裂了怎么办?修复方法及所需材料全攻略
资本公积转增股本个税缴纳的条件是什么
八字里的桃花:解读命理中的爱情运势
全面解析,人保车险理赔流程与法律规范