Viet Anh LE gửi vào
- 24213 lượt xem
Giới thiệu
Tiếp tục tìm hiểu về IC MAX7219, hôm nay mình sẽ đề cập đến việc hiển thị LED 7 thanh. Chỉ với một con chip MAX7219, chúng ta có thể hiển thi một lúc tới 8 chữ số và chỉ cần 3 chân Digital từ Arduino. Việc điều khiển LED 7 thanh trở nên thực sự hiệu quả và đơn giản.
Nếu các bạn chưa biết về MAX7219, có thể tìm hiểu lại tại đây
Phần cứng
- Arduino UNO R3
- IC MAX7219
- Điện trở 1k Ohm
- LED 7 thanh 4 chữ số Cathode chung
Nối mạch
- Chân 1 (DIN), chân 12 (LOAD) và 13 (CLK) của MAX7219 lần lượt nối với chân 2,3,4 của Arduino (Các bạn có thể dùng các chân Digital khác).
- Chân 4 và chân 9 nối xuống GND, chân 19 nối nguồn 5V, chân 18 nối nguồn 5V thông qua điện trở 1k.
- Các chân của LED 7 thanh được nối với các chân của MAX7219 như sau:
LED 7 thanh | MAX7219 |
Digit 1 | 2 |
Digit 2 | 11 |
Digit 3 | 6 |
Digit 4 | 7 |
Digit 5 | 3 |
Digit 6 | 10 |
Digit 7 | 5 |
Digit 8 | 8 |
A | 22 |
B | 14 |
C | 16 |
D | 20 |
E | 23 |
F | 21 |
G | 15 |
DP | 17 |
Trong bài viết này, mình chỉ thực hiện hiển thị 4 chữ số với Arduino nên chỉ kết nối các chân 2, 11, 6, 7 với LED 7 thanh.
Để đơn giản việc kết nối dây, các bạn có thể sử dụng module MAX7219 + LED 7 thanh đã có bán trên thị trường.
Lập trình
MAX7219 rất thuận tiện cho việc hiển thị LED ma trận và LED 7 thanh nên người ta đã tạo sẵn thư viện. Các bạn có thể download tại đây.
Với hàm setDigit() trong thư viện, chúng ta dễ dàng hiển thị LED 7 thanh theo ý mình. Cú pháp của hàm setDigit() như sau:
setDigit(int addr, int digit, byte value, boolean dp)
- addr là địa chỉ của chip MAX7219. Nếu bạn chỉ sử dụng 1 chip MAX thì mặc định là 0. Nếu có nhiều chip MAX7219 thì chip thứ nhất địa chỉ là 0, chip thứ hai là 1, ...
- digit là vị trí của chữ số cần hiển thị (bắt đầu từ 0)
- value là chữ số cần hiển thị.
- dp để hiển thị dấu chấm, bằng 1 nếu hiển thị và bằng 0 nếu không hiển thị.
Trong bài viết này, mình sẽ lập trình tạo một đồng hồ bấm giờ để các bạn tham khảo .
#include "LedControl.h" // thêm thư viện LedControl segment = LedControl(2, 4, 3, 1); // Chân 2 nối với chân DataIn // Chân 4 nối với chân CLK // Chân 3 nối với chân LOAD // Sử dụng 1 IC MAX7219 int s=0; void setup() { segment.shutdown(0, false); // Bật hiển thị segment.setIntensity(0, 15); // Đặt độ sáng lớn nhất segment.clearDisplay(0); // Tắt tất cả led } void loop() { int phut, giay; giay=s%60;phut=s/60 segment.setDigit(0,0,phut/10,0); //Chữ số hàng chục của phút segment.setDigit(0,1,phut%10,1); //Chữ số hàng đơn vị của phút, có dấu chấm ngăn cách segment.setDigit(0,2,giay/10,0); //Chữ số hàng chục của giây segment.setDigit(0,3,giay%10,0); //Chữ số hàng đơn vị của giây delay(1000);s+=1; }
Lời kết
Như vậy, với việc sử dụng MAX7219 và thư viện LedControl, việc điều khiển LED 7 thanh và LED ma trận đã trở nên thực sự dễ dàng.
Chúc các bạn thành công !