How to Control 8x8 Dot Matrices with Arduino and MAX7219
Controlling 8x8 Dot Matrix with Max7219 and Arduino
Max7219, combined with an Arduino, can be used to control 8x8 dot matrix displays, lighting the LEDs up in a variety of patterns and sequences. This guide will teach you how to easily set up your Max7219 and Arduino and start controlling your dot matrix display.
Materials Needed
- Arduino Uno
- Max7219 8x8 LED matrix
- Jumper wires
Hardware Setup
Setting up the Arduino and Max7219 is a relatively simple process. Start by placing the Max7219 onto the breadboard. Then connect data pin (pin 2) to Arduino digital pin 10. Connect the clock pin (pin 3) to Arduino digital pin 11. Finally, connect the load pin (pin 4) to Arduino digital pin 12.
Applications
Now that you have your Max7219 and Arduino connected, you can begin to explore the various applications for this setup. Some popular uses for this configuration include creating custom animations, displaying messages and scores, and more!
Here's an example source code for controlling an 8x8 dot matrix with Max7219 and Arduino:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#define DATA_PIN 10
#define CLK_PIN 11
#define CS_PIN 12
#define NUM_DEVICES 1
Max72xxPanel matrix = Max72xxPanel(DATA_PIN, CLK_PIN, CS_PIN, NUM_DEVICES);
int delayTime = 100;
void setup() {
matrix.setIntensity(8); // set brightness level
matrix.fillScreen(LOW); // clear the screen
matrix.setFont(&FreeMonoBold9pt7b); // set font
}
void loop() {
// display text "HELLO"
matrix.setCursor(0,0);
matrix.print('H');
matrix.setCursor(8,0);
matrix.print('E');
matrix.setCursor(16,0);
matrix.print('L');
matrix.setCursor(24,0);
matrix.print('L');
matrix.setCursor(32,0);
matrix.print('O');
matrix.write(); // write to display
delay(delayTime);
// scroll text "WORLD"
matrix.fillScreen(LOW);
matrix.setCursor(0,0);
matrix.print("WORLD");
matrix.write(); // write to display
for (int x = -35; x <= 0; x++) {
matrix.scroll(x, 0); // scroll text
matrix.write(); // write to display
delay(delayTime);
}
}
In this example, the SPI.h, Adafruit_GFX.h, and Max72xxPanel.h libraries are included. The Max72xxPanel class is used to control the 8x8 dot matrix using the Max7219 driver chip.
In the setup() function, the intensity of the display is set to 8 using the setIntensity() function, the screen is cleared using the fillScreen() function, and the font is set using the setFont() function.
In the loop() function, the text "HELLO" is displayed on the screen using the setCursor() and print() functions. The write() function is then used to write the display buffer to the screen, and a delay is added using the delay() function.
Next, the text "WORLD" is scrolled across the screen using the scroll() function and a for loop. The write() function is called after each scroll to update the display. A delay is added to control the speed of the scroll.
Note that the FreeMonoBold9pt7b font used in this example is included in the Adafruit_GFX library, but other fonts can be used as well. Also, the delayTime variable can be adjusted to control the speed of the display.
Conclusion
Setting up Max7219 and Arduino to control 8x8 dot matrix displays is easy and can open up many possibilities. With some creativity, you can come up with all sorts of interesting uses for this configuration.