I've been working on a project for a while, and making progress with it. However, I'm getting some results that I'm not happy with, so I'm looking for guidance.
To give you some background, this is an automotive project. I have many parts of my car's interior that light up which I've converted to RGB LEDS using PIC12F1501 microcontrollers. I can press a button to cycle through preset color mixes. Now I'm working on the big project, which is building digital gauges that will be able to change color to match the rest of the interior.
My original plan was to use the same 12F1501's for the color control, using transistors because of the current loads, and a separate PIC microcontroller with shift registers for the LEDs in the 7 segment displays plus the bar graph portion.
I've gone through several steps of this, getting the microcontroller to count and output the number to the 7 segment displays, plus a representation of the number on a scale with the bar graph LEDs. I've set up my basic display program to make it scaleable for the bar graph, with my test currently using 24 LEDs and 3 shift registers.
I am using common cathode RGB LEDS. On my breadboard, I have a transistor between each of the outputs on the 12F1501 to a power rail, and then the anode of each RGB LED going to the corresponding power rail. On the cathode side, I have a transistor and resistor for each LED coming from the corresponding shift register output.
Here's the problem: I notice color shifting based on how many LEDs are lit, where a lower number of LEDs results in a red bias. I can see the shift happen while more LEDs light up. Is there a better way I should be desiging this? I've been trying to avoice multiplexing because I want the brightest possible output, as this will have a dark lense over it. Do I need to put more transistors on the cathode side? Should I be running a resistor to every color on every LED instead of the common? I'm trying to keep the components as few as I can, because it've already got a high component count.
I'm a novice at this, and I am taking on a project that's probably slightly over my head, but I learn this way.
I'm looking for any and all advise some guru's can give me. Thank you in advance.