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(" %"); }