Hướng dẫn esp8266 #4 : i2c và cách sử dụng với lcd16*2, ghép nối với esp8266

Đào Hùng 09/04/2021
huong-dan-esp8266-4-i2c-va-cach-su-dung-voi-lcd16-2-ghep-noi-voi-esp8266

Mở đầu

  • Mọi người chắc hẳn cũng đã quen thuộc với cách sử dụng Lcd 16×2 cùng Module I2C trên những bo mạch Arduino Uno rồi đúng không. Hòa cùng xu thế IOT toàn câu, việc sử dụng các bo mạch tích hợp WiFi như ESP8266 là điều vô cùng phổ biến. Tuy đều có thể viết code và nạp trên trình biên dịch Arduino IDE, nhưng cách dùng LCD16x2 có module I2C lại có đôi chút khác biệt giữa 2 bo mạch Arduino Uno và Esp8266. Vậy nó là gì, hãy cùng xem ngay nhé!

Chuẩn bị

Phần cứng
ESP8266 NodeMCU v1.0 x1
Phần mềm
Arduino IDE  
Thư viện
LiquidCrystal I2C  

Mạch chuyển đổi I2C cho LCD

  • LCD có quá nhiều chân gây khó khăn trong quá trình kết nối và chiếm dụng nhiều chân của vi điều khiển? Module chuyển đổi I2C cho LCD sẽ giải quyết vấn đề này cho bạn, thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nối với LCD (RS, EN, D7, D6, D5 và D4) thì với module chuyển đổi bạn chỉ cần sử dụng 2 chân (SCL, SDA) để kết nối. Module chuyển đổi I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 1602, LCD 2004, … )

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

Thông số kỹ thuật

Điện áp hoạt động : 2.5-6 VDC
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)
Kích thước : 41.5x19x15.3 mm
Trọng lượng : 5g
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ơ đồ chân

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

Ghép nối với LCD

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

Cài đặt thư viện LiquidCrystal I2C

  • Tải thư viện trên Github

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

  • Tải thư viện trên Github

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

 

  • Chọn Sketch → Include Library → Add .ZIP Library

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

  • Chọn thư viện vừa tải

Tải thư việc trực tiếp trên Library Manager

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

  • Chọn Sketch → Include Library →Manager Library

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

  • Gõ vào ô tìm kiếm liquidcrystal i2c, sau đó kéo xuống, tới LiquidCrystal I2C thì ra chọn Install

Sơ đồ đấu nối với ESP8266

Hướng dẫn ESP8266 #4 : I2C và cách sử dụng với LCD16*2, ghép nối với Esp8266

Lưu ý: Nguồn vào bạn phải cắm vào Vin và GND. Vì đó là nguồn 5V từ cáp USB đưa vào, nếu cắm vào nguồn 3.3V, Lcd sẽ sáng yếu và có thể không hoạt động đúng.

Lập trình LCD I2C

Một số hàm thông dụng

lcd.init() : Khởi tạo màn hình lcd
lcd.clear() : Xóa màn hình, đưa con trỏ về vị trí 0,0
lcd.home() : Đưa con trỏ về vị trí 0
lcd.setCursor(x,y) : Đưa con trỏ về vị trí cột thứ x, hàng thứ y
lcd.noDisplay() : Không hiển thị gì trên màn hình cả
lcd.display() : Hiển thị lên màn hình
lcd.noBlink() : Không nhấp nháy con trỏ
lcd.blink() : Nhấp nháy con trỏ
lcd.scrollDisplayLeft() : Cuộn màn hình bên trái
lcd.scrollDisplayRight() : Cuộn màn hình bên phải
lcd.leftToRight() : Kí tự sẽ hiển thị từ phía bên trái sang phải
lcd.rightToLeft() : Kí tự sẽ hiển thị từ phía phải sang trái
lcd.noBacklight() : Tắt đèn nền
lcd.backlight() : Có đèn nền
lcd.write(x) : Lcd sẽ in ra kí tự thứ x trong ô nhớ từ 0-7 của CGRAM
lcd.createChar(location,charmap[]) : Hiển thị một kí tự charmap[] bất kì

Code mẫu

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
 
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
byte heart[8] = {       // Mình đã tạo một mảng byte hình trái tim ở đây nhé
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
}; 
 
void setup() {
  Serial.begin(9600);
  Wire.begin(2, 0);           //Bắt đầu 2 chân SDA và SCK của I2C
  // Khởi tạo LCD
  lcd.init();                 //Bắt đầu màn hình
  lcd.backlight();            // Bật đèn nền
  lcd.home();                 //Đưa con trỏ về vị trí 0,0
  lcd.print("Hello World");
  lcd.display();              // Hiển thị lên màn hình.
  lcd.blink();                // Nhấp nháy con trỏ ở vị trí cuối cùng
  lcd.createChar(0, heart);   // Mình đã tạo một ô chứa ở vị trí 0, có hình trái tim.
}
 
void loop() {
  //Giờ chúng ta sẽ sử dụng một số hàm hay dùng ở trong lcd nhé.
  lcd.setCursor(2,0);         //Đưa con trỏ về cột thứ 2, hàng 0.
  lcd.print("Hi,I'm Sofial");
  delay(2000);                // Delay trong thời gian 2s
  lcd.setCursor(15,0)         //Đưa con trỏ về cột thứ 15, dòng 0.
  lcd.write(byte(0));         //Mình sẽ in ra cái mảng hình trái tim nhé
  lcd.blink();                //Nhấp nháy con trỏ tại vị trí cuối cùng.
  delay(2000);
  lcd.clear();                // Xóa màn hình
  delay(4000);                // delay trong khoảng thời gian 4s rồi sẽ lặp lại chu kì
}

 

Video

https://www.youtube.com/watch?v=ZL_bJHa502E

Bình luận
Nội dung này chưa có bình luận, hãy gửi cho chúng tôi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN