Hướng dẫn làm đồng hồ bấm giờ bằng Led 7 đoạn 4 số và Arduino

Hướng dẫn làm đồng hồ bấm giờ bằng Led 7 đoạn 4 số và Arduino

Trong bài viết ngày hôm nay mình sẽ hướng dẫn cho các bạn làm đồng hồ bấm giờ bằng LED 7 đoạn 4 số và Arduino, với các chế độ bắt đầu, dừng lại và Reset lại trạng thái ban đầu. Đây là một dự án thú vị dành cho các bạn yêu thích điện tử và lập trình. Với sự kết hợp giữa LED 7 đoạn 4 số với Arduino, bạn có thể tạo ra một chiếc đồng hồ bấm giờ đơn giản và có tính chính xác rất cao.

Đọc thêm: LED 7 đoạn là gì? Cách hiển thị LED 7 đoạn bằng Arduino

Các linh kiện cần thiết cho dự án

TÊN LINH KIỆN SỐ LƯỢNG NƠI BÁN
Arduino Uno R3 1 Shopee | Cytron
Led 7 đoạn 4 số 1 Shopee | Cytron
IC MAX7219 1 Shopee | Cytron
Nút nhấn 4 chân 1 Shopee | Cytron
Tụ 0.1uF (Tụ gốm) 1 Shopee | Cytron
Tụ 10uF (Tụ phân cực) 1 Shopee | Cytron
Dây cắm 10-20 Shopee | Cytron
Breadboard 1 Shopee | Cytron

IC LED 7 đoạn MAX7219

IC MAX7219 là một IC điều khiển LED ma trận 8×8 hoặc LED 7 đoạn. Đây được xem là một giải pháp tiện lợi cho việc điều khiển hiển thị LED nhiều ký tự hoặc hiển thị đồ họa trên các LED ma trận.

MAX7219 sử dụng giao tiếp dạng chuỗi dữ liệu (serial data interface) để gửi dữ liệu điều khiển từ vi điều khiển chính (như Arduino) đến vi mạch. Nó hỗ trợ các chế độ hiển thị khác nhau như hiển thị đơn, hiển thị chuyển đổi và hiển thị đồng thời.

Hướng dẫn làm đồng hồ bấm giờ bằng Led 7 đoạn 4 số và Arduino

IC này có thể điều khiển nhiều module hiển thị LED cùng lúc thông qua kỹ thuật daisy-chain. Điều này cho phép kết nối nhiều module LED thành một mạng lưới hiển thị lớn hơn, mở ra nhiều khả năng ứng dụng trong việc tạo các biểu đồ, biểu tượng, văn bản và hiển thị đồ họa đa dạng.

MAX7219 cũng cung cấp các tính năng bảo vệ như bảo vệ quá nhiệt và bảo vệ ngắn mạch, giúp bảo đảm an toàn của hệ thống.

Việc sử dụng IC MAX7219 giúp giảm đáng kể công việc kết nối và lập trình so với việc điều khiển LED một cách trực tiếp. Thư viện MAX7219 đã được phát triển sẵn cho nhiều nền tảng nhúng như Arduino, Raspberry Pi, và nhiều vi điều khiển khác, giúp dễ dàng tích hợp và điều khiển LED.

Sơ đồ đấu nối

Code đồng hồ bấm giờ bằng LED 7 đoạn 4 số

#include <LedControl.h> // Library for LED control with MAX72XX
#include <Bounce2.h> // Library for Bounce of switches
 
/*
Pins of Arduino Nano for LedControl:
Pin #7 is connected to DataIn (DIN)
Pin #8 is connected to CLK (CLK)
Pin #9 is connected to LOAD (CS)
There is only one display with MAX72XX
*/
 
LedControl lc = LedControl(7, 8, 9, 1); // LedControl(dataPin, clkPin, csPin, numDevices)
 
int k, lastTime, diffTime;
int a, b, c, d;
int a1, b1, c1, d1;
 
int pinStartStop = 4; // Start-Stop Pin
 
bool statusSwitch1 = false;
 
Bounce SW1 = Bounce(); // Define Bounce to read StartStop switch
Bounce SW2 = Bounce(); // Define Bounce to read Lap switch
 
void setup() {
 
pinMode (pinStartStop, INPUT_PULLUP);
 
// After setting up the button, setup the Bounce instance
SW1.attach(pinStartStop); // Sets the pin (Internal Pull-Up) & matches the internal state
SW1.interval(3); // Sets the debounce time in milliseconds
 
lc.shutdown(0, false); // The MAX72XX is in power-saving mode on startup, we have to do a wakeup call
lc.setIntensity(0, 5); // Set the brightness of display between 0 and 15
lc.clearDisplay(0); // Clear the display
 
lc.setDigit(0, 7, 0, false);
lc.setDigit(0, 6, 0, false);
lc.setDigit(0, 5, 0, true);
lc.setDigit(0, 4, 0, false);
 
lc.setDigit(0, 3, 0, false);
lc.setDigit(0, 2, 0, false);
lc.setDigit(0, 1, 0, true);
lc.setDigit(0, 0, 0, false);
 
}
 
void loop() {
 
lastTime = 0;
diffTime = 0;
 
for (k = 0; k <= 9999; k++) {
 
SW1.update();
 
if (SW1.fell()) {
statusSwitch1 = !statusSwitch1;
}
 
if (statusSwitch1 == true) {
 
a = k / 1000;
b = (k - a * 1000) / 100;
c = (k - a * 1000 - b * 100) / 10;
d = k % 10;
 
lc.setDigit(0, 7, a, false);
lc.setDigit(0, 6, b, false);
lc.setDigit(0, 5, c, true);
lc.setDigit(0, 4, d, false);
}
else {
k = k - 1;
}
 
SW2.update();
 
if (SW2.fell()) {
 
diffTime = k - lastTime;
lastTime = k;
 
a1 = diffTime / 1000;
b1 = (diffTime - a1 * 1000) / 100;
c1 = (diffTime - a1 * 1000 - b1 * 100) / 10;
d1 = diffTime % 10;
 
lc.setDigit(0, 3, a1, false);
lc.setDigit(0, 2, b1, false);
lc.setDigit(0, 1, c1, true);
lc.setDigit(0, 0, d1, false);
 
}
 
delay(99);
 
}
 
}

Thư viện

Kết luận

Trên đây là hướng dẫn cơ bản về việc làm đồng hồ bấm giờ bằng LED 7 đoạn 4 số và Arduino. Bằng cách kết hợp giữa LED 7 đoạn và Arduino, các bạn đã tạo ra một sản phẩm thú vị và hữu ích cho việc đo và hiển thị thời gian.

Qua bài viết mình hy vọng đã giúp cho các bạn có cái nhìn tổng quan về cách làm đồng hồ bấm giờ bằng LED 7 đoạn 4 số và Arduino. Hãy tận dụng kiến thức đã học để thực hiện và tùy chỉnh dự án theo ý thích của mình. Chúc bạn thành công và đừng quên ủng hộ mình bằng cách Donate để mình có động lực tiếp tục ra nhiều bài viết hay hơn.

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments