« เมื่อ: พฤษภาคม 14, 2016, 12:13:30 PM »
เขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT22 เบื้องต้น ไลบรารี่ DHT เป็นไลบรารี่ที่ใช้ติดต่อกับชิพอ่านอุณหภูมิและความชื้นสามารถใช้กับชิพได้ 3 เบอร์ด้วยกันคือ DHT11, DHT22, DHT21 ซึ่งจำเป็นต้องติดตั้งเพิ่มเติม (ในกรณีที่ผู้ใช้งานยังไม่ได้ติดตั้งไว้ก่อนหน้านี้)
การติดตั้งไลบารี่(ต้องใช้ไลบรารี่ 2 ตัว) โดยมีขั้นตอนดังนี้
-DHT.h https://github.com/adafruit/DHT-sensor-library
-Adafruit_Sensor.h https://github.com/adafruit/Adafruit_Sensor
การเพิ่มไลบารี่ลงในโปรแกรม Arduino IDE จากไฟล์ Zip (ดำเนินการทั้ง 2 ตัว)
1. ดาวน์โหลดไฟล์ Zip ดังรูป
2. ทำการเพิ่มไลบรารี่ลงในโปรแกรม Arduino IDE โดยการเพิ่มจากไฟล์ zip แล้วทำการหาไฟล์ zip ที่ได้จากการดาวน์โหลดในข้อ 1
โจทย์การทดลอง
-เขียนโปรแกรมอุณหภูมิและความชื้นด้วย DHT22 แสดงผลที่ Serial monitor
-เขียนโปรแกรมอุณหภูมิและความชื้นด้วย DHT22 แสดงผลที่ LCD i2c
-โปรแกรมรายละเอียดพิเศษรายกลุ่ม (แจ้งให้ทราบเมื่อถึงชั่วโมงเรียน)
วงจรที่ใช้ในการทดลอง (แสดงผลที่ Serial monitor)
ตัวอย่างโปรแกรม (แสดงผลที่ Serial monitor)
#include <DHT.h>
#define DHTPIN D4 //pin connect DHT
#define LED D0 //LED BUILTIN for NodeMCU
#define DHTTYPE DHT22 //if use DHT11 change to "DHT11"
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
pinMode(LED,OUTPUT);
Serial.begin(115200);
dht.begin();
}
void loop()
{
digitalWrite(LED,HIGH);
delay(2500);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h))
{
Serial.println("Error reading DHT!");
return;
}
digitalWrite(LED,LOW);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("\t");
Serial.print("Temp: ");
Serial.println(t);
Serial.println("...............................");
}
วงจรที่ใช้ในการทดลอง (แสดงผลที่ LCD i2c)วงจรที่ใช้ในการทดลองเมื่อใช้กับ DHT11วงจรที่ใช้ในการทดลองกรณีใช้บอร์ด NodeMCUวงจรที่ใช้ในการทดลองกรณีใช้บอร์ด WeMos D1 miniตัวอย่างโปรแกรม (แสดงผลที่ LCD i2c)#include <DHT.h>
#include <Wire.h> // Include I2C bus library
#include <LiquidCrystal_I2C.h> // Include LCD-I2C bus library
#define DHTPIN D4 //pin connect DHT
#define LED D0 //LED BUILTIN for NodeMCU
#define DHTTYPE DHT22 //if use DHT11 edit to "DHT11"
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
pinMode(LED,OUTPUT);
dht.begin();
lcd.init(); // Start LCD operation
lcd.backlight(); // Turn on backlight of LCD
lcd.setCursor(0, 0); // Set LCD home position
lcd.print("Humidity="); // Print Humidity message
lcd.setCursor(0, 1); // Set LCD home position of 2nd line
lcd.print("Temp="); // Print Temperature message
}
void loop()
{
digitalWrite(D0,HIGH);
delay(2500);
float h = dht.readHumidity();
float t = dht.readTemperature();
digitalWrite(D0,LOW);
lcd.setCursor(10, 0);
lcd.print(h + String("%")); // Show humidity value in %RH
lcd.setCursor(6, 1);
lcd.print(t + String("C")); // Show temperature value in Celcuis
delay(2500);
}
https://www.youtube.com/v/mAlloYf6Rwg
« แก้ไขครั้งสุดท้าย: ธันวาคม 08, 2021, 11:54:59 AM โดย admin »
บันทึกการเข้า