本篇文章由 VeriMake 旧版论坛中备份出的原帖的 Markdown 源码生成
原帖标题为:使用 VeriMake nanoC 控制板将 DHT11 模块测得的温湿度显示在 OLED 上
原帖网址为:https://verimake.com/topics/174 (旧版论坛网址,已失效)
原帖作者为:hi(旧版论坛 id = 70,注册于 2020-09-23 11:08:34)
原帖由作者初次发表于 2020-12-22 16:53:01,最后编辑于 2021-02-03 13:11:49(编辑时间可能不准确)
截至 2021-12-18 14:27:30 备份数据库时,原帖已获得 1262 次浏览、1 个点赞、1 条回复
使用VeriMake nanoC控制板将 DHT11 模块测得的温湿度显示在 OLED 上
模块图
dht11温湿度传感器模块,通过内部感应器件可以测得周围环境的温度和湿度,用相应的函数将测得的值返回,通过一些外围设备显示出来。

OLED模块,ssd1306驱动,通过控制可以在屏幕上显示想要显示的内容。

原理图
本图中的温湿度传感器是组装起来的,如果买的是和第一幅图一样的一个模块,则可以根据图中的使用的三个引脚直接相连。

实物连接图

代码
#include <dht11.h> //相应的库文件
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET); //屏幕的初始化设置
dht11 DHT11; //定义温湿度变量
const byte dataPin=2; //定义引脚
void setup() {
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
display.setTextColor(WHITE);//开像素点发光
display.clearDisplay();//清屏
display.setTextSize(1); //设置字体大小
display.setCursor(4, 10);//设置显示位置
display.println("temp and hum display");
display.setTextSize(1); //设置字体大小
display.setCursor(10, 30);//设置显示位置
display.println("temp");
display.setTextSize(1);//设置字体大小
display.setCursor(10, 50);//设置显示位置
display.println("humidity");
display.display(); // 开显示
}
void loop() {
int chk=DHT11.read(dataPin); //dht11模块若读取到数值则返回chk为0
if(chk==0) //测的有值返回0,执行下列程序
{
display.setTextSize(1); //设置字体大小
display.setCursor(65,30); //显示位置
display.print((float)DHT11.temperature,2); //读取到的温度显示保留两位小数
display.print("C"); //输出表示单位
display.setTextSize(1); //同上
display.setCursor(65,50);
display.print((float)DHT11.humidity,2);
display.print("%");
display.display();
}
delay(100);
}
效果

需要下载的库文件有 dht11.h,Wire.h
, Adafruit_GFX.h
,Adafruit_SSD1306.h
可以直接在网上下载相应库文件,下载后的文件夹放在arduino文件夹里的libraries
目录下,否则程序不能正常运行。
