Go Down

Topic: How should I wire (and how do I control) a "A6276EA-T" to a arduino mega??? (Read 1 time) previous topic - next topic

TECH GEEK

How should I wire (and how do I control) a "A6276EA-T" to a arduino mega???
The "A6276EA-T" is a LED Driver with a total of 16 outputs

INFO about "A6276EA-T":

As always... Thanks for posting!!!

retrolefty

Great chip. I used two of them in series connection for a 5x5x5  led cube. Hardware interfacing is pretty simple, you just need three arduino digital outputs, one for clock, data, and latch pins. The intergrated constant current output stages are what really make this chip a component saver for led projects. Here is a the interrupt ISR code I used to shift 32 bits out to the two series connected shift registers upon every 2 millsec interrupt. I used the Mstimer2 library to generate the timing interrupts, so all 5 levels would be resfreshed every 10 millisecs. While I shifted out 32 bits for each level, only 25 were used (5x5 leds per level) as it was easier deal with full unsigned long variable arrays used to hold the pattern data.

Quote
// Start of Interrupt routine for driving a display cube row, all 5 rows (levels) are driven over a 10msec period (5 x 2msec)

void refresh_display() {
if (!updateinprogress) {
 unsigned long shiftdata = active_display[active_row]; // get row data for 25 leds
 unsigned long shiftmask = 1;

 for (byte i = 0; i < 32; i++) {                     // shift 32 bits (only 25 bits are wired up to cube) of data out for the 25 display columns

   if (shiftdata & shiftmask) {
     digitalWrite(dataPin, HIGH);
   }
   else {
     digitalWrite(dataPin, LOW);
   }

   digitalWrite(clockPin, HIGH);                     //  clock each bit into shift register
   digitalWrite(clockPin, LOW);

   shiftmask = shiftmask * 2;       //right shift bit mask one bit
 }

 if (active_row == 0) {
   digitalWrite(row4Pin, LOW);            // turn off row 4 driver if row 0 is now active, this is wrap around case
 }
 else {
   digitalWrite((active_row + 1), LOW);  // turn off driver from prior row update interrupt
 }

 digitalWrite(latchPin, HIGH);           // turn on shift register output pins, column drivers
 digitalWrite(latchPin, LOW);
 digitalWrite((active_row + 2), HIGH);   // turn on active row driver transistor

 // Set next active row number for next timer interrrupt  
 if (active_row >= 4) {  
   active_row = 0;  // wraparound case
   }
 else {
   active_row++;  // increament row number for next interrupt cycle
   }
}
}  // end of ISR code





Lefty

TECH GEEK

As always... Thanks for posting!!!

retrolefty


could u post how to wire one up? (minus the output pins)


I didn't draw a schematic for mind. I just wired it per the below schematic showing wiring the shift registers to a pic processor chip. You can download a pdf of the schematic shown a few pages down in the article.

http://picprojects.org.uk/projects/lc/index.htm#Schematic

Lefty

retrolefty



could u post how to wire one up? (minus the output pins)


I didn't draw a schematic for mine. I just wired it per the below schematic showing wiring the shift registers to a pic processor chip. You can download a pdf of the schematic shown a few pages down in the article.

http://picprojects.org.uk/projects/lc/index.htm#Schematic

Lefty


TECH GEEK

As always... Thanks for posting!!!

retrolefty


is that the same chip?
it has a differant name...


It's a different chip from a different company, but both are identical in function and pin-out wiring.

Lefty

Go Up