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

Giao tiếp I2C LCD Arduino

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

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

Giới thiệu về Màn hình LCD 16×2 và giao tiếp I2C:

  • Màn hình LCD 16×2: Là một linh kiện phổ biến trong các dự án điện tử và lập trình. Nó 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.
  • Module I2C LCD: Để giảm số lượng chân kết nối, bạn có thể sử dụng module I2C LCD. Thay vì cần 6 chân để kết nối với LCD 16×2, module I2C chỉ cần 2 chân (SCL, SDA). Module này hỗ trợ các loại LCD sử dụng driver HD44780 (LCD 16×2, LCD 20×4, …).

Cài đặt thư viện LiquidCrystal_I2C:

  • Để sử dụng màn hình LCD giao tiếp I2C với Arduino, bạn cần cài đặt thư viện LiquidCrystal_I2C.
  • Bạn có thể cài đặt thư viện này bằng cách mở Arduino IDE, chọn “Sketch” > “Include Library” > “Manage Libraries”. Tìm kiếm “LiquidCrystal_I2C” và cài đặt phiên bản mới nhất.

Code mẫu

#include <DHT.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

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(" %");    
  }
}

Leave a Reply

Your email address will not be published. Required fields are marked *