Arduino+DHT11温湿度传感器+12864oled显示温湿度
本文利用arduino uno时时读取DHT11温湿度传感器的温度和湿度值,并将读取到的数值显示在OLED12864上。
元器件: arduino板
OLED12864显示屏
DHT11温湿度传感器
库文件: <U8g2lib.h> 此库是用于12864oled显示屏用
<dht11.h> 此库是DHT11温湿度传感器库文件
一、安装U8g2lib库
1.打开Arduino IDE软件,标题栏找到项目>加载库>管理库,点击打开。
2.打开库管理器之后,等待文件加载完毕,在搜索框内输入u8g2,找到u8g2库文件并完成安装。
二、安装dht11库
dht11库文件安装参考太极创客网站安装方法:
三、元器件及接线方法
1.DHT11引脚图及定义
2.oled12864引脚及定义
本文中使用的是以SH1106为控制器的4SPI接口的12864显示屏。
3.本文元器件接线方法
四、程序
//此程序中loop函数中的DHT11测试程序引用自太极创客网站:
//http://www.taichi-maker.com/homepage/reference-index/arduino-sensor-index/arduino-dht11-temperature-sensor/
#include <U8g2lib.h>
#include <dht11.h>
//创建12864OLED初始化构造器
U8G2_SH1106_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9);
dht11 DHT11; //创建DHT11对象
#define DHT11PIN 8 //将arduino 8脚作为温湿度数据输入脚
float H=0; //湿度存储
float T=0; //温度存储
void setup(void) {
u8g2.begin(); //初始化u8g2库
u8g2.enableUTF8Print(); //启用UTF8打印
Serial.begin(9600); //启用串口通讯
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
}
void loop(void) {
Serial.println("
");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
H=DHT11.humidity; //读取湿度值
T=DHT11.temperature; //读取温度值
Serial.println(H);
Serial.println(T);
u8g2.clearBuffer(); // 清除内部缓冲区
drawDHT11(H,T); //调用函数将温湿度值显示在12864OLED上
u8g2.sendBuffer();
delay(1000);
}
void drawDHT11(float H,float T){
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.drawStr(0,20,"Temp: ");
u8g2.setCursor(40, 20);
u8g2.print(T); //
u8g2.setCursor(80, 20);
u8g2.print(" *C");
u8g2.drawStr(0,40,"Humi: ");
u8g2.setCursor(40, 40);
u8g2.print(H);
u8g2.setCursor(80, 40);
u8g2.print(" %");
}
