Bài 20/31: Hiển thị điện áp trên LCD1602
Dự án này minh họa cách chế tạo một vôn kế kỹ thuật số sử dụng Arduino và màn hình LCD1602 với giao diện I2C. Bằng cách đọc điện áp tương tự từ một chiết áp và hiển thị nó trên màn hình, bạn sẽ học được các kỹ năng thiết yếu về chuyển đổi tương tự sang số, truyền thông I2C và điều khiển LCD.
Dự án này là một bước đệm tuyệt vời cho nhiều ứng dụng thực tế. Dưới đây là một số ý tưởng bạn có thể phát triển:
- Chế tạo một thiết bị giám sát điện áp pin di động cho các dự án của bạn.
- Tạo một bộ nguồn đơn giản với màn hình hiển thị điện áp trực quan.
- Giám sát đầu ra của tấm pin mặt trời hoặc các nguồn điện áp thay đổi khác.
- Hiển thị giá trị từ bất kỳ cảm biến tương tự nào, như điện trở phụ thuộc ánh sáng (LDR), dưới dạng một con số dễ đọc.
Đến cuối hướng dẫn này, bạn sẽ hiểu rõ cách kết nối các linh kiện, cấu hình các thư viện cần thiết và viết mã để tạo ra màn hình hiển thị điện áp của riêng mình.
Linh Kiện Phần Cứng
Để chế tạo dự án này, bạn sẽ cần các linh kiện sau. Khóa học dựa trên bộ kit Arduino 3-trong-1 SunFounder, bao gồm tất cả các bộ phận này.
- Bo mạch Arduino (ví dụ: Uno)
- Màn hình LCD1602 với mô-đun I2C
- Chiết áp (khuyến nghị 10kΩ)
- Dây cắm (Jumper Wires)
- Breadboard
Tìm Hiểu Về LCD1602 và Mô-đun I2C
LCD1602 là một màn hình chữ số phổ biến với 16 cột và 2 hàng. Một LCD song song tiêu chuẩn sẽ yêu cầu nhiều chân kỹ thuật số để điều khiển. Tuy nhiên, màn hình này đi kèm với một mô-đun I2C chuyên dụng được gắn ở mặt sau (trong video ở phút 01:30). Mô-đun này giúp đơn giản hóa việc đi dây một cách đáng kể, giảm kết nối chỉ còn bốn dây: VCC, GND, SDA và SCL. Điều này có thể thực hiện được vì mô-đun I2C hoạt động như một cầu nối, chuyển đổi tín hiệu nối tiếp I2C đơn giản thành các tín hiệu song song mà LCD cần.
Dự án này sử dụng giao diện I2C, một giao thức truyền thông cho phép Arduino của bạn giao tiếp với nhiều thiết bị chỉ bằng hai dây. Đây là một kỹ năng cơ bản để kết nối nhiều loại cảm biến và màn hình.
Hướng Dẫn Đi Dây
Việc kết nối LCD và chiết áp với Arduino khá đơn giản. Mô-đun I2C cần nguồn điện và hai đường truyền thông. Chiết áp hoạt động như một bộ chia điện áp biến đổi, cho phép bạn điều chỉnh điện áp tại chân gạt của nó.
Dưới đây là sơ đồ đi dây chi tiết:
- Mô-đun I2C của LCD đến Arduino:
- GND đến chân GND của Arduino (trong video ở phút 05:38).
- VCC đến chân 5V của Arduino (trong video ở phút 05:47).
- SDA đến chân A4 của Arduino (trong video ở phút 05:47).
- SCL đến chân A5 của Arduino (trong video ở phút 05:57).
- Chiết áp đến Arduino:
- Chân Trái đến chân 5V của Arduino (trong video ở phút 33:39).
- Chân Giữa (Wiper) đến chân A0 của Arduino (trong video ở phút 33:43).
- Chân Phải đến chân GND của Arduino (trong video ở phút 33:43).
Cài Đặt Thư Viện Cần Thiết
Dự án này yêu cầu một thư viện ngoài để điều khiển LCD qua I2C. Thư viện được sử dụng trong video là thư viện "Arduino Liquid Crystal I2C". Bạn có thể tải xuống từ liên kết được cung cấp trên trang tài nguyên Robojax hoặc từ GitHub (trong video ở phút 06:16).
Để cài đặt, hãy tải thư viện dưới dạng tệp ZIP. Sau đó, trong Arduino IDE của bạn, đi tới Sketch > Include Library > Add .ZIP Library... và chọn tệp đã tải xuống (trong video ở phút 06:41).
Tìm Địa Chỉ I2C Của LCD
Trước khi tải mã chính lên, việc xác định địa chỉ I2C của mô-đun LCD cụ thể của bạn là rất quan trọng. Địa chỉ này có thể thay đổi tùy thuộc vào nhà sản xuất. Video hướng dẫn cách sử dụng một trình quét I2C để tìm địa chỉ đó (trong video ở phút 08:11).
Bạn có thể tìm trình quét này bằng cách đi tới File > Examples > Wire > i2c_scanner. Tải mã này lên Arduino của bạn với LCD được kết nối và mở Serial Monitor. Nó sẽ hiển thị địa chỉ, thường là 0x27 hoặc 0x3F. Bạn sẽ cần sử dụng địa chỉ này trong mã chính của mình.
Giải Thích Mã
Mã cho dự án này tập trung vào việc đọc một giá trị tương tự và định dạng nó để hiển thị. Hãy phân tích các phần chính mà người dùng có thể cấu hình.
1. Khai Báo Thư Viện và Đối Tượng LCD
Phần này bao gồm các thư viện cần thiết và tạo một đối tượng cho LCD của bạn. Phần quan trọng nhất ở đây là địa chỉ I2C, bạn phải thay đổi để khớp với địa chỉ đã tìm thấy ở bước trước.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Đặt địa chỉ LCD thành 0x27 cho màn hình 16 hoặc 20 ký tự và 2 hoặc 4 dòng
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Thư viện này được tích hợp sẵn trong Arduino và cần thiết cho giao tiếp I2C.#include <LiquidCrystal_I2C.h>: Dòng này bao gồm thư viện chúng ta vừa cài đặt, cung cấp các hàm để điều khiển màn hình LCD.LiquidCrystal_I2C lcd(0x27, 16, 2);: Dòng này tạo một đối tượng tên làlcd. Tham số đầu tiên,0x27, là địa chỉ I2C bạn đã tìm thấy trước đó. Tham số thứ hai và thứ ba xác định kích thước của màn hình LCD: 16 cột và 2 hàng. Bạn phải thay đổi0x27thành địa chỉ cụ thể của bạn nếu nó khác.
2. Hàm Setup và Loop
Hàm setup() khởi tạo màn hình LCD và bật đèn nền. Hàm loop() chứa logic cốt lõi để đọc điện áp và hiển thị nó.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (mã hiển thị LCD)
delay(1000);
}
lcd.begin(): Hàm này khởi tạo giao diện LCD và chuẩn bị cho việc sử dụng.lcd.backlight(): Hàm này bật đèn nền của màn hình, làm cho văn bản hiển thị rõ ràng.int potValue = analogRead(A0);: Dòng này đọc giá trị analog thô từ chân A0, được kết nối với chân giữa của biến trở. Giá trị sẽ là một số nguyên từ 0 đến 1023, đại diện cho điện áp từ 0V đến 5V.float voltage = potValue * (5.0 / 1023.0);: Đây là bước chuyển đổi quan trọng. Nó chuyển đổi giá trị ADC thô thành giá trị điện áp thực tế. Công thức nhân giá trị thô với tỷ lệ giữa điện áp tham chiếu (5.0V) và giá trị ADC tối đa (1023). Điều này cần thiết vì ADC không đọc trực tiếp điện áp; nó đọc một số tỷ lệ.
3. Hiển thị điện áp
Mã sau đó xóa màn hình và in giá trị điện áp tại một vị trí cụ thể trên dòng thứ hai.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // đi đến đầu dòng thứ 2
lcd.print("Voltage:");
lcd.setCursor (9,1); // đặt đến dòng 2 ký tự 9
lcd.print(voltage);
lcd.setCursor (13,1); // đặt đến dòng 2 ký tự 14
lcd.print("V");
lcd.clear(): Xóa mọi văn bản trước đó trên màn hình.lcd.print("LCD1602 Tutorial"): In tiêu đề trên dòng đầu tiên.lcd.setCursor (0,1): Đặt con trỏ đến đầu dòng thứ hai. Tham số đầu tiên là cột (0-15), và tham số thứ hai là hàng (0 cho dòng đầu tiên, 1 cho dòng thứ hai).lcd.print(voltage): In giá trị điện áp đã tính. Biếnfloatsẽ được in với hai chữ số thập phân theo mặc định.lcd.setCursor (13,1): Di chuyển con trỏ đến cột 13 trên dòng thứ hai để đặt ký tự "V" ngay sau số.
Trình diễn dự án trực tiếp
Khi bạn đã tải mã lên, màn hình LCD sẽ hiển thị "LCD1602 Tutorial" trên dòng đầu tiên. Trên dòng thứ hai, nó sẽ hiển thị "Voltage:" theo sau là giá trị điện áp hiện tại. Khi bạn xoay núm biến trở, bạn sẽ thấy điện áp hiển thị thay đổi theo thời gian thực, dao động từ khoảng 0.00V đến 5.00V (trong video tại 35:25).
Dự án này là một ví dụ hoàn hảo về cách lấy tín hiệu analog thô và biến nó thành một giá trị rõ ràng, dễ đọc cho con người. Các kỹ năng bạn đã học ở đây có thể được áp dụng trực tiếp cho bất kỳ cảm biến analog nào khác mà bạn có thể sử dụng trong tương lai.
Video cũng đề cập đến các chủ đề liên quan khác, chẳng hạn như hiển thị văn bản, cuộn chữ và tạo ký tự tùy chỉnh trên màn hình LCD.
Các dự án liên quan từ video này
- Bài 20/31: Sử dụng LCD1602 với Arduino hiển thị văn bản | Robojax
- Bài 20/31: Hiển thị nhiệt độ và độ ẩm từ DHT11 trên màn hình LCD
Các chương
- [00:00] Giới thiệu về LCD1602 và tổng quan dự án
- [01:30] Giải thích phần cứng LCD1602 và mô-đun I2C
- [04:06] Thiết lập địa chỉ I2C với jumper
- [05:28] Sơ đồ đấu dây cho LCD1602
- [07:31] Giải thích mã cho hiển thị văn bản cơ bản
- [11:10] Trình diễn ví dụ con trỏ nhấp nháy
- [13:46] Tạo và sử dụng ký tự tùy chỉnh
- [18:51] Sử dụng ví dụ hiển thị nối tiếp
- [23:16] Cuộn văn bản trên màn hình LCD
- [26:13] Hiển thị nhiệt độ và độ ẩm từ DHT11
- [33:00] Đọc và hiển thị điện áp từ biến trở
- [35:56] Hiển thị khoảng cách từ cảm biến siêu âm
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int count =700;
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Voltage:");
lcd.setCursor (9,1); // set to line 2 char 9
lcd.print(voltage);
lcd.setCursor (13,1); // set to line 2 char 14
lcd.print("V");
//lcd.setCursor (3,3); // set to line 4 character 4
//lcd.print("Text in line 4");
delay(1000);
count++;
//end of loopcode Robojax code for LCD with I2C
}
Nghĩ bạn có thể cần
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Tài nguyên & tài liệu tham khảo
-
Tài liệuDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Bên ngoàiPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Tập tin📁
Thư viện Arduino (tệp nén)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Hướng dẫn Sử dụng
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB