[尼克的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错误还有下载函示库等等

以下是执行后的结果

 

 

 

 

 

 

相关文章