Giải pháp "Tất cả trong một" cho giao diện người dùng
Module TM1638 (LED & KEY) là một giải pháp giao diện người dùng (HMI) "tất cả trong một" cực kỳ mạnh mẽ cho các dự án vi điều khiển. Với khả năng điều khiển đồng thời 24 linh kiện phần cứng (bao gồm 8 LED 7 đoạn, 8 LED đơn và 8 nút nhấn), module này chỉ chiếm dụng duy nhất 3 chân I/O nhờ giao tiếp Serial 3 dây thông minh.
Được thiết kế dựa trên chip driver TM1638 chuyên dụng, module không chỉ giúp hiển thị dữ liệu một cách trực quan mà còn hỗ trợ quét phím tự động, giúp giảm tải công việc cho CPU của vi điều khiển. Đây là linh kiện lý tưởng cho các nhà phát triển muốn xây dựng bảng điều khiển chuyên nghiệp nhưng bị giới hạn về số lượng chân cắm trên các board như Arduino Uno, Nano hay ESP8266.
8 LED 7 Đoạn
Hiển thị số liệu, thông báo, thời gian và menu cài đặt.
8 LED Đơn
Báo trạng thái hoạt động của các thiết bị ngoại vi hoặc tiến trình.
8 Nút Nhấn
Nhập liệu trực tiếp, điều hướng menu hoặc kích hoạt lệnh.
Thông số kỹ thuật
| Điện áp | 5V DC |
| Chip | TM1638 |
| Giao tiếp | Serial 3 dây |
| Độ sáng | 8 mức tùy chỉnh |
Chuẩn bị: Cài đặt thư viện TM1638.h
Để code hoạt động, bạn cần cài đặt thư viện hỗ trợ mạnh mẽ này:
- Mở Arduino IDE.
- Vào menu Tools -> Manage Libraries...
- Tìm kiếm từ khóa "TM1638".
- Chọn thư viện của tác giả dvarrel và nhấn Install.
- Vào File --> Examples --> TM1638 --> test_TM1638.
Phân tích Code & Demo
Dưới đây là mã nguồn tối ưu để kiểm tra toàn bộ tính năng của module:
#include <TM1638.h>
//choose digital pins compatibles with your board
#define STB 7 // Strobe digital pin
#define CLK 9 // clock digital pin
#define DIO 8 // data digital pin
TM1638 tm(CLK,DIO,STB);
void setup() {
Serial.begin(115200);
tm.reset();
tm.test();
}
pulse_t pulse=PULSE1_16;
void loop() {
const uint8_t text[]={0x7c,0x1c,0x78,0x78,0x5c,0x54};
for (uint8_t i=0;i<sizeof(text);i++)
tm.displayDig(7-i, text[i]);
uint8_t buttons = tm.getButtons();
tm.writeLeds(buttons);
static uint32_t timer = millis();
if ( millis()-timer > 1000){
timer=millis();
tm.displaySetBrightness(pulse);
pulse = (pulse==PULSE1_16) ? PULSE14_16 : PULSE1_16;
}
}
Cơ chế hoạt động của Code:
- tm.test(): Đảm bảo mọi phân đoạn LED đều hoạt động ngay khi cấp nguồn.
- text[] Hex Mapping: Các mã như
0x7cđược tính toán để bật các thanh LED cụ thể tạo thành hình chữ cái. - tm.writeLeds(buttons): Một cách lập trình cực kỳ tinh gọn – giá trị đọc từ 8 nút nhấn (dạng byte) được gửi trực tiếp để điều khiển 8 LED đơn.
- millis(): Giúp chương trình không bị "đơ" như khi dùng
delay(), cho phép quét nút nhấn liên tục trong khi vẫn xử lý nhấp nháy độ sáng.
Ứng dụng thực tế trong các dự án Arduino
Bảng điều khiển máy móc (HMI)
Hiển thị thông số và dùng phím để cài đặt.
Đồng hồ / Đếm sản phẩm
Tận dụng 8 chữ số để hiển thị thời gian hoặc số lượng.
Hệ thống Menu
Dùng phím để chọn các chế độ hoạt động khác nhau.
Máy đo nhiệt độ/độ ẩm
Hiển thị giá trị cảm biến một cách trực quan.




1 bình luận
Hello, i believe that i noticed you visited my blog thus i came to go back the want?.I am trying
to find issues to improve my website!I suppose its adequate to
use some of your concepts!!