Ok so I've been able to draw a predefined sprite on an LED matrix with 2 595s, but I seem to be stuck as how to update the display dynamically. Any ideas on how to update the display via serial?
byte dataPin = 0; // 74HC595 pin 14
byte latchPin = 1; // 74HC595 pin 12
byte clockPin = 2; // 74HC595 pin 11
byte data; // storage for the current data byte
byte dataArray[8]; // define the data array
byte row; // storrage for the current row byte
byte rowArray[8]; // define the row array
void setup()
{
pinMode(dataPin, OUTPUT); //pinmode setup
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
// column registers for image data.
dataArray[0] = B00011000;
dataArray[1] = B00111100;
dataArray[2] = B01111110;
dataArray[3] = B11011011;
dataArray[4] = B11111111;
dataArray[5] = B01011010;
dataArray[6] = B10000001;
dataArray[7] = B01000010;
// row registers... DO NOT CHANGE THESE!
rowArray[0] = B01111111;
rowArray[1] = B10111111;
rowArray[2] = B11011111;
rowArray[3] = B11101111;
rowArray[4] = B11110111;
rowArray[5] = B11111011;
rowArray[6] = B11111101;
rowArray[7] = B11111110;
}
void loop()
{
drawSprite();
}
void drawSprite()
{
for(int j = 0; j < 8; j++){ // load the byte...
data = dataArray[j]; // from the data array...
row = rowArray[j]; // and the row array
digitalWrite(latchPin, LOW); // ground the latch pin
shiftOut(dataPin, clockPin, MSBFIRST, data); // shift out the data
shiftOut(dataPin, clockPin, MSBFIRST, row); // shift out the row byte
digitalWrite(latchPin, HIGH); // it's finished so bring the latch pin high
//delay(50); // left in to display the plex at low speed
}
}