Go Down

Topic: 64x16x2 Led grid issues (Read 510 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy