4x6 LED Matrix with 74HC595 Need_Help!

So as one of my first Arduino projects i decided to create a LED Matrix display, instead of buying one. I also decided to use the 74HC595 to minize the # of DigitalPins used (multiplexing).

So my rows are cathodes and the columns the Anodes, and i have two seperate 74HC595 running the rows and columns.

Both the 74HC595 share the same clockPin and latchPin and have seperate DataPins.

I wired the 74HC595 similarly to the ShiftOut example at Arduino.cc except that the 74HC595 are in no way connected to each other except for sharing the clock and latch pin. The 74HC595 that controls the rows (cathode) seems to work fine but whenever i try to use the column (anode) the 74HC595 spits out one of two outputs, either all outputs high or all low, so i not able to control individual leds for some reason, i think it could be the code that i used which was slightly modified from the ShiftOut example the code sample 1.1 HelloWorld.

I tried switching out the 74HC595 thinking it might be faulty, but i get the same result.

Could someone point me in the right direction, doees anyone know what im doing wrong???

I've tried following other tutorials but, most of them are at Instructables.com which you need to pay to see, and others are incomplete or undocumented. :'(


sounds like a software problem, but post code and a wiring diagram please

(ps you dont need to pay for instructables, you need to pay for instructables sans ad's and plus a couple extra features you would never use anyway, go in make a login simple)

Heres the code, i used the example from the ShiftOut HelloWorld 1.1 code sample.

I'll draw up the diagram shortly.

//  Name    : shiftOutCode, Hello World                                
//  Author  : Carlyn Maw,Tom Igoe, David A. Mellis 
//  Date    : 25 Oct, 2006    
//  Modified: 23 Mar 2010                                 
//  Version : 2.0                                             
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                           

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595

int RowDataPin = 10;
int ColumnDataPin = 11;

void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(ColumnDataPin, OUTPUT);
  pinMode(RowDataPin, OUTPUT);

void loop() {
  // count from 0 to 255 and display the number 
  // on the LEDs
  col = 1;
  row = 14;
    // take the latchPin low so 
    // the LEDs don't change while you're sending in bits:
    digitalWrite(latchPin, LOW);
    // shift out the bits:
    shiftOut(ColDataPin, clockPin, MSBFIRST, col);  
    shiftOut(RowDataPin, clockPin, MSBFIRST, row);
    //take the latch pin high so the LEDs will light up:
    digitalWrite(latchPin, HIGH);
    // pause before next value:

Well this is kind of "bad thinking" :-) As you have connected the clocklines the SHIFTOUT of the rows will destroy all the painstakingly in-shifted bits of the col-register.

However there is a most simple work around! Just daisy-chain the data lines and SHIFTOUT the 16 bits for the row and col register one ofter the other to that single line. You will also gain another free Arduino pin!

I'll try that now.

ok, it seems to be working know, i can control the Row and Col, now i just need to figure which 16 data to send it to display what i want.

Remember that the cathode has to get a 0 and the anode a 1 so it shines But I think you had this already ("row=14") :-)