[尼克的robot]实做arduino lcd显示温湿度DHT22感测器 伫立的一棵树
[尼克的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接到面包板上啰)
程式部分 :
/*
这可已同时在序列埠跟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错误还有下载函示库等等
以下是执行后的结果