LED Matrix – Serial Interface – Red/Green/Blue (COM-00760)

£66.00 inc VAT

Availability: 1 in stock

Brand: SparkFun
Part Number: COM-00760
Barcode: 5055421006228
SKU: PPCOM-00760 Category:
Share on facebook
Share on twitter
Share on linkedin
Share on facebook
Share on twitter
Share on linkedin

LED Matrix – Serial Interface – Red/Green/Blue – Sparkfun COM-00760

This is a large sized RGB LED Matrix with a backpack that has been designed to take SPI serial input and display any graphics you pass it. All the refreshing and communication control is taken care of by the backpack. It’s even reprogrammable! 7 software selectable colors are available!

Unit comes with a Red/Green/Blue LED Matrix assembled with a RGB Matrix Backpack Controller.

LED Matrix Features

  • 2.38×2.38″ square
  • Max width of backpack including connector pins – 1.1″
  • Schematic

Example Arduino code for LED Matrix

//Example_RGBMatrix.ino
//By: Ryan Owens @ SparkFun Electronics
// 
//modified 27 Oct 2014
//by Bobby Chan @ SparkFun Electronics

// This is example code to output an array to 
// the RGB Serial Backpack Matrix and set the position of
// a daisy chained matrix.

//Define the "Normal" Colors
#define BLACK   0x00
#define RED     0xE0
#define GREEN   0x1C
#define BLUE    0x03
#define YELLOW  RED|GREEN
#define ORANGE  0xFC
#define MAGENTA RED|BLUE
#define TEAL    BLUE|GREEN
#define WHITE   (RED|GREEN|BLUE)-0xA0

//Define the SPI Pin Numbers
#define SLAVESELECT 10//ss
#define DATAOUT     11//MOSI
#define DATAIN      12//MISO 
#define SPICLOCK    13//sck

//Define final array to output to LED Matrices (maximum of 8 matrices daisy chained)
//Ex.) if you have 1 matrix, you have an array of 64=64*1
//     if you have 2 matrices, you have an array of 128=64*2
//     if you have 3 matrices, you have an array of 194=64*3
const int num_matrix = 1; //define number of daisy chained matrices
char color_buffer[64*num_matrix]; //final array

//array to clear 1 matrix
char blank[]={
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK,
  BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK, BLACK
};

//set LED Matrix Value for daisy chained LED Matrices
//maximum of 8 daisy chained LED Matrices
void set_matrix(){
  digitalWrite(SLAVESELECT, LOW); //Activate the RGB Matrix
  spi_transfer(0x25); //command character % == 0x25
  spi_transfer(0x02); //set LED matrix to position in daisy chain, must be between 0x01-0x08
  digitalWrite(SLAVESELECT, HIGH); //Deactivate the RGB Matrix
}

int p = 0; //dot position
int xMAX = 8;//max number column in 1 subset
int yMAX = 8;//max number row in 1 subset

void clear_buffer(){
  //start clearing array moving down rows
  for(int y=0; y<yMAX; y++){
    //clear array from the highest subset in daisy chained array
    for(int i=num_matrix; i>0; i--){
      //clear array from right to left
      for(int x=0; x<xMAX; x++){
        //current position that is being cleared
        p = (yMAX*y) + (x + (i-1)*(xMAX*yMAX));
        //clear by saving what is in the blank sub-array to your final array
        color_buffer[p] = blank[x];
      }
    }
  }
  matrix_write();//write array of colors to matrix
  delay(10);//allow some time for the final matrix to be seen  
}

void color_test(){
  //Load colors into the first row color buffer array. 
  //This will be the array of colors sent to the first RGB matrix.
  color_buffer[0]=BLACK;
  color_buffer[1]=RED;
  color_buffer[2]=GREEN;
  color_buffer[3]=BLUE;
  color_buffer[4]=YELLOW;
  color_buffer[5]=MAGENTA;
  color_buffer[6]=TEAL;
  color_buffer[7]=WHITE;

  matrix_write();//write array of colors to matrix
  delay(100);  //allow some time for the final matrix to be seen  
}

void setup(){  
  //----------SPI BUS SETUP----------
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1);	//Enable SPI HW, Master Mode, divide clock by 16

  //Set the pin modes for the RGB matrix
  pinMode(DATAOUT, OUTPUT);
  pinMode(DATAIN, INPUT);
  pinMode(SPICLOCK,OUTPUT);
  pinMode(SLAVESELECT,OUTPUT);

  //Make sure the RGB matrix is deactivated
  digitalWrite(SLAVESELECT,HIGH); 
  //----------END SPI BUS SETUP----------

  //use this to set a LED Matrix to position in daisy chain
  //set_matrix();

  //make sure buffer is cleared before writing to matrices
  clear_buffer();

  //test colors
  color_test();

  //for debugging
  //Serial.begin(9600);
  //Serial.println("Initializing Matrix");
}

void loop(){

}

//display array on the LED Matrix/daisy chained LED Matrices
void matrix_write(){
  digitalWrite(SLAVESELECT, LOW); //Activate the RGB Matrix
  spi_transfer(0x26); //command char to reset frame index
  digitalWrite(SLAVESELECT, HIGH); //Deactivate the RGB Matrix

  digitalWrite(SLAVESELECT, LOW); //Activate the RGB Matrix
  //Send the color buffer to the RGB Matrix
  delayMicroseconds(500);

  for(int LED=0; LED<(64*num_matrix); LED++){
    spi_transfer(color_buffer[LED]);//send what is in buffer to the matrices
  }
  delayMicroseconds(500);//allow some time for the serial data to be sent 
  digitalWrite(SLAVESELECT, HIGH); //Deactivate the RGB Matrix
}

//Use this command to send a single color value to the RGB matrix.
//NOTE: You must send x number of color values to the RGB matrix
//      before it displays an image!
char spi_transfer(volatile char data){
  SPDR = data;                    // Start the transmission
  while (!(SPSR & (1<<SPIF))){     
    // Wait for the end of the transmission  
  };
  return SPDR;                    // return the received byte
}

Reviews

There are no reviews yet.

Be the first to review “LED Matrix – Serial Interface – Red/Green/Blue (COM-00760)”

You may also like…

Scroll to Top