Arduino提高篇06—溫溼度OLED顯示

溫溼度OLED顯示
本篇結合溫溼度傳感器DHT11和OLED,將採集到的溫溼度顯示到OLED屏幕上。

DHT11使用上篇介紹的「DHT sensor library」庫,OLED使用U8g2庫,庫安裝請參照前面的文章介紹。

1. 實驗材料

  • Uno R3開發板
  • 配套USB數據線
  • 麪包板及配套連接線
  • OLED顯示屏
  • DHT11傳感器模塊

2. 實驗步驟

1. 根據原理圖搭建電路圖。

OLED屏的VCC和GND分別連接開發板的3.3V和GND,OLED屏的SDA和SCL分別連接開發板A4和A5。DHT11模塊VCC、GND分別連接到開發板的5V、GND,模塊的DATA引腳連接開發板數字引腳2。

實驗原理圖如下圖所示:

電路連接圖

實物連接圖如下圖所示:

實物連接圖

2. 新建sketch,拷貝如下代碼替換自動生成的代碼並進行保存。

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include "DHT.h"

#define DHTPIN  2
#define DHTTYPE DHT11

//iic驅動方式
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. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。

程序下載

3. 實驗現象

OLED屏幕刷新顯示溫溼度。

實驗現象

關注微信公衆號:TonyCode
Arduino學習交流羣:868283450

更多內容,歡迎關注我的公衆號。 微信掃一掃下方二維碼即可關注:
掃碼加入微信公衆號:TonyCode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章