Go Down

Topic: PWM over Shift Register Library (For RGB LED's) (Read 14402 times) previous topic - next topic

KnuttyD

Oct 28, 2010, 07:02 pm Last Edit: Oct 29, 2010, 01:04 am by KnuttyD Reason: 1
Hey guys:

Heres the lib I've been working on for a couple of months now (Well... more like a bunch of functions, but I'm working on incorporating it into a class and eventually its own library :p ).

These are a bunch of functions (and a framework) for using PWM over Shift Registers (specificly 74HC595's). The library us used for just general RGB LED's, as that is what it is specifacly set up for. It wouldent take much code, though, to make it work for general PWM tho  ;D. In fact, I'm working on adding this functionality to the library now...

Heres a vidio of it in action:

http://www.youtube.com/watch?v=C3s8qDhUwlo

[media]http://www.youtube.com/watch?v=C3s8qDhUwlo
[/media]

Happy coding!

Heres the souce code: (754 lines, 22667 chars  ;) )
http://drafts.thatcompdude.com/arduino/RGB_led_pwmViaShift2_ver5/RGB_led_pwmViaShift2_ver5.pde

Here are versions 2 - 5. Dont bother using anything older than ver5 tho, there old and VERY pre-alpha quality  :P
http://drafts.thatcompdude.com/arduino/

rocketgeek

That's awesome. I have a couple of PCBs I'm selling on my website (www.logos-electro.com) that use daisy-chained 595s to drive high current outputs. Would you mind if I linked to your code once it's up?

KnuttyD

Quote
That's awesome. I have a couple of PCBs I'm selling on my website (www.logos-electro.com) that use daisy-chained 595s to drive high current outputs. Would you mind if I linked to your code once it's up?


Yea, sure you can. I am working on integrating the code into another one of my projects (which I may or may not make open source), so in the future it /may/ not be open to the public (probably will stay open tho  ;D ). I would love to help you with your project. The code it set up so its not very hard to make it work for just about any PWM (or just basic HIGH/LOW) output to 595's.

mowcius

Well that's freaky.

I think about RGB LEDs and how to run a load of them. Think of shift registers then remember that they aren't PWM...

Less than a minute later... see this thread!

Cool stuff! I will be testing it out!

Mowcius

m.ryandesign

This is a great project, thank you for working on it for the community!

I look forward to learning from your code.

mowcius

Mowcius waits patiently for KnuttyD to return home  :D

KnuttyD

#6
Oct 29, 2010, 01:03 am Last Edit: Oct 29, 2010, 01:14 am by KnuttyD Reason: 1
Quote
This is a great project, thank you for working on it for the community!

I look forward to learning from your code.


Thanks!

Heres the souce code: (754 lines, 22667 chars  ;) )
http://drafts.thatcompdude.com/arduino/RGB_led_pwmViaShift2_ver5/RGB_led_pwmViaShift2_ver5.pde

Here are versions 2 - 5. Dont bother using anything older than ver5 tho, there old and VERY pre-alpha quality  :P
http://drafts.thatcompdude.com/arduino/

m.ryandesign

Huge thanks! It is people like you that keep me learning and experimenting.

I look forward to someday sharing innovations of my own.

Cheers,

-Miles

KnuttyD

More minor fixes in the lib

+Faster ISR
+Clean up variable defs

fujii

Hmm I'm working on some home automation project (lots of PWM controlled LED's included, more than my arduino mega can handle) so I think this is what i'm looking for BUT i never worked with a shift register. I know i can get myself to the point to understand them but a shematic and a sample code would be really awesome. insertbegemotehere-> ::)

Radames

great!!

Could you draw your circuit schematic??
thanks..

defsdoor

#11
Nov 03, 2010, 12:50 pm Last Edit: Nov 03, 2010, 12:51 pm by defsdoor Reason: 1
Any chance you can document or explain the code ?  

I've have a read through and think I see whats going on but would like to be sure.

I'd like to make use of this instead of using tlc5940s (too expensive, hard to get hold of and currently in my prototype flickering madly) but might have to squeeze a few more 74595s into it for my project.  I assume the quantity that it can drive is down to the time taken to shift the data out within each interrupt ?

KnuttyD

Sure, I'll try to get to it soon!

For now, take a look at the ShiftOut() tutorial. the registers are hooked up almost Exactly like they are in the tutorial.

Placement of the LED's on the registers is a little harder, tho  ::). Ill try to get a schematic up soon.

frustro

still have a lot to learn, so forgive my ignorance.  

Are you using common anode or common cathode?
Why?
Do you think that this would work with the other type?

polaris

if it's not too much trouble could you please post the schematic? I'm trying to figure out whether to use this or some tlc940s for my project.

Go Up