Go Down

Topic: 64x16x2 Led grid issues (Read 492 times) previous topic - next topic

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.

gnusci

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

gnusci

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 http://www.embeddedadventures.com/LED_matrix_display_LDP-6416.html 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:

Code: [Select]

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! :)


Go Up