Arduino - DHT11溫溼度感測器
算是在簡短的幾堂入門課程結束後,自己想要製作的,在課程中由於時間上的關係並沒有與老師多加討論,故再此紀錄自己製作的流程,如有錯誤也請多多指教。
使用ESP2886、DHT11模組、4.7KΩ兩個與Adafruit_SSD1306,預期為能偵測環境溫濕度並顯示於lcd上,以下為電路圖,其中DHT11為模組故不須接電組。
以下為程式碼:
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET LED_BUILTIN
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
void setup() {
Serial.begin(9600);
dht.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
delay(500);
}
void loop() {
delay(2000);
updateText();
display.clearDisplay();
}
void updateText(void) {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.println(" *C");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("H:");
display.print(h,0);
display.print("%");
display.setCursor(33, 0);
display.print("T:");
display.print(t,0);
display.print(char(247));
display.print("C");
display.setCursor(73,0);
display.print("HI:");
display.print(hic,1);
display.print(char(247));
display.print("C");
display.display();
}
只是簡單的結合DHT與SSD1306範例,然而一開始在結合DHT11與OLED時一直無法在螢幕上顯示偵測值或是卡在預設的畫面上,在setup中新增clearDisplay()與偵測執中新增display()後便能顯示,字體大小則為考慮之後在下方嵌入時鐘,讓偵測值與時間結合,目前是希望能加資訊紀錄並在app上顯示出網頁與統計圖。
使用ESP2886、DHT11模組、4.7KΩ兩個與Adafruit_SSD1306,預期為能偵測環境溫濕度並顯示於lcd上,以下為電路圖,其中DHT11為模組故不須接電組。
以下為程式碼:
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET LED_BUILTIN
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
void setup() {
Serial.begin(9600);
dht.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
delay(500);
}
void loop() {
delay(2000);
updateText();
display.clearDisplay();
}
void updateText(void) {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.println(" *C");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("H:");
display.print(h,0);
display.print("%");
display.setCursor(33, 0);
display.print("T:");
display.print(t,0);
display.print(char(247));
display.print("C");
display.setCursor(73,0);
display.print("HI:");
display.print(hic,1);
display.print(char(247));
display.print("C");
display.display();
}
只是簡單的結合DHT與SSD1306範例,然而一開始在結合DHT11與OLED時一直無法在螢幕上顯示偵測值或是卡在預設的畫面上,在setup中新增clearDisplay()與偵測執中新增display()後便能顯示,字體大小則為考慮之後在下方嵌入時鐘,讓偵測值與時間結合,目前是希望能加資訊紀錄並在app上顯示出網頁與統計圖。

留言
張貼留言