How to drive 80 RGB Leds separately?

Hallo everyone,

my question is: how can i control 80 rgb leds separately with my arduino uno deveice? I already know that i need some kind of shift register, but i'm not sure about the wiring. And an additional problem is the limitation of the pwm channels (arduino uno does only have 6 of them). Is it possible to realize? Do I need arduino mega in this case?

Thank you

Here is a project very close to yours:

Thank you for quick reply. To be honest the project is close to my. thats true. But in your link there is a ready platform which you can solder and programm on your own.

At the page you gave there was a link about the how to make it -> Page 9

Uptown:
http://s3.amazonaws.com/evilmadscience/KitInstrux/MeggyJrInstrux_Sm.pdf

As far as i understood they use 3 x Atmega 168 microcontroller

I just need a kind of shift register ( without additional parts ) for the huge number of rgb leds (80 and more). if somebody has an idea how to do this with only one microcontroller (using only Arduino uno as a master with a lot of slaves --> shift registers), a scheme maybe?

As far as i understood they use 3 x Atmega 168 microcontroller

No, they use the STP16DP05B1R LED drivers (and one ATmega168).

http://arduino.cc/playground/Main/InterfacingWithHardware#LED

To Florinc

I would keep the hardware as simple as possible. In my case i need to drive 80 pins for the red, green and blue color. That are 240 leds total.

So I have to wire this chip 6 times behind each other only to control the red color. right?

scheme

| Arduino |
| |
| |
| |(PWM channel)--> to 16 bit chip ->to 16 bit chip ->to 16 bit chip ->to 16 bit chip ->to 16 bit chip ->to 16 bit chip -> control of 80 red leds

Does it works with pwm?

To Magician
thank you Magician for the link. There are a lot of solution. But I'm not genius I doubt about the wiring of al those 240 separate leds. In your link there is a one interesting method of controlling, using a TLC5940, a 16 bit chip. could I solve my problem by attaching this chip six time behind each other to provide a single channel for every led? and this for red green an blue?

Assuming a 5 (rows) x16 (columns) RGB LED matrix, you can use 3 chained 16-bit shift registers for columns and 5 transistors for the rows.
This is the schematic for Meggy Jr RGB:

Does it works with pwn?

Yes.

florinc:
Assuming a 5 (rows) x16 (columns) RGB LED matrix, you can use 3 chained 16-bit shift registers for columns and 5 transistors for the rows.

is it fast enough to renew approx. 25 times a second (25 Hertz)?

have you a wiring scheme? its a bit difficult to realize your suggest. thanks a lot!!!

is it fast enough to renew approx. 25 times a second (25 Hertz)?

Yes.
ClockTHREE (Wise time with Arduino: ClockTHREE v2) was built based on the same schematic, and it has 16x10 RGB LEDs.

that is close to my idea. The negative aspect is, it's a board.

Let me explain what I thought about. I though 16 rgb led build the first circle, then there come the next 16 leds. this creates 5 circles á 16 leds
https://docs.google.com/open?id=0B4lnJ_IJ9FMNc0Z1NHVLQU9mMTQ

so in this case i can't use a ready made shield, do you know how can i wire it?

You can still wire the RGB LEDs in an array of 5x16, but arrange them physically in circles.

in case I will do it on my own: Just correct me if i understood it right.

i connect to some pins of arduino a 16- bit-chip and to some other a 8-bit-chip ( but i use only 5 of 8 outputs). this lead to a 16 x 8 matrix (controlled by using I2C or SPI). right?

what i didn't understand is how can I control each color in my matrix, please explain.

p.s. in your link there is no concrete sketch about the wiring

There is one more link in my favorite: LED Cylinder Schematic, instructions, even PCB!

"magician " thanks this is good

You are welcome. I like it too, keep in bookmarks for a year. :slight_smile:

thanks all who paid attention till now for my little project.

I thought a lot about it and I had an interesting idea.

I create a 16x16 matrix (by using a 4 x 8-bit chips 74HC595). 80 channels I use for each color, so totaly use 240 of 256 channels. I hope this should keep my project simple and clear to overview.

Is it possible?

I'm also doubting how can I communicate with all them at same time.

At this page

I found the way of connecting, see picture, but there is only place for the one spi device.


how can I manage it?

could be this the solution to my problem ?

https://docs.google.com/open?id=0B4lnJ_IJ9FMNRndkWjExTVFlUUE (Arduino cook book )

I create a 16x16 matrix (by using a 4 x 8-bit chips 74HC595). 80 channels I use for each color, so totaly use 240 of 256 channels. I hope this should keep my project simple and clear to overview.

Is it possible?

No, multiplexing with such high (16) ratio would make brightness of display really low. And you can't multiplex RGB led's in this manner, as there is only 1 common pin (anode or cathode) for 3 colors, so ratio 1:3 should be observed.
80 : 3, as it was advised somewhere in the beginning of this topic, IMHO, the optimal value between soldering/wiring workload and brightness.

10 IC 74HC595 plus three transistors.

I just finished my new (toy) project with 9 74HC595, only I have smaller number of leds - 24 strips, there is no multiplexing for color, just 1 linear array so I get maximum brightness level from leds. Video clips still uploading to youtube.
http://coolarduino.wordpress.com/2012/06/21/tears-of-rainbow/

No, multiplexing with such high (16) ratio would make brightness of display really low. And you can't multiplex RGB led's in this manner, as there is only 1 common pin (anode or cathode) for 3 colors, so ratio 1:3 should be observed.
80 : 3, as it was advised somewhere in the beginning of this topic, IMHO, the optimal value between soldering/wiring workload and brightness.

Magician could you explain me the ratio and brightness you refered to in your post.

You also spoke about

10 IC 74HC595 plus three transistors.

How should I image / realize this?

When you organize LED in matrix configuration ( to save on hardware/ and assembly time), you "lighting-up" one column of matrix at a time. Periodically "scanning" every column, (refresh rate ~60 Hz) all LED's will have a chance to lights-up. But there is nothing for free, as "lighting" time of each column getting shorter T = 1 / N, where N number of column, brightness goes down directly proportional to this coefficient.
To fix it you can "bump-up" current inside time-slot, but there is a limits, pulse current to DC ratio can't be more than ~5-8

edited: after searching on google , ~ 2-3

, and even less for high power leds. So matrix size couldn't be extended above 8 w/o noticeable losses in brightness level.

Quote
10 IC 74HC595 plus three transistors.
How should I image / realize this?

You connecting all LEDs common pins to 74HC595 pins, 10 IC = 8 x 10 = 80 pins.
All red pin connected together and goes to transistor. Same with green and blue.
In software you selecting "color" than outputing "brightness" train for all 80 LEDs. There would be 3 time slot, so you better to "bump-up " a current x3 times to get full luminosity of display.
I missed resistors, common anodes/cathodes, PNP/NPN etc as it all depents on part number you select for LED