64x16x2 Led grid issues

Not sure if this belongs under displays or LEDs!

I have a 64x16x2 LED grid (from embeddedadventures) which works on a 9 pin interface: 4 address, address latch, r/g shift, shift latch and enable and am having some issues addressing the individual rows.
I was wondering if anyone had played around with one of these.

Add a link or image, it is very hard to help you with the information provided.

Yes, sorry that wasn't useful.

I have a 64 x 16 x 2 colour LED grid from embedded adventures, but finding an old link here it seems like it is similar to others. The board is here LED Matrix Display - LDP-6416 where it also has the data sheet.

I originally tried to get this to work on a raspberry pi, but couldn't get anything out of it. With the arduino, I can get some results but not anything useful.

the 64 columns are address with a shift register, with active low red and green pins (on 9 & 10), and a shift (8) latching them in.
The 16 rows are directly addressed with a 4 bit address, and an active low address latch. Finally there is an active low enable pin, used to disable the display when latching the address (and to reduce the brightness / current used by the device - obviously a complete 128 row of leds takes a bit of current).

There seems to be some kind of logic on there to ensure you are driving the address properly, in that if you don't address 0 and 1, nothing works, but with a loop similar to:

int rows[] = {0,1, 3, 5, 6, 7, 8, 12, 14, 15};
int maxIndex = 10;
byte ADDR_LATCH_ON = 

void loop()
{
	for(int rowIndex = 0; rowIndex < maxIndex; rowIndex++)
	{
		digitalWrite(ENABLE, HIGH);                          //  Disable enable pin (turn display off)
		int row = rows[rowIndex];

		for(int col = 0; y < 64; y++) 
		{	
			byte portb = B00000110; // Default to red and green off and clock low
			if((row % 2) != 0)
			{
				portb &= B111111011;
			}
			if((row % 4) != 0)
			{
				portb &= B111111101;
			}
			PORTB = portb;
			delayMicroseconds(10); 	
			PORTB |= B00000001; 	// Shift clock HIGH
		}

		digitalWrite(LATCH, HIGH);
		digitalWrite(5, row & 8 ? HIGH : LOW);
		digitalWrite(4, row & 4 ? HIGH : LOW);
		digitalWrite(3, row & 2 ? HIGH : LOW);
		digitalWrite(2, row & 1 ? HIGH : LOW);
		digitalWrite(LATCH, LOW);
		digitalWrite(ENABLE, LOW);                          //  enable display (turn display back on)
	}
}

which in my book should give me nice rows of black orange red green. I did once get that with a different application but although it is clearly reading the latch information (ie, only the rows I specified light), I now am just getting all red.

I have checked wiring, and that the signals are appearing with a scope, but I really can't see what I am doing wrong on something that should be quite simple.
One thing I really can't seem to do is get any kind of x movement on the display.

Hopefully i have done something glaringly wrong that someone can point out to me! :slight_smile: