arduino和OLED、DHT11做一個溫溼度顯示計

這段時間迷上了arduino,做的東西很有趣很好玩,而且入門很簡單,特別學過編程語言的學起來更簡單,不需要太多的硬件知識,後續將更新更多arduino實例文章,比如指紋鎖,門禁卡,機器人,智能平衡車,有興趣的可以關注智聯電子DIY.

這次的實例是一個通過arduino,oled,和溫溼度傳感器做一個溫溼度顯示器

模塊清單

1.arduino UNO開發板

arduino和OLED、DHT11做一個溫溼度顯示計

2.0.96寸 12864 l2C oled顯示屏

arduino和OLED、DHT11做一個溫溼度顯示計

3.DHT11溫溼度傳感器

arduino和OLED、DHT11做一個溫溼度顯示計

4.導線

5.麵包板

硬件電路

OLED接線方式:

VCC3.3V

GNDGND

SCLA5

SDAA4

DHT11接線方式:

GNDGND

DATA2(數字輸入/輸出)

VCC5V

軟件代碼

一.代碼使用庫共享(包括dht11與U8glib): 將文件解壓後導入到Arduino IDE安裝路徑中的library文件中即可

二.代碼編寫

1.打開arduino IDE

2.將以下代碼複製到編程界面

// 128x64 I2C OLED

#include

// DHT11數字傳感器庫

#include "U8glib.h"

// OLED庫

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // I2C

dht11 DHT11;

#define DHT11PIN 2

// Data鏈接數字針腳2

void draw(void) {

u8g.setFont(u8g_font_8x13); //使用8x13大小的字符

u8g.setPrintPos(0, 20); // 對應 x,y 軸值

u8g.print("HUMI(%) :");

u8g.setPrintPos(73, 20);

u8g.print((float)DHT11.humidity);

u8g.setPrintPos(0, 40);

u8g.print("TEMP(oC):");

u8g.setPrintPos(73, 40);

u8g.print((float)DHT11.temperature);

}

void setup()

{

Serial.begin(9600);//串口波特率

Serial.println("DHT11 TEST PROGRAM ");

Serial.print("LIBRARY VERSION: ");

Serial.println(DHT11LIB_VERSION);

Serial.println();

}

void loop()

{

Serial.println("\n");

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;

}

Serial.print("Humidity (%): ");

Serial.println((float)DHT11.humidity, 2);

Serial.print("Temperature (oC): ");

Serial.println((float)DHT11.temperature, 2);

u8g.firstPage();

do {

draw();

} while( u8g.nextPage() );

delay(200);

}

3.燒寫代碼

關注智聯電子diy更多有趣好玩的電子製作教程等著你


分享到:


相關文章: