Mạch hiển thị 4 led ma trận MAX7219 bao gồm 4 led ma trận được điều khiển bởi 4 IC MAX7219 tương tự như 74HC595 nhưng chuyên dùng cho các ứng dụng Led Driver.
Mạch hiển thị 4 led ma trận MAX7219 có ngõ vào tín hiệu nối tiếp, ghi dịch chuyển tín hiệu nên chỉ cần 3 GPIO để điều khiển, ngoài ra IC MAX7219 còn có bộ đệm Static RAM 8x8 giúp cho việc hiển thị trở nên mượt hơn, mạch có khả năng nối tiếp thêm nhiều mạch tiếp sau bằng cổng nối tiếp tín hiệu đầu ra khi cần.
Thông số kỹ thuật:
- Mạch hiển thị 4 Led ma trận MAX7219.
- Nguồn cấp: 5VDC.
- Tín hiệu: nối tiếp Serial ba chân DIN, CS, CLK, mức tín hiệu TTL.
- Ma trận: 4 Led ma trận 8x8 màu đỏ.
- Kích thước: 12.8x3.2x1.3cm.
Sơ đồ chân:
Code tham khảo Arduino:
/*
MAX7219 Uno Mega
VCC 5V 5V
GND GND GND
CS 10 53
DIN 11 51
CLK 13 52
*/#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )int numberOfHorizontalDisplays = 1; //số trong Hiển thị theo chiều ngang
int numberOfVerticalDisplays = 4; // Số trong hiển thị theo chiều dọc.Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); // cấu hình matrixString tape = "Imaker xin chao"; // ký tự muốn truyền lên matrix
int wait = 100; // thời gian chạy chữ.int spacer = 1; // khoảng cách cách chữ
int width = 5 + spacer; // độ rộng của font là 5 fixelvoid setup() {matrix.setIntensity(15); // cài đặt giá trị độ tương phản từ 0 đến 15.// điều chỉnh hiển thị theo nhu câu của người dùng.
// matrix.setPosition(0, 1, 3); // The first display is at <0, 0>
// matrix.setPosition(1, 1, 0); // The second display is at <1, 0>
// matrix.setPosition(2, 2, 0); // The third display is at <2, 0>
// matrix.setPosition(3, 3, 0); // And the last display is at <3, 0>
// ...
// matrix.setRotation(0, 2); // Màn hình hiển thị đầu tiên là vị trí đảo ngược
matrix.setRotation(3); // The same hold for the last display
}void loop() {for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ )
{matrix.fillScreen(LOW);int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text verticallywhile ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < tape.length() ) {
matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
}letter--;
x -= width;
}matrix.write(); // Send bitmap to displaydelay(wait);
}
}
Tài liệu tham khảo:
Video tham khảo: