Hướng dẫn làm mạch đồng hồ led 7 đoạn

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 mạch đồng hồ led 7 đoạn
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.

  • Datasheet MAX7219: MAX7219 Datasheet

Sơ đồ đấu nối

Hướng dẫn làm mạch đồng hồ led 7 đoạn

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

include // Library for LED control with MAX72XX

include // 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

  • LED Control Library: Download
  • Bounce2 Library: Download

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.