3.1K
This was an 8×8 dot matrix module which is based on 74hc595, its reasonably easy to program and there is also a tool that allows you to create animations
Description :
Square matrix display module 8×8 dot
Red pixels
Pixel size: 3.0MM
74hc595 driver
Can display variety of patterns and characters
Connection
| Arduino Connection | Module Connection |
| 5v | Vcc |
| Gnd | GND |
| D11 | DI |
| D12 | CLK |
| D8 | LAT |
Code
You need an animation header and also a couple of libraries but here is the main code – the zip file underneath has all you need
[codesyntax lang=”cpp”]
#include <TimerOne.h>
#include "animation.h"
//Pin connected to LAT of module
int latchPin = 8;
//Pin connected to CLK of module
int clockPin = 12;
////Pin connected to DI of module
int dataPin = 11;
// A number indicating when to advance to the next frame
unsigned long nextImage = 0;
int animationIndex = 0;
byte brightnesses[64];
int M[8];
//------------------------------------------------------------------------
void setup() {
//set pins to output so you can control the shift register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
if(animationIndex >= animationFrames)
{
//restart animation index
animationIndex = 0;
}
else{
//load Delay time for Image
nextImage = animationDelays[animationIndex];
//load image(converted)
for(int i=0; i<64; i++) {
brightnesses[i] = (animation[animationIndex][i/4] >> (i%4*2)) & B00000001;
M[i/8] |= (brightnesses[i] << (i%8)) ;
}
//Update Image
screenUpdate(nextImage);
animationIndex ++;
//clear M[]
for(int i=0; i<(8); ++i) {
M[i]=0;
}
}
}
void screenUpdate(unsigned long frametime)
{ // function to display image
unsigned long startime=millis();
while(millis()-startime<frametime)
{
byte row = B10000000; // row 1
for (byte k = 0; k < 8; k++)
{
digitalWrite(latchPin, LOW); // open latch ready to receive data
shiftIt(~row); // row binary number
shiftIt(M[k]); // LED array (inverted)
// Close the latch, sending the data in the registers out to the matrix
digitalWrite(latchPin, HIGH);
row = row>> 1; // bitshift right
}
}
}
void shiftIt(byte dataOut) {
// Shift out 8 bits LSB first, on rising edge of clock
boolean pinState;
//clear shift register read for sending data
digitalWrite(dataPin, LOW);
// for each bit in dataOut send out a bit
for (int i=0; i<8; i++) {
//set clockPin to LOW prior to sending bit
digitalWrite(clockPin, LOW);
// if the value of DataOut and (logical AND) a bitmask
// are true, set pinState to 1 (HIGH)
if ( dataOut & (1<<i) ) {
pinState = HIGH;
}
else {
pinState = LOW;
}
//sets dataPin to HIGH or LOW depending on pinState
digitalWrite(dataPin, pinState);
//send bit out on rising edge of clock
digitalWrite(clockPin, HIGH);
digitalWrite(dataPin, LOW);
}
digitalWrite(clockPin, LOW); //stop shifting
}
[/codesyntax]
Video
What better way than a video of some of the examples
httpv://www.youtube.com/watch?v=rc8ZWFqNPlQ
Links
I found the resources for this hard to find at first but here is a zip with the code example above, timerone library and also the animation jar file

