Two years ago I had the problem that the candles in my hallowe'en pumpkins would blow out, and kids would think that I was done giving out candy for the night. (It was a blustery day.) So last year I decided to make a flickering pumpkin light so that at least one pumpkin would always be lit. I made with quickly with a Teensy++ 2.0 I had lying around. This year I decided that was overkill and converted it to use an MSP430 I had lying around instead. Since there's extra I/O pins, why not add an RGB LED too, eh?
Components
1×
MSP430
Evaluation, Demonstration Kits, Boards and Modules / Evaluation Kits, Boards and Modules
One issue I had with the light in its current state was that the "orange" LEDs were much dimmer than the RGB LED, so the flicker wasn't as noticeable as I wanted. The other issue I had was that the RGB LED seemed out of balance. Red was too bright, and green was too dim. The cyan looked too blue, and the yellow looked more like orange. So I decided to adjust the various brightnesses using different resistors.
I started by cleaning up my breadboard a bit. I routed all the digital lines to one side, put the LEDs on the other side, grounding them all on the rail, and then used the resistors to jump the columns. Unfortunately, I was unable to find the packaging that came with my "orange" LEDs, so I don't know what voltage they can handle. (I quotate the "orange" because I think they are really red LEDs in an orange lens.) I only supply 3V to the controller, and with some experimentation it seems as though those LEDs take 3V no problem. So I just pulled out those resistors and now the flickering is much brighter.
I then set off to balance the RGB LED. First I make-shifted a diffuser. The discarded nip from a calking tube seemed to work well. then I just played with various resistors until I found a combination that seemed balanced. I ended up using 260 Ohms for red, 180 Ohms for green, and 220 Ohms for blue.
One issue I still have, that maybe I don't fix, is that the flickering orange LEDs make the RGB LED flicker too. So to balance the RGB LED, I needed to pull the wires out of the orange LEDs. Otherwise I wouldn't get even illumination. I reconnected the orange LED signal lines once the RGB LED was balanced. I suspect the issue is current. I probably don't have enough current to supply a constant power to the RGB led when the orange LEDs are flickering. I thought maybe I could smooth out the power to RGB LED supply lines with a capacitor, but that didn't seem to work. I tried various Faraday values, but the LEDs wouldn't illuminate with a cap in series. Maybe parallel is the correct way to wire it? My analog electronics skills are obviously close to zero. I want to fix this for education purposes, and because I'm a perfectionist that way; but even if I did I would probably not implement the fix in the final version because there isn't much room in my final project enclosure for the extra parts.
I started last year with a Teensy++2.0, which was overkill for such a simple project, but it was really fast to get it up and going with the Arduino IDE and Hallowe'en was fast approaching. The one advantage of using the Teensy was that I could PWM fade from one colour on the RGB LED to another.
This year I converted it to use an MSP430. This meant that I couldn't PWM fade between colours anymore, but that's not a big loss. The launchpad comes with two MSP430 chips, the better of which was in the dev board. I plan on swapping out the better controller with the less powerful one before I'm done.
For next year, I want to fit the microcontroller and other parts into the batter case to make is self enclosed.
I was able to PWM one pin easily with a timer. It seemed possible to do two pins with a second timer, but I didn't seem possible to PWM all three. But I am pretty new to MSP430 and micro-controllers in general.