OVERVIEW
Using a LED Dot Matrix in your next project can be a way to incorporate some cool little animations.
By using these 8X8 matrix modules you can create your own.
Since these modules use the MAX7219 LED driver chip, we will be able to turn on and off the 64 LEDs of each modules, using only 3 pins on our Arduino.
In this tutorial we will connect 2 of them together to display different animations on each one.
PARTS USED
MAX7219 Display
Arduino UNO
Jumper Wires
These are Amazon affiliate links...
They don't cost you anything and it helps me keep the lights on
if you buy something on Amazon. Thank you!
CONNECTIONS
As you can see, even if we are using 2 Modules, the number of pins needed, does not increase.
VCC and Ground are connected to the Arduino.
Pin 12 is connected to DIN, Pin 11 is connected to CS and Pin 10 is connected to CLK.
THE CODE
Our Sketch will make use of the “LedControl” Library to communicate with the MAX7219 modules.
Download and extract it to your Library folder, then restart your IDE software.
The code below assumes that we have 2 Dot Matrix connected together in cascade, but you can modify it easily if you have more or less of them connected.
We select the module we want to write to by using a number based on where it is in the chain, starting from 0 for the first one, 1 for the second, and so on…
As always you can have a look at the tutorial video for more information.
#include "LedControl.h"
LedControl lc=LedControl(12,10,11,2); // Pins: DIN,CLK,CS, # of Display connected
unsigned long delayTime=200; // Delay between Frames
// Put values in arrays
byte invader1a[] =
{
B00011000, // First frame of invader #1
B00111100,
B01111110,
B11011011,
B11111111,
B00100100,
B01011010,
B10100101
};
byte invader1b[] =
{
B00011000, // Second frame of invader #1
B00111100,
B01111110,
B11011011,
B11111111,
B00100100,
B01011010,
B01000010
};
byte invader2a[] =
{
B00100100, // First frame of invader #2
B00100100,
B01111110,
B11011011,
B11111111,
B11111111,
B10100101,
B00100100
};
byte invader2b[] =
{
B00100100, // Second frame of invader #2
B10100101,
B11111111,
B11011011,
B11111111,
B01111110,
B00100100,
B01000010
};
void setup()
{
lc.shutdown(0,false); // Wake up displays
lc.shutdown(1,false);
lc.setIntensity(0,5); // Set intensity levels
lc.setIntensity(1,5);
lc.clearDisplay(0); // Clear Displays
lc.clearDisplay(1);
}
// Take values in Arrays and Display them
void sinvader1a()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,invader1a[i]);
}
}
void sinvader1b()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,invader1b[i]);
}
}
void sinvader2a()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,invader2a[i]);
}
}
void sinvader2b()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,invader2b[i]);
}
}
void loop()
{
// Put #1 frame on both Display
sinvader1a();
delay(delayTime);
sinvader2a();
delay(delayTime);
// Put #2 frame on both Display
sinvader1b();
delay(delayTime);
sinvader2b();
delay(delayTime);
}
TUTORIAL VIDEO
DOWNLOAD
Copy and paste the above code in the Arduino IDE to program your Arduino.
Used Libraries:
Download the LedControl library created by Eberhard Fahle here: https://github.com/wayoda/LedControl/releases
Once downloaded, just extract the content of the zip files inside your “arduino/libraries” folder.
Comments