Chuyển tới nội dung
Home » Arduino Dht11 Lcd 16X2 I2C | Hiển Thị Nhiệt Độ, Độ Ẩm Lên Lcd Sử Dụng I2C

Arduino Dht11 Lcd 16X2 I2C | Hiển Thị Nhiệt Độ, Độ Ẩm Lên Lcd Sử Dụng I2C

Temperature & Humidity Sensor |  DHT 11 With I2C Module LCD Display

Code mẫu

#include

#include

#include LiquidCrystal_I2C lcd(0x3F,16,2); const int DHTPIN = 4; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.init(); lcd.backlight(); lcd.print(“Nhiet do: “); lcd.setCursor(0,1); lcd.print(“Do am: “); lcd.createChar(1, degree); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(” “); lcd.write(1); lcd.print(“C”); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(” %”); } }

Bạn sẽ học được gì

  • Có kiến thức cơ bản về Robotics
  • Chế tạo Robot dò đường thông minh
  • Đánh thức nhà khoa học bên trong bạn
  • Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
  • Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
  • Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế

EBOOK ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU

Trong bài viết hôm trước mình đã hướng dẫn các bạn làm thế nào để hiển thị các ký tự lên màn hình LCD 16×2 bằng giao tiếp I2C.

Tiếp tục trong chuỗi bài viết về LCD hôm nay mình sẽ hướng dẫn các bạn làm thế nào để hiển thị các thông số của cảm biến nhiệt độ, độ ẩm lên LCD.

Để hiểu hơn về bài viết này các bạn đọc lại 2 bài viết bên dưới rồi chúng ta tiếp tục bài này tiếp nha.

  • Đọc thêm: Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
  • Đọc thêm: Đọc nhiệt độ, độ ẩm (DHT11) sử dụng Arduino Uno
Temperature & Humidity Sensor |  DHT 11 With I2C Module LCD Display
Temperature & Humidity Sensor | DHT 11 With I2C Module LCD Display

Giao tiếp I2C LCD Arduino

Module I2C LCD 16×2 Arduino UNO
GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án:

Tên linh kiện Số lượng Shopee
Arduino UNO R3 Mua ngay
Dây cáp nạp Mua ngay
Màn hình LCD 16×2 Mua ngay
Module I2C LCD 16×2 Mua ngay
Dây cắm (Đực – Cái) Mua ngay

Bạn sẽ học được gì

  • Có kiến thức cơ bản về Robotics
  • Chế tạo Robot dò đường thông minh
  • Đánh thức nhà khoa học bên trong bạn
  • Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
  • Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
  • Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế

Giới thiệu LCD 16×2

Thông số kỹ thuật LCD 16×2

LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.

  • LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).
  • 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
  • Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu.
  • Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.

🔴 Arduino #31 | Hiển Thị Độ Ẩm Nhiệt Độ Đọc Từ Cảm Biến DHT11 Lên Màn Hình LCD 16x2
🔴 Arduino #31 | Hiển Thị Độ Ẩm Nhiệt Độ Đọc Từ Cảm Biến DHT11 Lên Màn Hình LCD 16×2

CHI TIẾT BÀI VIẾT

HƯỚNG DẪN SỬ DỤNG CẢM BIẾN DHT11 VÀ ARDUINO HIỂN THỊ NHIỆT ĐỘ VÀ ĐỘ ẨM LÊN MÀN HÌNH LCD

1. Giới thiệu

Bài viết này sẽ hướng dẫn các bạn cách sử dụng Sensor (cảm biến) DHT11 với Arduino và LCD để hiển thị nhiệt độ, độ ẩm.

2. Nội dung chính

  • Sử dụng cảm biến nhiệt độ và độ ẩm DTH11 kết nối với Arduino.
  • Sử dụng LCD hiển thị nhiệt độ và độ ẩm từ DHT11.

3. Phần cứng cần thiết

  • Arduino Uno R3
  • LCD Text LCD1602
  • Module giao tiếp I2C

– LCD có quá nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.

– Module I2C ra đời để giải quyết vấn để này.

– Thay vì phải sử dụng 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.

– Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

  • Module DHT11 (sensor đo độ ẩm và nhiệt độ)

  • BreadBoard

4. Kết nối các thiết bị

  • Nối nguồn Arduino với Breadboard

– Nối trực tiếp chân 5V từ Arduino ra Board mạch tại cực dương.

– Nối trực tiếp chân GND từ Arduino ra Board mạch tại cực âm.

  • Thực hiện kết nối DHT11 với Arduino
  • Kết nối Module I2C & LCD với Arduino

5. Code thiết bị Arduino

Để sử sensor DHT11 giao tiếp với Arduino thì ta cần cài đặt thư viện DHT_Sensor

– Mở phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Add .zip Library 🡪 chọn tới file zip DHT-sensor.zip.

– Tương tự ta add tiếp 🡪 file zip Adafruit_Sensor-master.zip

– Sau khi add thư viện nên thoát khỏi phần mềm Arduino rồi mở lại.

– Gọi thư viện DHT Sensor , LiquidCrystal_I2C.

– Mở Phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Kéo xuống dưới chọn DHT_Sensor.

– Mở Phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Kéo xuống dưới chọn LiquidCrystal_I2C.

LiquidCrystal_I2C lcd(0x27,16,2); // Khai báo LCD

  • Đặt địa chỉ LCD là 0x27 cho màn hình LCD 16×2.
  • 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
  • 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.

Code cấu hình DHT11, Arduino, LCD

#include

#include

LiquidCrystal_I2C lcd(0x27,16,2);

const int DHTPIN = 2;

const int DHTTYPE = DHT11;

DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = {

0B01110,

0B01010,

0B01110,

0B00000,

0B00000,

0B00000,

0B00000,

0B00000

};

void setup() {

lcd.init();

lcd.backlight();

lcd.print(“Nhiet do: “);

lcd.setCursor(0,1);

lcd.print(“Do am: “);

lcd.createChar(1, degree);

dht.begin();

void loop() {

float h = dht.readHumidity();

float t = dht.readTemperature();

if (isnan(t) || isnan(h)) {

else {

lcd.setCursor(10,0);

lcd.print(round(t));

lcd.print(” “);

lcd.write(1);

lcd.print(“C”);

lcd.setCursor(10,1);

lcd.print(round(h));

lcd.print(” %”);

Thực hiện: Nguyễn Mạnh Cương

Hardware components
Software apps and online services
Hand tools and fabrication machines

Now I have been struggling with this project for like hours now. But at the end I find out I did not have the correct knowledge. So people it is very important to know what you are making. In this case I recommend you to go through the page and not just copy and paste the code.

Now, this project uses a DHT11 temperature and humidity sensor with the three pin but you can also use any other sensor the changes in the code should be as per the model. I have used Arduino UNO for this project.

First, make the connection of the DHT sensor with the Arduino board.

VCC – 5.5V

DATA – PIN 4(you can also use pins 3, 4, 5, 12, 13 or 14

Pin 15 can work but DHT must be disconnected during program upload)

GND – GND

Second, make the connection of the LCD 1602 I2C display with the above circuit.

LCD connections with Arduino board

VCC – 5.5V

GND – GND

SDA – A4(Analog Pin 4)

SCL – A5(Analog Pin 5)

If you are thinking what I am thinking then the circuit will look something like this:

Red Wires indicate the VCC wires and the black ones indicate GND wires.

NOTE- If you see that your sensor is rapidly getting warm(only for 4 pin sensors) then attach a 10K pull up resistor joining VCC and Signal ends of the sensor.

Lastly, the code part where the real understanding begins. So, basically I have used two libraries one for the sensor and the other for the LCD 1602 I2C display. Then let us start:

We first insert the DHT library the link to download this library is given below. So it will go something like this.


#include"DHT.h"

Then define the sensor pin. As I have taken the data pin to be 4. My code will be followed as


#defineDHTPIN4

After that we need to determine the sensor that is being used. Now, I have used the DHT 11 sensor but if you have a different sensor then the code will change as per the sensor model


#defineDHTTYPEDHT11

Then using the above data


DHTdht(DHTPIN,DHTTYPE);

After interfacing with the DHT sensor we now are going to move on to the LCD display


#include


LiquidCrystal_I2Clcd(0x27,16,2);

So, now we are ready to start with the void setup and loop part.

I wrote the whole code together hope you may not find it too difficult.


void setup() { dht.begin();// initialize the sensor lcd.backlight();// turn on lcd backlight lcd.init();// initialize lcd } void loop() { lcd.clear(); lcd.setCursor(0,0);// set the cursor on the first row and column lcd.print("Humidity="); lcd.print((float)dht.readHumidity());//print the humidity lcd.print("%"); lcd.setCursor(0,1);//set the cursor on the second row and first column lcd.print("Temp="); lcd.print((float)dht.readTemperature());//print the temperature lcd.print("Celsius"); delay(2000); lcd.clear(); }

Please note that the temperature is automatically in the celsius scale ergo you do not need to change any values unless you want the answer in Farenheit.

I strongly recommend the Arduino Web Editor as you do not need to download any additional libraries since it is pre-included but if you do not use the web editor and use the software instead you may need to make slight changes but the main part remains the same.

NOTE- If you are using the software then you do not need to download the LiquidCrystal_I2C library as it is pre-included in the software.

If you want to download the DHT library then click here.

Looks like we have reached the end of the project.

Bye guys, have fun.

Components and supplies

I2C 16×2 Arduino LCD Display Module

Arduino UNO

DHT11 Temperature & Humidity Sensor (3 pins)

Tools and machines

Premium Male/Male Jumper Wires, 40 x 3″ (75mm)

Premium Female/Male Extension Jumper Wires, 40 x 6″ (150mm)

Breadboard, 170 Pin

Apps and platforms

Arduino Web Editor

Project description

Code

Temperature and Humidity sensing with LCD 1602 I2C display

c_cpp

We are using the LCD display using the I2C module to display the temperature and humidity with the DHT 11 sensor.

Temperature and Humidity sensing with LCD 1602 I2C display

c_cpp

We are using the LCD display using the I2C module to display the temperature and humidity with the DHT 11 sensor.

Downloadable files

Temperature and Humidity sensing with LCD 1602 I2C display

Please download it if required

Temperature and Humidity sensing with LCD 1602 I2C display

Comments

Only logged in users can leave comments

Druhi_C

0 Followers

0 Projects

Table of contents

Intro

Đã được đăng vào 11/12/2019 @ 11:55

Hiển thị nhiệt độ, độ ẩm lên LCD 16×2 giao tiếp bằng I2C sử dụng Arduino

Trong bài viết hôm trước mình đã hướng dẫn các bạn làm thế nào để hiển thị các ký tự lên màn hình LCD 16×2 bằng giao tiếp I2C.

Tiếp tục trong chuỗi bài viết về LCD hôm nay mình sẽ hướng dẫn các bạn làm thế nào để hiển thị các thông số của cảm biến nhiệt độ, độ ẩm lên LCD.

Để hiểu hơn về bài viết này các bạn đọc lại 2 bài viết bên dưới rồi chúng ta tiếp tục bài này tiếp nha.

  • Đọc thêm: Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
  • Đọc thêm: Đọc nhiệt độ, độ ẩm (DHT11) sử dụng Arduino Uno

Các lỗi thường gặp khi sử dụng I2C LCD

  • Hiển thị một dãy ô vuông.
  • Màn hình chỉ in ra một ký tự đầu.
  • Màn hình nhấp nháy.

Các lỗi này chủ yếu là do sai địa chỉ bus, để fix lỗi các bạn thay địa chỉ mặc định là “0x27” thành “0x3F.

Trong trường hợp vẫn không được các bạn fix lỗi bằng cách nạp code tìm địa chỉ bus của I2C.

Sau khi tìm xong các bạn thay địa chỉ vừa tìm được vào vị trí “0x27” là xong.

  • Các bạn có thể tải code tìm địa chỉ bus ở đây. Tải ngay.
Temperature and humidity sensor Dht 11 with i2c LCD display
Temperature and humidity sensor Dht 11 with i2c LCD display

Hiển thị nhiệt độ, độ ẩm lên LCD sử dụng I2C

Màn hình LCD I2C Arduino UNO R3
GND GND
VCC 5V
SDA A4
SCL A5
Cảm biến nhiệt độ, độ ẩm DHT11
VCC 5V
DATA D4
GND GND

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án:

Linh kiện
Arduino Uno R3
Màn hình LCD 16×2
Module I2C LCD 16×2
Cảm biến nhiệt độ, độ ẩm DHT11

Code mẫu

#include

#include

#include LiquidCrystal_I2C lcd(0x3F,16,2); const int DHTPIN = 4; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.init(); lcd.backlight(); lcd.print(“Nhiet do: “); lcd.setCursor(0,1); lcd.print(“Do am: “); lcd.createChar(1, degree); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(” “); lcd.write(1); lcd.print(“C”); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(” %”); } }

Để chương trình có thể nhận được các hàm LCD và DHT các bạn nhớ download thư viện về nhé

Module I2C Arduino

LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.

Module I2C LCD ra đời và giải quyết vấn để này cho bạn.

Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.

Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

Ưu điểm

  • Tiết kiệm chân cho vi điều khiển.
  • Dễ dàng kết nối với LCD.

Thông số kĩ thuật

  • Điện áp hoạt động: 2.5-6V DC.
  • Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
  • Giao tiếp: I2C.
  • Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).
  • Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
  • Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

Để sử dụng màn hình LCD giao tiếp I2C sử dụng Arduino thì ta cần cài đặt thư viện Liquidcrystal_I2C. Tại đây

Arduino | Hiển Thị Nhiệt Độ & Độ Ẩm Cảm Biến DHT11 Lên LCD
Arduino | Hiển Thị Nhiệt Độ & Độ Ẩm Cảm Biến DHT11 Lên LCD

Lời kết

Qua bài hôm nay các bạn biết cách làm thế nào để hiển thị các ký tự và chuỗi ký tự lên LCD 16×2 và biết cách giao tiếp I2C.

Để nhận được nhiều kiến thức mới các bạn Đăng ký để nhận được thông báo sớm nhất.

Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino.

Nếu các bạn thấy bài viết bổ ích nhớ Like và Share cho mọi người cùng đọc nhé.

Chúc các bạn thành công.

Trân trọng.

Giải thích code

Hàm createChar()


lcd.createChar(1, degree);

Dùng để tạo một ký tự tùy chỉnh để sử dụng trên màn hình LCD.

Tối đa có 8 ký tự được hỗ trợ là 5×8 pixel (được đánh số từ 0 đến 7).

Sự xuất hiện của mỗi ký tự tùy chỉnh được chỉ định bởi một mảng gồm 8 byte, 1 byte cho mỗi hàng.

Để hiển thị một ký tự tùy chỉnh trên màn hình ta dùng hàm write() để viết ra con số đó.

Tạo ký tự

byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000

Đoạn code trên để “Tạo ký tự” trên màn hình LCD. Những ký tự đặc biệt phải dùng cách đó để tạo ra.

Các bạn đọc 2 bài viết dưới đây để hiểu rõ hơn nhé:

https://www.arduino.cc/en/Reference/LiquidCrystalCreateCharVàhttps://www.instructables.com/id/How-to-Create-Custom-Character-for-LCD/

Cú pháp

lcd.createChar(số, dữ liệu)

Thông số

lcd: là một biến của kiểu dư liệu LiquidCrystal.

số: tạo ký tự (0 đến 7).

dữ liệu: dữ liệu của các ký tự là pixel.

Hàm isnan()


if (isnan(t) || isnan(h))

Hàm isnan() là hàm trả về true hoặc false nếu giá trị cần kiểm tra không phải là một biểu thức toán học đúng.

Ở đoạn code trên mình kiểm tra xem thử việc đọc giá trị của nhiệt độ hoặc độ ẩm trả về có bị thất bại hay không.

Cú pháp

isnan(double x) ;

Hàm round()


lcd.print(round(t));

Hàm round() là hàm làm tròn của một giá trị nào từ số thập phân làm tròn tới số nguyên gần nhất.

Nguồn: arduinokit.vn

Hi all,
I am new to Arduino. I am trying to connect my Arduino UNO with I2C LCD display and DHT11 sensor. I connected all, tried different codes, but results for humidity and temperature are always 0.

          #include 
#include 
//#define DHTTYPE DHT11
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x3F, 16 column and 2 rows
#define DHTPIN 4
dht DHT;
//DHT ddt(DHTPIN, DHTTYPE);
void setup(){
lcd.init();
lcd.backlight();
lcd.begin(16,2);
Serial.begin(9600);
}
void loop(){
DHT.read11(DHTPIN);
lcd.setCursor(0, 0);
lcd.print("Humidity = ");
lcd.print(DHT.humidity);
lcd.print("% ");
delay(2000);
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(DHT.temperature);
lcd.print((char)223); // print ° character
lcd.print("C ");
delay(1000);
}

        

I followed this

tutorial

I tried to change pin for data on DHT11 from 2 to 3,5,7,8 and A0, but result is the same.
I tried to change code multiple times, tried given code and code in tutorial.
I am pretty sure that board and all wires are working properly.
Printing results as Serial.print also gives 0, so I doubt that my DHT11 sensor is not working.
Any help? Advice?

Several things to try. Try the contrast trim pot and see if your characters will appear, you should at least get some blocks where the characters should appear. If that does not work change your lcd.print statements to Serial.print and see if you get the information on the console. At this point you will know if your problem is in the interface-library or the hardware. If this does not resolve your problem post a schematic and links to each of the hardware devices.

The FLOAT value direct from the sensor needs to be formatted for printing. Try

          lcd.print(String(DHT.temperature, 1) + char(223));
...
lcd.print(String(DHT.humidity, 0) + "%");

        

DHT temp only has 1 decimal place, humidity has zero.

With this code change, I got “0%” for humidity and nothing is printed for temperature.
Tested on both Serial.print and lcd.print and result is the same.
Here is the output I get:

I got same result on lcd and in console, 0 for both temperature and humidity.
Here is my schema:

andjelkadzida:


DHT.read11(DHTPIN);

Maybe it ought to be —
DHT.read(DHTPIN);

Still getting the same result, printing only 0 values.

Your pic shows DHT data connected to D2,
but your sketch has —

#define

DHTPIN 4
// So Use D4

Some modules show 5V supply rather than the 3v3 you have.
So which DHT11 module do you have?
Are you using a breadboard for connections.
Show a photo of what you have in front of you rather than what could be.

I tried using different pins, but still facing the same issue.

The above diagram shows that DATA-pin of the Sensor is connected with DPin-2 of UNO. So, check that the following code line has been included in your sketch.


#define DHTPIN 2 //and not #define DHTPIN 4

I have DTH11 with 3 connectors (VCC, Data and GND). Tried with 3.3V and 5V, but no result.
I do not use breadboard.

Yes, I corrected the code and uploaded it once again, but result is the same.




Paul_B






17

Did you actually

read

the question before posting that?


1 Like

Try by uploading the following sketch and report result:

          #include  //header file containing codes various commands
dht DHT; //dht = className; DHT = Object
#define DHT11_PIN 2
void setup()
{
Serial.begin(9600);
}
void loop()
{
int chk = DHT.read11(DHT11_PIN);
if (chk != 0)
{
Serial.print("There is error!");
while (1); //wait for ever
}
Serial.println("Sensor is found.");
Serial.println();
Serial.print("Humidity: ");
float myHum = DHT.humidity;
Serial.print(myHum, 2); Serial.println ('%');
Serial.print("Temperature = ");
float myTemp = DHT.temperature;
Serial.print(myTemp, 2); //2-digit after decimal point
Serial.print(' '); Serial.println("degC");
delay(1000); //test/sampling interval
}

        


Output:

          Humidity: 22.00%
Temperature = 29.00 degC

        

If the DHT-11 was not connected you’d get NAN (Not A Number) returned on your display for f and h. Soo, I’d say your DHT is fried. If it’s returning zero’s for both, that sounds like a dead ground.

Did you try the Example sketch for the library that you are using to read the DHT11?

Well basically you have changed the code from the link description and I was wondering why…

Also, do you have pullup resistor on the data line (10k) ….perhaps it is already on the module.

Either way, throw in some pics of “what you have there” include power supply.

Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino

Arduino Weather Station || dht11 Temperature & Humidity sensor
Arduino Weather Station || dht11 Temperature & Humidity sensor

Giải thích code

Hàm createChar()

lcd.createChar(1, degree);

Dùng để tạo một ký tự tùy chỉnh để sử dụng trên màn hình LCD 16×2. Tối đa có 8 ký tự được hỗ trợ là 5×8 pixel (được đánh số từ 0 đến 7).Sự xuất hiện của mỗi ký tự tùy chỉnh được chỉ định bởi một mảng gồm 8 byte, 1 byte cho mỗi hàng.

Để hiển thị một ký tự tùy chỉnh trên màn hình ta dùng hàm write() để viết ra con số đó.

Cú pháp

lcd.createChar(số, dữ liệu)

Thông số

lcd: là một biến của kiểu dư liệu LiquidCrystal.

số: tạo ký tự (0 đến 7).

dữ liệu: dữ liệu của các ký tự là pixel.

Hàm isnan()

if (isnan(t) || isnan(h))

Hàm isnan() là hàm trả về true hoặc false nếu giá trị cần kiểm tra không phải là một biểu thức toán học đúng.

Ở đoạn code trên mình kiểm tra xem thử việc đọc giá trị của nhiệt độ hoặc độ ẩm trả về có bị thất bại hay không.

Cú pháp

isnan(double x) ;

Hàm round()

lcd.print(round(t));

Hàm round() là hàm làm tròn của một giá trị nào từ số thập phân làm tròn tới số nguyên gần nhất.

Hiển thị nhiệt độ, độ ẩm lên LCD sử dụng I2C

Màn hình LCD I2C Arduino UNO R3
GND GND
VCC 5V
SDA A4
SCL A5
Cảm biến nhiệt độ, độ ẩm DHT11
VCC 5V
DATA D4
GND GND

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án:

Linh kiện Số lượng Shoppe
Arduino Uno R3 Xem ngay
Dây cáp nạp Xem ngay
Màn hình LCD 16×2 Xem ngay
Module I2C LCD 16×2 Xem ngay
Cảm biến nhiệt độ, độ ẩm DHT11 Xem ngay
Bread Board (Bo Test) Xem ngay
Dây cắm ( Đực – Cái) Xem ngay
Dây cắm ( Đực – Cái) Xem ngay
Nguồn 12V/2A Jack DC (Nếu có rồi không cần mua) Xem ngay
Arduino UNO R3 with DHT11 and 16x2 I2C LCD
Arduino UNO R3 with DHT11 and 16×2 I2C LCD

Code mẫu

#include

#include LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print(“Arduinokit.vn”); lcd.setCursor(0,1); lcd.print(“Xin chao cac ban”); } void loop() { }

Giải thích code

LiquidCrystal_I2C lcd(0x3F,16,2);

  • Đặt địa chỉ LCD là 0x3F cho màn hình LCD 16×2.
  • 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
  • 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.

lcd.init();

Khởi động màn hình LCD, bắt đầu cho phép Arduino sử dụng màn hình.

lcd.backlight();

Bật đèn nền LCD 16×2.

lcd.setCursor(2,0);

Đưa con trỏ tới hàng 1, cột 3.

Lưu ý: giá trị hàng và cột bắt đầu từ số 0 có nghĩa 0 là hàng(cột) 1.

lcd.print(“Arduinokit.vn”);

Xuất ra dòng chữ Arduinokit.vn tại vị trí con trỏ ở hàng 1, cột 3.

lcd.setCursor(0,1); lcd.print(“Xin chao cac ban”);

Đoạn code này thì tương tự như trên, xuất ra dòng chữ “Xin chao cac ban” tại vị trí con trỏ ở hàng 2, cột 1.

Bây giờ thì các bạn upload chương trình và xem kết quả nhé.

Keywords searched by users: arduino dht11 lcd 16×2 i2c

Arduino Uno R3 With Dht11 And 16X2 I2C Lcd - Youtube
Arduino Uno R3 With Dht11 And 16X2 I2C Lcd – Youtube
Arduino Temp/Humidity Sensor Using Dht11 And I2C Lcd One Day Project : 4  Steps - Instructables
Arduino Temp/Humidity Sensor Using Dht11 And I2C Lcd One Day Project : 4 Steps – Instructables
Hiển Thị Nhiệt Độ, Độ Ẩm Lên Lcd 16X2 Giao Tiếp Bằng I2C Sử Dụng Arduino |  Arduino Kit
Hiển Thị Nhiệt Độ, Độ Ẩm Lên Lcd 16X2 Giao Tiếp Bằng I2C Sử Dụng Arduino | Arduino Kit
Dht11 Temperature And Humidity On I2C 1602 Lcd - Hackster.Io
Dht11 Temperature And Humidity On I2C 1602 Lcd – Hackster.Io
Beginner Arduino Project - Dht11 With Lcd (I2C) - Youtube
Beginner Arduino Project – Dht11 With Lcd (I2C) – Youtube
Arduino Temp/Humidity Sensor Using Dht11 And I2C Lcd One Day Project : 4  Steps - Instructables
Arduino Temp/Humidity Sensor Using Dht11 And I2C Lcd One Day Project : 4 Steps – Instructables
Temperature Monitor With Dht11 And I2C 20X4 Lcd - Hackster.Io
Temperature Monitor With Dht11 And I2C 20X4 Lcd – Hackster.Io
Esp32 - Dht11 - Lcd | Esp32 Tutorial
Esp32 – Dht11 – Lcd | Esp32 Tutorial
Dht11 Humdity Temperature Sensor & Arduino Interfacing
Dht11 Humdity Temperature Sensor & Arduino Interfacing
Dht11 Temperature And Humidity Displayed On I2C 1602 Lcd - Videotronicmaker
Dht11 Temperature And Humidity Displayed On I2C 1602 Lcd – Videotronicmaker
Utilizing I2C Protocol For Displaying Temperature And Humidity On A 16X2 Lcd  With Arduino And Dht11
Utilizing I2C Protocol For Displaying Temperature And Humidity On A 16X2 Lcd With Arduino And Dht11
Dht11 Temperature And Humidity Sensor Arduino Code With 16X2 Lcd - Youtube
Dht11 Temperature And Humidity Sensor Arduino Code With 16X2 Lcd – Youtube
Dht11 Temperature And Humidity On I2C 1602 Lcd - Hackster.Io
Dht11 Temperature And Humidity On I2C 1602 Lcd – Hackster.Io
Hiển Thị Nhiệt Độ, Độ Ẩm Lên Lcd 16X2 Giao Tiếp Bằng I2C Sử Dụng Arduino |  Arduino Kit
Hiển Thị Nhiệt Độ, Độ Ẩm Lên Lcd 16X2 Giao Tiếp Bằng I2C Sử Dụng Arduino | Arduino Kit

See more here: kientrucannam.vn

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *