Chuyển tới nội dung
Home » I2C Lcd Arduino Mega 2560 | Giới Thiệu Lcd 16×2

I2C Lcd Arduino Mega 2560 | Giới Thiệu Lcd 16×2

How to connect an I2C LCD Display to an Arduino MEGA 2560

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

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é.

How to connect an I2C LCD Display to an Arduino MEGA 2560
How to connect an I2C LCD Display to an Arduino MEGA 2560

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.

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ế
How to connect an i2C LCD module (Liquid Crystal Display) to Arduino MEGA 2560
How to connect an i2C LCD module (Liquid Crystal Display) to Arduino MEGA 2560

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.

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.

I am having trouble getting a 20×4 LCD display with a I2C backpack to work on my Fundino Mega 2560. I’ve done a lot of troubleshooting and at this point I’m convinced the problem is in the library. I’ve found a newer library, but the parameters were changed around and I can’t get it to compile.

More details:

  • I have 3 LCD displays with I2C backpacks.
  • I have 2 Arduino Unos, a Funduino Mega 2560, and a TI Launchpad.
  • I can get all 3 displays working on both Unos and the Launchpad, but not the Mega.
  • I can run I2C scanner on all boards and find the display at address 0x27. Including on the Mega.
  • I can run I2Cmaster and I2Cslave on the Uno, the Mega, and the Launchpad, and whichever way I load ’em and run ’em, they all talk to each other as expected. The Mega is thus verified to send and receive via I2C.
  • I’m using pins 20 SCL and 21 SDA on the Mega. I also tried Analog 5 and 4.
  • The LiquidCrystal_I2C library that works on the Unos was created by Francisco Malpartida on 8/20/11 according to the comments in the file. My file date is 4/5/12 but I think that may be the date I unzipped it.
  • I know my pin numbers for the backpack, they are 2,1,4,5,6,7,3. That works with the older library by Malpartida on the Uno.
  • I found LiquidCrystal_I2C_V3 on GitHub. The GitHub user is Dino0815. It was last updated 8 months ago on 8/14/13 by Sebastian Löser.
  • The constructor and begin() parameters have changed. The constructor now takes the address, cols and rows, and one more parameter, a constant, that indicates which backpack you are using and it’s pinout.
  • The default is ‘POLLIN’ but I think the correct one for my pinout is ‘SYDZ’
  • The begin() function now has a 3rd parameter, which is the dot size of the display. (It also takes the # of cols and rows again — redundant!)
  • Whether I use 3 parameters, or just 2, I get error: no ‘void LiquidCrystal_I2C::begin3(uint8_t, uint8_t, uint8_t)’ member function declared in class ‘LiquidCrystal_I2C’ when I compile. Yes, I’m passing it 3 (or 2) unsigned 8-bit integers.
  • I admit my C++ skills are not the greatest, but the error sounds like I am not sending the correct parameters to the begin() function, yet I’m pretty sure I am calling it correctly. My skills are not good enough to trace it out further within his code.
  • Version 3 by Löser does not include updated examples to show how to call it. Or any other real documentation.

I just want a LCD library that works with I2C backpacks (the cheap no-name chinese ones) and that works on a Mega 2560.
Suggestions anyone?

I2C is I2C, the programming is the same for Uno and Mega. Use the standard library LiquidCrystal_I2C2004V1. If you get a result on the Uno, there can’t be anything wrong with the library. All you need do is use the Mega pins 20,21, which you already know about, and not A4,A5, which are exclusive to Uno. Since there is nothing to get wrong with the software, it more or less leaves the problem to be found in the hardware. God knows what. I suppose it is possible that you have the I2C connected to A4,A5 as well as 20,21 but I don’t know what the result of that would be.

Nick_Pyner:
If you get a result on the Uno, there can’t be anything wrong with the library. All you need do is use the Mega pins 20,21

Yeah, you would think so! But if you check my troubleshooting steps above, you will see that I verified that the Mega can both send and receive I2C on pins 20 and 21. And the I2Cscanner sketch found the LCD backpack at address 0x27 just as expected. My Hello World sketch works fine on the Uno (It shows Hello World on the LCD display) but the EXACT SAME CODE does not work on the Mega. It compiles, it runs, but nothing shows up on the LCD display.

I spent much of the day troubleshooting it and running all sorts of tests. I only tried Analog 4 and 5 on the Mega out of desperation after nothing else worked.

I have at least 3 versions of the LiquidCrystal_I2C library, updated by different authors. I get the same results with all three. I will try to track down the “LiquidCrystal_I2C2004V1” specific version and try it.

I will check my Uno and Mega but I’m sure programmes I have had are the same for both and labelled accvordingly. The library I mentioned is the only one I know of. I’m certainly not inclined to try any others……….

OK, the following works without changing anything on both Uno and Mega. As I said, I2C is I2C, and this is exactly what you would expect. After all, what is there to change? It is just a matter of connecting the SDA,SCL as appropriate. The library is produced by YWRobot and was probably obtained from a link on the eBay page when I got the display. I submit your problem is too much concern about buzzstuff like parameters and functions, not to mention your limited C++ skills, where in truth you don’t need any C++ skills at all, and you are not using the library in the manner intended i.e. no fiddling. In short, your libraries are probably innocent, and your problem lies somewhere else. I imagine the first step is to re-install the libraries virgo intacto, it could even be the only step……….

I guess it is just possible that Malpartida, Dinoxxx, and Loser, have also been fiddling when they shouldn’t, so, as a last resort, I guess you could get this library from Yourduino.com, as I don’t believe it should matter which library you use.


/* YourDuino.com Example Software Sketch
20 character 4 line I2C Display
[email protected] */
/*-----( Import needed libraries )-----*/
#include

#include /*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
LiquidCrystal_I2C lcd(0x27,20,4);
/*-----( Declare Variables )-----*/
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600);
lcd.init(); // initialize the lcd
// Print our characters on the LCD
lcd.backlight(); //Backlight ON if under program control
lcd.setCursor(3,0); //Start at character 3 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(2,1);
lcd.print("From YourDuino");
delay(1000);
lcd.setCursor(0,2);
lcd.print("20 by 4 Line Display");
delay(1000);
lcd.setCursor(0,3);
delay(1000);
lcd.print("http://YourDuino.com");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */

It may be you need to try a level shifter as the Mega has 10K pullups to 5 volts on the I2C pins.

http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter#.U0FYgvldWSo

Which library does matter. As can be seen, they are not all the same.
Some work better than others, and sometimes vendors go in and monkey with stuff
for their hardware and sometimes break things.

In the MANY threads like this, the outcome is almost always the same: user error.
What I can say is that I recommend using fm’s library, as I know that one works.
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
Follow the instructions and install it properly:
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
(see the Downloading and Installation section)

Something to check:

  • make sure that one and only one of the libraries is installed a time.
    Because of the way the IDE works and the naming used by the libraries,
    they cannot coexist and can step on each other to
    create an environment where nothing works or things behave strangely
    because you can end getting parts of one library and parts of another.
    So when you install another library you must make sure to remove any previous library.
    i.e. you can’t have more than library that has a LiquidCrystal_I2C.h header file installed

I know my pin numbers for the backpack, they are 2,1,4,5,6,7,3. That works with the older library by Malpartida on the Uno

If you have it working on UNO, then it should work on Mega with no changes.
I would go back to this condition and start from there.

Get it working on UNO, then take the exact same i2c backpack & LCD, move it the mega board,
change the board type, and upload it to mega.
Make sure that nothing else is changed.
i.e. build sketch on the same machine, and use the exact same i2c backpack & LCD that worked on the UNO.

— bill

I got it working on both the Uno and the Mega…
… using fm’s library at https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads as recommended Bill (bperrybap) THANK YOU!

and BTW:

Get it working on UNO, then take the exact same i2c backpack & LCD, move it the mega board,
change the board type, and upload it to mega.
Make sure that nothing else is changed.
i.e. build sketch on the same machine, and use the exact same i2c backpack & LCD that worked on the UNO.

is precisely what I did right from the very start if you read my troubleshooting steps. But as Bill noted:

Which library does matter. As can be seen, they are not all the same.
Some work better than others, and sometimes vendors go in and monkey with stuff
for their hardware and sometimes break things.

And after all my troubleshooting, I figured the problem MUST be in the version of the library I was using, which is why my original question was:

I just want a LCD library that works with I2C backpacks (the cheap no-name chinese ones) and that works on a Mega 2560.
Suggestions anyone?

so thanks to everyone but extra kudos to Bill for pointing me to one that works!
Part of my problem was that I didn’t realize that fm’s library also supported I2C, since the overall library name is simply named “LiquidCrystal” I thought it only supported ones that were wired to a bunch of pins (without I2C). Hence, I went out seeking other people’s libraries to get I2C support that unknowingly I had along. Maybe I should have clicked my heels together 3 times

    • Tổng tiền thanh toán:
Code test cơ bản

#include

void loop()

Code Đếm số 0 đến 9 LCD 16×2 I2C

#include

void loop()

Code test cơ bản

#include

void loop()

Code Đếm số 0 đến 9 LCD 16×2 I2C

#include

void loop()

Bộ Linh Kiện Khởi Đầu ARDUINIO Module I2C LCD 0,96 inch Sử Dụng Cho Uno R3 Mega2560

Sản phẩm bao gồm:
– Màn hình OLED 1 x 0,96 inch
– Module màn hình LCD 1×1602
– Module chuyển tiếp kênh 1×1
– 1 x cảm biến nhiệt độ và độ ấm DHT11
– 1x cảm biến siêu âm HC-SR04
– Màn hình ma trận chấm 1x 8×8
-1 x Module cần điều khiển
– Ống kỹ thuật số 1×4 chữ số
– 1 x cảm biến cảm ứng TTP223B
– 1 x cảm biến hồng ngoại HC-SR501
– 1 x cảm biến độ ẩm đất
– 1 x cảm biến tránh chướng ngại vật
-1 x động cơ servo SG90 9G
– 2 x bảng bánh mì
– 30 x điện trở(220 1k 10k Q)
– 20 x diode (màu đỏ)
– 20 x cáp DuPont (đực, cái)

– Bộ Linh Kiện Khởi Đầu ARDUINIO Module I2C LCD 0,96 inch được sử dụng phổ biến trong thực hành Arduino

Nguồn: Đặng Duy Long.

Programar pantalla LCD en Arduino Mega
Programar pantalla LCD en Arduino Mega

Keywords searched by users: i2c lcd arduino mega 2560

Arduino Mega I2C Lcd Tutorial - Youtube
Arduino Mega I2C Lcd Tutorial – Youtube
How To Connect An I2C Lcd Display To An Arduino Mega 2560 - Youtube
How To Connect An I2C Lcd Display To An Arduino Mega 2560 – Youtube
Lcd Displays And The Serial Monitor - Craig Lyn Design Studio
Lcd Displays And The Serial Monitor – Craig Lyn Design Studio
Easiest Way To Connect Lcd Screen To Arduino Mega! - Hackster.Io
Easiest Way To Connect Lcd Screen To Arduino Mega! – Hackster.Io
In-Depth: Interfacing An I2C Lcd With Arduino
In-Depth: Interfacing An I2C Lcd With Arduino
How To Connect An I2C Lcd Module (Liquid Crystal Display) To Arduino Mega  2560 - Youtube
How To Connect An I2C Lcd Module (Liquid Crystal Display) To Arduino Mega 2560 – Youtube
Haris Prasetyo Site: Cara Mudah Menampilkan Karakter Pada Modul Serial Lcd  16X2 I2C Dengan Semua Jenis Arduino
Haris Prasetyo Site: Cara Mudah Menampilkan Karakter Pada Modul Serial Lcd 16X2 I2C Dengan Semua Jenis Arduino
How To Convert Lcd Display To Lcd Serial Display For Arduino
How To Convert Lcd Display To Lcd Serial Display For Arduino
How To Connect An I2C Lcd Module To Arduino Mega - Example Dht11  Temperature And Humidity Sensor - Youtube
How To Connect An I2C Lcd Module To Arduino Mega – Example Dht11 Temperature And Humidity Sensor – Youtube
Arduino Mega Lcd Tutorial - Youtube
Arduino Mega Lcd Tutorial – Youtube
16×2 I2C Liquidcrystal Display(Lcd) For Uno R3 And Mega2560 – Kookye.Com
16×2 I2C Liquidcrystal Display(Lcd) For Uno R3 And Mega2560 – Kookye.Com
In-Depth: Interfacing An I2C Lcd With Arduino
In-Depth: Interfacing An I2C Lcd With Arduino
Amazon.Com: Weewooday 8 Pieces Iic/ I2C/ Twi Lcd Serial Interface Adapter  And Lcd Module Display Backlight Compatible With Arduino R3 Mega2560 (Blue, Lcd 2004 20 X 4) : Electronics
Amazon.Com: Weewooday 8 Pieces Iic/ I2C/ Twi Lcd Serial Interface Adapter And Lcd Module Display Backlight Compatible With Arduino R3 Mega2560 (Blue, Lcd 2004 20 X 4) : Electronics
Easiest Way To Connect Lcd Screen To Arduino Mega! - Hackster.Io
Easiest Way To Connect Lcd Screen To Arduino Mega! – Hackster.Io
Interfacing I2C Lcd With Arduino Mega 2560 In Proteus
Interfacing I2C Lcd With Arduino Mega 2560 In Proteus
Character I2C Lcd With Arduino Tutorial (8 Examples)
Character I2C Lcd With Arduino Tutorial (8 Examples)
Arduino Mega I2C Lcd Tutorial - Youtube
Arduino Mega I2C Lcd Tutorial – Youtube
Wiring I2C Module On 16×2 Lcd With Scl/Sda | 14Core.Com
Wiring I2C Module On 16×2 Lcd With Scl/Sda | 14Core.Com
Màn Hình Lcd Xanh I2C 1602 Cho Arduino 1602 Lcd Uno R3 Mega2560 Lcd1602 +  Ic2 | Shopee Việt Nam
Màn Hình Lcd Xanh I2C 1602 Cho Arduino 1602 Lcd Uno R3 Mega2560 Lcd1602 + Ic2 | Shopee Việt Nam
Mô Đun Màn Hình Lcd 1602 Iic / I2C 1602 Cho Arduino 1602 Lcd Uno R3 Mega2560  | Shopee Việt Nam
Mô Đun Màn Hình Lcd 1602 Iic / I2C 1602 Cho Arduino 1602 Lcd Uno R3 Mega2560 | Shopee Việt Nam
I2C 20X4 Lcd Not Working On Mega - Displays - Arduino Forum
I2C 20X4 Lcd Not Working On Mega – Displays – Arduino Forum

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 *