使用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
目录下,否则程序不能正常运行。