[尼克的robot]實做arduino lcd顯示溫溼度DHT22感測器 佇立的一棵樹

最近天氣很冷,所以就做了一個arduino溫濕度計來測測家裡的溫度,沒想到測出來十幾度試發生甚麼事.....

然後上一篇文章有詳細的教大家關於lcd常見的設定問題,有需要的可以去參考一下


需要材料 :

arduino uno板 一塊

lcd液晶螢幕 一塊

溫溼度感應器(dht11到22都可以)

 

接線 :

LCD上的GND >> arduino的GND

LCD上的VCC >> arduino的5V

LCD上的SDA >> arduino的A4

LCD上的SCL >> arduino的A5

dht溫溼度的接線圖如下

(LCD跟DHT都會用到5V,如果你的感應器支援3.3V那就可以把DHT接到3.3V,不然就要把5V接到麵包板上囉)

42.png


程式部分 :

/*

這可已同時在序列埠跟LCD上顯示,有任何問題都可以參考先前的文章喔

尼克的robot網址 :

https://kenny2019.pixnet.net/blog

底下是lcd的設定問題排解

https://kenny2019.pixnet.net/blog/post/269715976-%5B%E5%B0%BC%E5%85%8B%E5%85%88%E7%94%9F%5D%E5%AF%A6%E5%81%9Aarduino%20lcd%E6%B6%B2%E6%99%B6%E8%9E%A2%E5%B9%95%E9%A1%AF%E7%A4%BA%20(I2C)

*/

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

//dht22設定
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN  2   // 設定溫溼度感測器腳位
// 設定你的溫溼度感應器型號
//#define DHTTYPE           DHT11     // DHT 11 
#define DHTTYPE           DHT22     // DHT 22 (AM2302)
//#define DHTTYPE           DHT21     // DHT 21 (AM2301)
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;


void setup() {
  Serial.begin(9600);
  lcd.init();//初始化LCD
  lcd.backlight();//是否開啟背光
  lcd.setCursor(2,0);//設定遊標位置
  lcd.print("Hello World!");//寫入字串

  //dht22
  dht.begin();
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  dht.humidity().getSensor(&sensor);
  delayMS = sensor.min_delay / 1000;

  
}


void loop() {
  
  // 延遲
  delay(delayMS);
  // 獲取感應器數值
  sensors_event_t event;  
  dht.temperature().getEvent(&event);
  float tn = event.relative_humidity/5 ;
  if (isnan(event.temperature)) {
    Serial.println("Error reading temperature!");
    
  }
  else {
    Serial.print("Temperature: ");
    Serial.print(event.temperature);
    Serial.println(" *C");
    lcd.clear();
    lcd.setCursor(0,0);//設定遊標位置
    lcd.print("Celsius:");//寫入字串
    lcd.print(event.temperature);
    lcd.print("oC");//寫入字串
    
  }

  
  // 獲取感應器數值(濕度)
  dht.humidity().getEvent(&event);
  if (isnan(event.relative_humidity)) {
    Serial.println("Error reading humidity!");
    
  }
  else {
    Serial.print("Humidity: ");
    Serial.print(event.relative_humidity);
    Serial.println("%");
    lcd.setCursor(0,1);//設定遊標位置
    lcd.print("Humidity:");//寫入字串
    lcd.print(event.relative_humidity);
    lcd.print("%");//寫入字串

  }

}


接著就可以上傳囉

如果出現錯誤可以參考先前的文章

https://kenny2019.pixnet.net/blog

底下是lcd的設定問題排解

https://kenny2019.pixnet.net/blog/post/269715976-%5B%E5%B0%BC%E5%85%8B%E5%85%88%E7%94%9F%5D%E5%AF%A6%E5%81%9Aarduino%20lcd%E6%B6%B2%E6%99%B6%E8%9E%A2%E5%B9%95%E9%A1%AF%E7%A4%BA%20(I2C)

有教大家怎麼排解常見的lcd錯誤還有下載函示庫等等

以下是執行後的結果

 

 

 

 

 

 

相關文章