Arduino Powered Three Color 8x8 Led Array

Intro: Arduino Powered Three Color 8x8 Led Array

How to connect a three color, as in red, green and blue, 8 column by 8 row LED array to an Arduino.  The model number of the array in use is CRM-2388ARGB-L.  It did not come with any wiring instructions, so I set down with a 9 volt battery and a 1K resistor and figured out how it is wired up.

There are two rows of 16 pins each.  The top row does not have the part number near it.  The bottom row, left most pin, is the closest pin to the part number.  There is also a letter “1” near this pin.  This is what I found the pinout to be.

-----Rows------   ---------------Green-----------------  ------Rows-----
R8  R7  R6  R5  G1  G2  G3  G4  G5  G6  G7  G8  R4  R3  R2  R1
32   31  30   29   28   27   26   25   24   23   22   21  20  19   18   17 
-------------------------------------------------------------------------------
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
         0          0          0          0          0          0          0          0  
-------------------------------------------------------------------------------
1     2    3     4     5    6     7     8    9    10   11   12   13  14   15   16
B1  B2  B3  B4  B5  B6  B7  B8  R1  R2  R3  R4  R5  R6  R7  R8
---------------Blue-----------------   ----------------Red-----------------

Once it is set up on two breadboards I wired up three 74HC595 shift registers with eight 100 ohm resistors each to the red, green and blue array pins.  I was reusing a design that had previously worked for a two color 8 by 8 led array.

For the rows there should have been some row driver transistors, but I directly connected the rows to pins D1-D8 of the Arduino and it worked.  You might get a little more brightness with row driver transistors.

Step 1: The Arduino Sketch to Make It Work.

Here is the code for the Arduino:
//********************************************/
//  Name    : LED 8x8 RGB SR array Driver   
//  Author  : Bob Davis                          
//  Date    : 2 January, 2014                  
//  Version : 1.0                               
//********************************************/
// Assign Pins for the shift registers and Rows
int Row1 = 1;
int Row2 = 2;
int Row3 = 3;
int Row4 = 4;
int Row5 = 5;
int Row6 = 6;
int Row7 = 7;
int Row8 = 8;
int RSerial = 9;
int BSerial = 10;
int GSerial = 11;
int RCLK = 12;
int SCLK = 13;
// Set up arrays, select one of these three things to display

// RGB Flag
//byte Bbitmap [8]={240, 240, 240, 240, 0, 0, 0, 0};
//byte Gbitmap [8]={15, 0, 15, 0, 255, 0, 255, 0};
//byte Rbitmap [8]={0, 15, 0, 15, 0, 255, 0, 255};
// Blue Face
byte Bbitmap [8]={60, 126, 255, 219, 255, 219, 102, 60};
byte Gbitmap [8]={60, 126, 129, 165, 129, 129,   0,  0};
byte Rbitmap [8]={60, 126,   0,  36,   0,  36,  24,  0};
// Red Car
//byte Gbitmap [8]={8, 0, 0, 0, 0, 0, 255, 255};
//byte Bbitmap [8]={255, 255, 255, 131, 0, 0, 0, 0};
//byte Rbitmap [8]={8, 0, 0, 124, 255, 189, 0, 0};
// Set the pins to output to the array
void setup() {
  pinMode(Row1, OUTPUT);
  pinMode(Row2, OUTPUT);
  pinMode(Row3, OUTPUT);
  pinMode(Row4, OUTPUT);
  pinMode(Row5, OUTPUT);
  pinMode(Row6, OUTPUT);
  pinMode(Row7, OUTPUT);
  pinMode(Row8, OUTPUT);
  pinMode(BSerial, OUTPUT);
  pinMode(GSerial, OUTPUT);
  pinMode(RSerial, OUTPUT);
  pinMode(RCLK, OUTPUT);
  pinMode(SCLK, OUTPUT);
}
void loop() {
  for (int row = 0; row <8; row++){
    //turn everything off
    digitalWrite (Row1, LOW);
    digitalWrite (Row2, LOW);
    digitalWrite (Row3, LOW);
    digitalWrite (Row4, LOW);
    digitalWrite (Row5, LOW);
    digitalWrite (Row6, LOW);
    digitalWrite (Row7, LOW);
    digitalWrite (Row8, LOW);
    // set up the data in the shift registers
    for (int shiftbit = 0; shiftbit <8; shiftbit++){
      digitalWrite(BSerial, HIGH);
      digitalWrite(GSerial, HIGH);
      digitalWrite(RSerial, HIGH);
      if bitRead(Bbitmap[row],shiftbit) digitalWrite(BSerial, LOW);
      if bitRead(Gbitmap[row],shiftbit) digitalWrite(GSerial, LOW);
      if bitRead(Rbitmap[row],shiftbit) digitalWrite(RSerial, LOW);
      digitalWrite(SCLK, LOW);
      digitalWrite(SCLK, HIGH);
      }
    //latch the data
    digitalWrite(RCLK, HIGH);
    digitalWrite(RCLK, LOW); 
    // turn on the associated row
    if (row == 0) digitalWrite (Row1, HIGH);
    if (row == 1) digitalWrite (Row2, HIGH); 
    if (row == 2) digitalWrite (Row3, HIGH); 
    if (row == 3) digitalWrite (Row4, HIGH); 
    if (row == 4) digitalWrite (Row5, HIGH); 
    if (row == 5) digitalWrite (Row6, HIGH); 
    if (row == 6) digitalWrite (Row7, HIGH); 
    if (row == 7) digitalWrite (Row8, HIGH);
    delay(2);  
}   }

Share

    Recommendations

    • Fix It! Contest

      Fix It! Contest
    • Furniture Contest 2018

      Furniture Contest 2018
    • Metalworking Contest

      Metalworking Contest

    8 Discussions

    0
    None
    JānisS27

    1 year ago

    Could you please explain your code?

    if bitRead(Bbitmap[row],shiftbit) digitalWrite(BSerial, LOW);
    if bitRead(Gbitmap[row],shiftbit) digitalWrite(GSerial, LOW);
    if bitRead(Rbitmap[row],shiftbit) digitalWrite(RSerial, LOW);

    Does not make any sense.

    1 reply
    0
    None
    bobdavis321JānisS27

    Reply 1 year ago

    If you read the blue bit map offset by row and shiftbit to be true then set the blue serial bit to low.....

    0
    None
    NickelW

    2 years ago

    Hi Bob, there is a capacitor in the circuit board. How is it connected n what is it*s capacitance? As I cannot locate it in your circuit figure.

    1 reply
    0
    None
    bobdavis321NickelW

    Reply 2 years ago

    Its a filter capacitor from 5v to ground. The value is not critical, like 100uF at 10 volts.

    0
    None
    FranciscoC28

    2 years ago

    Hi, how are you? Thanks to teach using RGB matrix, however, I have a question. as you can do to occupy 4 Integrated 74HC595N because I want to do with an Arduino Nano, and has many connection pins. Beforehand thank you very much.

    1 reply
    0
    None
    bobdavis321FranciscoC28

    Reply 2 years ago

    I do not understand the question. The Nano has more pins. You can easily change the pin numbers that are used.

    0
    None
    bobdavis321rgehan

    Reply 4 years ago on Introduction

    I sent them a copy of my picture as they sold me the 8x8 LED array and wanted to see what could be done with it. I think I also put the picture on my blog. Is that a problem?