confused about button pad tri-color LED driving

I am curious about the 4x4 button pad and have been thinking about the circuit for a while, but I am confused about a few things.

How is each LED brightness level varied individually? Are they all able to fade to different colors at the same time or can only 1 be fading at any given time? I see they are connected to two shift registers and there isn’t anything connected or being driven by PWM, so I’m not sure how the brightness levels could be varied or a 24 bit color scale could be achieved.

I am talking about the schematic for “Button Pad Controller SPI”. I tried to link the URL but it said it had a forbidden word in it.

I am not a beginner to PCB design or coding, but I just don’t understand how the varying brightness levels are achieved without an obvious flicker or with any degree of accuracy. It would seem that each column is activated sequentially and the shift registers are updated, but there are only 2 possible states for the outputs of those shift registers - on or off. Is the shift register enable being strobed to achieve varying brightness levels? I would understand if each color was multiplexed and being driven by a PWM which could vary depending on which pixel was selected, but that doesn’t seem to be the case here.

The description of this device says it has a 24 bit color scheme like I said before, but I don’t see how that is possible. I do understand how each tri-color LED is turned on individually, but what mechanism is controlling the color scale of each individual LED inside each tri-color LED?

One other thing - the duty cycle of each LED is automatically limited to 25% or less it would seem. I would think this severely limits the maximum brightness of each button. Am I correct? This is assuming COLUMNn where n=1 to 4 is being sequentially enabled which is the only way this makes sense to me.

hello,

I can’t answer your question, but I have a related one:

I’m a midibox.org member/coder/builder and recently ordered soft buttons & PCB’s to use as an interface for my sequencer project.

I use a button-led-matrix software driver (4 rows / select lines), the scan frequency is 1kHz.

I noticed a big difference in brightnes between red and green/blue color. The LED’s are driven by 5V shift register outputs, after reading the datashit (the specs, the other word is forbidden :lol:) of the RGB-LED, I tried to figure out the proper output resistor values to get a good brightnes balance between the colors. For the green & blue LED’s I use 1K resistors now, this results in 2-3 mA current, which is (surprisingly) enough to reach the desired brightnes.

With the red ones, even 100R gives me not enough current to compete with green/blue and get good color mixes. I ended up using 50R, which results in a current of ca. 33mA, which is 3mA above the max. peak current spec’ed. I wonder a bit, because the luminace of the red LED should be not so much lower than for the blue color:

Luminosity (RGB): (800, 4000, 900)mcd

I guess that the silicon of the buttons has better properties to conduct blue/green in relation to red light?

How do you sparkfun guys implement this in your applications? I must admit that I didn’t use the RGB led’s from sparkfun so far, but I think there should be not so much difference between the different supliers?

Any help on this issue is very welcome.

thanks,

this (name, short)

I found that to get better mixing with the tri-color LED that came with my Inventor’s Kit, I had to use the following current limiting resistors:

red: 220 Ohms

green: 4700 Ohms

blue: 2200 Ohms

Most tri-color LEDs will need similar kinds of adjustments, but the requirements for specific LEDs may vary. The easiest way to determine the needed values is to measure the LED output with a sensor like the Texas Instruments OPT3001, which has a light sensitivity curve that is almost identical to the human eye.