I am wanting to make a board with about 80 LED's for my son's room. The LEDs must brighten and dim. I am aiming to make it look like the stars at night with the LEDs mounted on a black perspex plate, while also acting as a sort on night light for him, thus at all time there must be a reasonable number of LEDs on at a reasonable brightness. I was thinking of using about 8 groups of 10 LEDs each, and the perhaps controlling the brightness of the groups of LED's as follows:
Group 1: Sinusoidal brightening and dimming of white LEDs
Group 2: Inverse of group1
Group 3: Sinusoidal brightning and dimming of white LED's, but at at a different rate to Group 1
Group 4: Inverse of Group3
Group 5: short flashes say 100ms or shorter
Group 6: Permanently on
Group 7: Sinusoidal brightening and dimming of orange LEDs at a very slow frequency
Group 8: Inverse of Group 7

Where do I start. I have a fair range of PIC's in the 12F and 16F series, but have no idea how to begin to implement this - I guess I could start in Excel, and trying to figure out from there which groups to turn on when.

I only write in assembler and don't have tools to write in high level languages...


8 Years
Discussion Span
Last Post by Colin Mac

There's free versions of compilers for writing in other languages like C and Basic which come with libraries. If you used a few PICs, this wouldn't be difficult I wouldn't think. PICs can come with PWM outputs you could use. You could parallel the leds and switch a mosfet to fade them on and off.
You could look into methods like Charlieplexing to control as many leds as possible with the one pic.


Hello Colin
Thanks for your reply. Had never heard of Charliplexing but a quick Google sorted that. What I am really after is how to implement numerous PWM outputs in a single loop. In hindsight maybe I should just use a couple of 12F675's, one for each different group? From what I have read on the data sheets, the smaller pics (i.e. 16Fxxx) only have one PWM module, with straight and inverted outputs?
It would be a nice challenge to try to code multiple PWM's in one big loop, but if I can't get that right I'll use 3 or 4 12F675's

Thanks for your reply


Some 18F's have multiple PWM outputs.

I'm sure you could also implement it in software using interrupts. If you can generate PWM on
one pin, you can do the inverse on another.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.