Đọc Cảm Biến DHT22 Bằng 2 Cách? (Cách Cũ Và Không Bị Delay)
Có thể bạn quan tâm
Những thứ cần chuẩn bị
- Arduino Uno
- USB type B (Cáp máy in)
- Cảm biến DHT22
Kết nối cảm biến DHT22 với mạch Arduino
DHT22 | Arduino UNO R3 |
+ | 5V |
- | GND |
OUT | A3 |
Kết quả
Dùng thư viện đọc cảm biến DHT22
Download và cài đặt thư viện hỗ trợ sử dụng DHT22: download tại đây
Code Arduino
#include <DHT.h> // Gọi thư viện DHT22 const int DHTPIN = A3; //Đọc dữ liệu từ DHT22 ở chân A3 trên mạch Arduino const int DHTTYPE = DHT22; //Khai báo loại cảm biến, có 2 loại là DHT11 và DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Arduino.vn!"); dht.begin(); // Khởi động cảm biến } void loop() { float h = dht.readHumidity(); //Đọc độ ẩm float t = dht.readTemperature(); //Đọc nhiệt độ Serial.println("Arduino.vn"); Serial.print("Nhiet do: "); Serial.println(t); //Xuất nhiệt độ Serial.print("Do am: "); Serial.println(h); //Xuất độ ẩm Serial.println(); //Xuống hàng }
Kết quả
Dùng DHT Non-Blocking
Tại sao lại dùng thư viện này?
Vấn đề đặt ra là khi bạn cần đọc thông số của đèn led, nhiệt độ , độ ẩm. Bạn thấy rằng việc đọc những thông số này hoàn toàn là độc lập với nhau, nhưng khi dùng thư viện DHT22 bình thường thì sẽ có sự delay giữa chúng. Bởi ở đây sẽ đọc tuần tự, đọc đèn trước xong rồi mới tới đọc cảm biến hoặc ngược lại. Để giải quyết vấn đề đó khi bạn dùng thư viện DHT Non-Blocking sẽ cho phép đọc các thông số này song song và cùng lúc với nhau.
Download và cài đặt thư viện hỗ trợ sử dụng DHT Non-Blocking: download tại đây
Code Arduino
#include <dht_nonblocking.h> // gọi thư viện #define DHT_SENSOR_TYPE DHT_TYPE_22 // Khai báo loại cảm biến //#define DHT_SENSOR_TYPE DHT_TYPE_21 //#define DHT_SENSOR_TYPE DHT_TYPE_11 static const int DHT_SENSOR_PIN = A3; //Đọc dữ liệu từ DHT22 ở chân A3 trên mạch Arduino DHT_nonblocking dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { Serial.begin(9600); Serial.println("Arduino.vn!"); } // Đọc cảm biến sau 1 khoảng thời gian định trước // Trả về false nếu không đọc được thông số cảm biến hoặc chưa tới thời gian cho phép đọc // Trả về true nếu đọc được // static để tạo cái gì đó dùng chung cho chương trình hoặc hàm và khởi tạo 1 lần duy nhất static bool measure_environment(float* temperature, float* humidity) // Truyền địa chỉ của biến "*" { static unsigned long measurement_timestamp = millis(); // Khởi tạo thời gian ban đầu if (millis() - measurement_timestamp > 4000ul) // Thời gian cho phép đọc là sau hơn 4s { if (dht_sensor.measure(temperature, humidity) == true) // Đọc thông số vào 2 biến và kiểm tra có đọc được không { measurement_timestamp = millis(); return (true); } } return (false); } void loop() { float temperature; float humidity; // Nhớ phải dùng “&” để truyền địa chỉ của biến vào if (measure_environment(&temperature, &humidity) == true) { // In ra màng hình Serial.println("Arduino.vn"); Serial.print("Nhiet do: "); Serial.println(temperature); //Xuất nhiệt độ Serial.print("Do am: "); Serial.println(humidity); //Xuất độ ẩm Serial.println(); //Xuống hàng } }Kết quả
Từ khóa » Thư Viện Dht.h
-
Adafruit/DHT-sensor-library - GitHub
-
DHT Sensor Library - Arduino Reference
-
DHT Sensor Library
-
Đọc Nhiệt độ, độ ẩm (DHT11) Sử Dụng Arduino Uno
-
Phần 1: Arduino Căn Bản Với Esp8266 → Nhiệt độ Và độ ẩm DHT
-
Lập Trình Giao Tiếp Cảm Biến DHT Với Board Mạch Arduino - Góc Học IT
-
Đọc Nhiệt độ - độ ẩm Và Xuất Ra Màn Hình LCD
-
Thư Viện Cảm Biến Nhiệt độ độ ẩm DHT11 - Linh Kiện ROBOTICS
-
Hướng Dẫn Kết Nối DHT11/DHT22 Với Board Arduino
-
Cách Dùng Cảm Biến Nhiệt độ Và độ ẩm DHT11 Với ESP32 - OhStem
-
Hướng Dẫn Sử Dụng Cảm Biến Nhiệt độ - độ ẩm DHT11
-
Reference - Vọc Vạch DHT11 Lấy Thông Số Humidity & Temperature ...
-
DHTstable - Thư Viện Arduino Cho Cảm Biến Nhiệt độ Và độ ẩm DHT.