SparkFun LED-Matrix 8x8

Hi,

I would like to use the 8x8 RG-LED Matrix with SPI-Backpack from SparkFun to display letters or pics with the aeduino. I play with the code from here:

// Simple program to test using the Arduino with the RGB Matrix
// & Backpack from Sparkfun. Code is a combination of Heather Dewey-Hagborg,
// Arduino Forum user: Little-Scale, and // Daniel Hirschmann. Enjoy!
//
// The Backpack requires 125Khz SPI, which is the slowest rate
// at which the Arduino's hardware SPI bus can communicate at.
//
// We need to send SPI to the backpack in the following steps:
// 1) Activate ChipSelect;
// 2) Wait 500microseconds;
// 3) Transfer 64bytes @ 125KHz (1 byte for each RGB LED in the matrix);
// 4) De-activate ChipSelect;
// 5) Wait 500microseconds
// Repeat however often you like!


#define CHIPSELECT 10//ss
#define SPICLOCK  13//sck
#define DATAOUT 11//MOSI / DI
#define DATAIN 12//MISO / DO

int data[] =
{0,0,0,0,0,0,0,0,
0,0,1,1,0,1,1,0,
0,1,0,0,1,0,0,1,
0,1,0,0,0,0,0,1,
0,0,1,0,0,0,1,0,
0,0,0,1,0,1,0,0,
0,0,0,0,1,0,0,0,
0,0,0,0,0,0,0,0
};

char spi_transfer(volatile char data)
{
SPDR = data;                    // Start the transmission
while (!(SPSR & (1<<SPIF)))     // Wait the end of the transmission
{
};
}

void setup()
{
byte clr;
pinMode(DATAOUT,OUTPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(CHIPSELECT,OUTPUT);
digitalWrite(CHIPSELECT,HIGH); //disable device

SPCR = B01010001;             //SPI Registers
SPSR = SPSR & B11111110;      //make sure the speed is 125KHz

/*
SPCR bits:
 7: SPIEE - enables SPI interrupt when high
 6: SPE - enable SPI bus when high
 5: DORD - LSB first when high, MSB first when low
 4: MSTR - arduino is in master mode when high, slave when low
 3: CPOL - data clock idle when high if 1, idle when low if 0
 2: CPHA - data on falling edge of clock when high, rising edge when low
 1: SPR1 - set speed of SPI bus
 0: SPR0 - set speed of SPI bus (00 is fastest @ 4MHz, 11 is slowest @ 250KHz)
 */

clr=SPSR;
clr=SPDR;
delay(10);
}

void loop()            
{
  delay(100);
  int index = 0;                  
  digitalWrite(CHIPSELECT,LOW); // enable the ChipSelect on the backpack
  delayMicroseconds(500);
  for (int i=0;i<8;i++) for (int j=0;j<8;j++)
  {
    spi_transfer(data[index]);
      index++;                  
  }
  digitalWrite(CHIPSELECT,HIGH); // disable the ChipSelect on the backpack
  delayMicroseconds(500);
}

Thats working for me. Now i would like to display another picture e.g.

int data[] =
{0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,
0,0,0,0,1,0,0,0,
1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1
};

after a delay but i dont find a way to modify the code to do that. can somebody help me?

regards
johnas

Johnas,
At any point in the code you can modify data (see below). If you
would like to see a more flexable approach I've posted some code for a bike turn signal using 2 of these backpacks at http://wyoinnovation.blogspot.com.

Justin

A simple approach is illustrated below.
In loop():

int loop_counter = 0; // add global loop counter
void loop()
{
data[loop_counter % 64] += 1; // add 1 to a value in data
** data[loop_counter % 64] %= 4; // mod by 4 to get a valid color**
delay(100);
int index = 0;
digitalWrite(CHIPSELECT,LOW); // enable the ChipSelect on the backpack
delayMicroseconds(500);
for (int i=0;i<8;i++) for (int j=0;j<8;j++)
{
spi_transfer(data[index]);
index++;
}
digitalWrite(CHIPSELECT,HIGH); // disable the ChipSelect on the backpack
delayMicroseconds(500);
loop_counter += 1;
}

Hi Justin,

thanks for your reply. Your code example brings a nice eye-catching look to the led-matrix. It redraws one image with different colors. What i want to do is to draw an image, sleep 1 second, than draw an other image, sleep 1 second and so on. Do you know how to realize this?
I also had a look at your bike-turn-signal project but the code looks to complex to me. I think i just need a few lines code. no input pins et cetera.

Regards
Johnas

sorry the schematics?

Tanks in advance


Arduino | | LED Matrix SparkFun (COM-00759)
3-1 |-------| SCK
1-1 |-------| MOSI
0-1 |-------| CS
| |
+5V |-------| +5V
GND |-------| GND


LED-Matrix: SparkFun LED Matrix - Serial Interface (Red/Green) - COM-00759 - SparkFun Electronics

datasheet: http://www.sparkfun.com/datasheets/Components/matrix_backpack.pdf