本篇結(jié)合溫濕度傳感器DHT11和OLED,將采集到的溫濕度顯示到OLED屏幕上。
DHT11使用上篇介紹的「DHT sensor library」庫(kù),OLED使用U8g2庫(kù),庫(kù)安裝請(qǐng)參照前面的文章介紹。
一. 實(shí)驗(yàn)材料
- Uno R3開(kāi)發(fā)板
- 配套USB數(shù)據(jù)線
- 面包板及配套連接線
- OLED顯示屏
- DHT11傳感器模塊
二. 實(shí)驗(yàn)步驟
1. 根據(jù)原理圖搭建電路圖。OLED屏的VCC和GND分別連接開(kāi)發(fā)板的3.3V和GND,OLED屏的SDA和SCL分別連接開(kāi)發(fā)板A4和A5。DHT11模塊VCC、GND分別連接到開(kāi)發(fā)板的5V、GND,模塊的DATA引腳連接開(kāi)發(fā)板數(shù)字引腳2。
實(shí)驗(yàn)原理圖如下圖所示:
實(shí)物連接圖如下圖所示:
2. 新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存。#include#include #include #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 //iic驅(qū)動(dòng)方式 U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); DHT dht(DHTPIN, DHTTYPE); void setup() { u8g2.begin(); dht.begin(); } char h_str[3]; char t_str[3]; float h; float t; void loop() { h = dht.readHumidity();//讀濕度 t = dht.readTemperature();//讀溫度(攝氏度) strcpy(h_str, u8x8_u8toa(h, 2)); /* convert m to a string with two digits */ strcpy(t_str, u8x8_u8toa(t, 2)); /* convert m to a string with two digits */ u8g2.firstPage(); do { u8g2.setFont(u8g2_font_fur20_tf); u8g2.drawStr(0, 23, "T"); u8g2.drawStr(20, 23, ":"); u8g2.drawStr(40, 23, t_str); u8g2.drawStr(90, 23, "C"); u8g2.drawStr(0, 63, "H"); u8g2.drawStr(20, 63, ":"); u8g2.drawStr(40, 63, h_str); u8g2.drawStr(90, 63, "%"); } while ( u8g2.nextPage() ); delay(1000); }
3. 連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類型,進(jìn)行程序下載。
三. 實(shí)驗(yàn)現(xiàn)象
OLED屏幕刷新顯示溫濕度。