Jump to content
Corsair Community

HowTo: HD120 RGB Custom Lighting Controller


Recommended Posts

How do you make effects like some of the ones in the video? One that I really liked was the one where one dot goes in a figure 8 style around all three fans. I have been messing with it but havent been able to figure out how to do single led effects like that.
Link to comment
Share on other sites

  • Replies 271
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

I'm working on new firmware for fan chaining and grouping. In the meantime, that was done using live software control and global sync mode on the existing firmware.

 

That uses Global Sync mode with twice the speed of the fans, a single spinner is started clockwise with a rotation offset, and when the next sync beat occurs the computer sends "turn that fan's lights off and turn on this other one counterclockwise with this offset". Then another sync and it's clockwise again on the next fan for two sync beats, then transferred to the second fan and so on.

 

Looking for the details...

Link to comment
Share on other sites

Okay, yup. Not cleaned up, so the code is mixed and messy (And running the thing to find it while working on the controller firmware crashed the IDE and lost about four hours of coding work. T^T)

 

led '^0,6,126'

led '^2.0.9^2.1.0^2.2.0^2.3.0^3.0.9^3.1.0^3.2.0^3.3.0^1.0=1 ^1.1=160 ^1.2=0 ^1.3=0 ^1.4=0 ^1.5=6 ^1.6=21 ^1.7=63'

ledwait

led '^1.0.10^1.1.21^1.2.0^1.3.0 ^2.0=1 ^2.1=160 ^2.2=1 ^2.3=0 ^2.4=0 ^2.5=0 ^2.6=21 ^2.7=63'

ledwait

led '^2.0.10^2.1.21^2.2.0^2.3.0 ^3.0=1 ^3.1=160 ^3.2=0 ^3.3=0 ^3.4=0 ^3.5=6 ^3.6=21 ^3.7=63'

ledwait

ledwait

led '^3.0.10^3.1.21^3.2.0^3.3.0 ^2.0=1 ^2.1=160 ^2.2=1 ^2.3=0 ^2.4=0 ^2.5=0 ^2.6=21 ^2.7=63'

ledwait

led '^2.0.10^2.1.21^2.2.0^2.3.0 ^1.0=1 ^1.1=160 ^1.2=0 ^1.3=0 ^1.4=0 ^1.5=6 ^1.6=21 ^1.7=63'

ledwait

ledwait

led '^1.0.10^1.1.21^1.2.0^1.3.0 ^2.0=1 ^2.1=160 ^2.2=1 ^2.3=0 ^2.4=0 ^2.5=0 ^2.6=21 ^2.7=63'

ledwait

 

The above creates the eight-beat single-color figure eight pattern that stops after fan 2.

The "led" command just sends the data after it to the serial port and "ledwait" waits for one character from the serial port:

 

#!/usr/bin/bash

led () { echo $1 > /dev/ttyS6; }

ledwait () { read -n 1 < /dev/ttyS6; }

 

It can be looped at an appropriate location to do so perpetually

Link to comment
Share on other sites

Hello, thanks Charixfox for your nice work.

 

After some tries I decided to develop a small windows software to send settings easily, atm is rough and only converts and sends selected settings to Charixfox's firmware (and ofc more work is needed to have a decent version). In a future version I'm planning to allow presets creation and configure the software to auto switch modes in a timed manner.

 

EDIT: I forgot a piece of message :D: I don't have any stripes, so at the moment only Fans are supported.

Edited by kubdotnet
Link to comment
Share on other sites

Hello, thanks Charixfox for your nice work.

 

After some tries I decided to develop a small windows software to send settings easily, atm is rough and only converts and sends selected settings to Charixfox's firmware (and ofc more work is needed to have a decent version). In a future version I'm planning to allow presets creation and configure the software to auto switch modes in a timed manner.

 

EDIT: I forgot a piece of message :D: I don't have any stripes, so at the moment only Fans are supported.

 

What is it coded in? Is it on a Git repository? Sometimes more coders makes things easier. I didn't get past the basic trying to design the UI on mine.

 

I was considering doing something along the lines of sliders for the eight settings for each fan and changing the range limits and tick granularity based on the mode and other settings in place.

Link to comment
Share on other sites

What is it coded in? Is it on a Git repository? Sometimes more coders makes things easier. I didn't get past the basic trying to design the UI on mine.

 

I was considering doing something along the lines of sliders for the eight settings for each fan and changing the range limits and tick granularity based on the mode and other settings in place.

 

It's a WPF application written in C#; atm everything is on my local disks, I'll put everything on github later.

 

Have attached some screenshots of what I've done (more is needed to reach release state :winking:).

HueShift.jpg.c804bf8a35082f7c7cf5ad2a6b46a7f3.jpg

SingleSpinner.jpg.fff32e3ab47eb6c75e2c48055ebd4480.jpg

ui.thumb.jpg.fc91f94907693e8aa37b4baf7906e831.jpg

Link to comment
Share on other sites

It's a WPF application written in C#; atm everything is on my local disks, I'll put everything on github later.

 

Have attached some screenshots of what I've done (more is needed to reach release state :winking:).

 

Yay! Not-WinForms. ^.^

 

That's an excellent start though. More friendly UI than what I was tinkering with. I see where there are some things to do (like 'move stage to live' XD otherwise Stage does nothing at all). I see you skipped Fade to Black, which makes sense. That's a specialty thing more useful for realtime control. And I suppose Set RGB Color is boring, but it is the only way to control anything other than the Hue with full saturation and value. So can't get white without it, or other subtle things that are not rainbow doom.

 

What's your opinion on ticked sliders and updating on slider change for realtime feedback? Or within reasonable limits. Wait for it to be stable for 500ms before updating for example. The sliders can have extra data related (Like hue charts) or the option to have ticks locked to fan-divisor or mode-based divisor values

 

When you GitHub it, I'll be happy to contribute if I can. I tend to dislike asking people to do things if I'm not willing to try to do it myself, even if I suck at it. ^.^;

Link to comment
Share on other sites

Yay! Not-WinForms. ^.^

 

That's an excellent start though. More friendly UI than what I was tinkering with. I see where there are some things to do (like 'move stage to live' XD otherwise Stage does nothing at all). I see you skipped Fade to Black, which makes sense. That's a specialty thing more useful for realtime control. And I suppose Set RGB Color is boring, but it is the only way to control anything other than the Hue with full saturation and value. So can't get white without it, or other subtle things that are not rainbow doom.

 

What's your opinion on ticked sliders and updating on slider change for realtime feedback? Or within reasonable limits. Wait for it to be stable for 500ms before updating for example. The sliders can have extra data related (Like hue charts) or the option to have ticks locked to fan-divisor or mode-based divisor values

 

When you GitHub it, I'll be happy to contribute if I can. I tend to dislike asking people to do things if I'm not willing to try to do it myself, even if I suck at it. ^.^;

 

I plan to introduce color-pickers for HUE related values.

 

Updating fans in real-time requires a bit of changes in the component that communicates with the board and the objects behind the UI; atm communication with the board is opened and closed each time, real-time updates requires communication always opened. Could be a future feature.

 

Fade-to-black and RGB modes are missing because I was out-of-time :biggrin:, they're waiting on my backlog!

Link to comment
Share on other sites

I plan to introduce color-pickers for HUE related values.

 

Updating fans in real-time requires a bit of changes in the component that communicates with the board and the objects behind the UI; atm communication with the board is opened and closed each time, real-time updates requires communication always opened. Could be a future feature.

 

Fade-to-black and RGB modes are missing because I was out-of-time :biggrin:, they're waiting on my backlog!

 

Color Pickers? I was just thinking a hue bar above a slider and maybe a mapped block displaying the result. ^.^

 

What's the latency on opening a port? I mean, my bash code opened to send and then closed, then opened to listen until it got a tick and then closed, then re-opened to send. That's using just basic Windows filesystem node mapping of the serial port too. I'd expect that to be just as fast if not faster in code-behind.

 

Beyond that, yeah, I know how time is. Even better, lost many hours of firmware coding because I forgot to save often enough (read: At all) before the IDE crashed. I was getting fan groupings and multi-fan patterns worked out.

 

Well, let me know when it's on Github and keep us up to date on things :)

Link to comment
Share on other sites

Been lurking in here for a while now. Learned a little about LED's from this thread, a little about HD120's (ok a lot about HD120's) and even more about arduino. Thanks for all your efforts charixfox.

 

Corsair recently released LL series fans that look pretty cool with the extra 4 leds in the center. Might not be too much effort if the extra 4 lights were addressed as an additional loop per fan as Corsair seems to have done.

 

Even though I just spent a fair amount of money and effort getting six HD fans working, I'll most likely end up grabbing the LL fans soon. Do you think you might add support for these in the future? If there's anything I could do, if you choose to enhance the firmware. I'd be glad to help in anyway I could.

 

Thanks again for a great thread.

Edited by DevEntropy
Link to comment
Share on other sites

I found some hours and went ahead with the job.

 

progress report:

 

- changed UI

- added settings panel

- added hue bar to set color

- every effect settings is now saved when applied to the fan and loaded on the next opening

- new icon

- minor fixes

 

I feel GitHub closer Charixfox ;):

857190530_newui.png.65a42ba22c5fa849c45469726a2ee63f.png

settings.png.1b5fb4a4da28b079f67fa7af3d2943f9.png

Icon.png.33f9523706c1389599c538d09450f7f9.png

Edited by kubdotnet
Link to comment
Share on other sites

Been lurking in here for a while now. Learned a little about LED's from this thread, a little about HD120's (ok a lot about HD120's) and even more about arduino. Thanks for all your efforts charixfox.

 

Corsair recently released LL series fans that look pretty cool with the extra 4 leds in the center. Might not be too much effort if the extra 4 lights were addressed as an additional loop per fan as Corsair seems to have done.

 

Even though I just spent a fair amount of money and effort getting six HD fans working, I'll most likely end up grabbing the LL fans soon. Do you think you might add support for these in the future? If there's anything I could do, if you choose to enhance the firmware. I'd be glad to help in anyway I could.

 

Thanks again for a great thread.

 

Quite welcome. I love seeing people be creative. I also love the fact that Corsair seems to have taken the Arduino project as a challenge to make more interesting fan patterns. ;)

 

The LL series fans lack a little in the fan side of things but definitely have more light capability. Just from the data available so far, I can say that they are pin-compatible and so yes, the extra four LEDs just mean 16 LEDs per fan. They also only show the ring on the outside (Intake) face, so setups like mine with the top fans as intake would look interesting on the top, but not inside.

 

The primary thing preventing me from doing anything with them right now is lack of the fans. Can't prototype or analyze or code for something I don't physically have in my possession except for interpolating and extrapolating and hoping that it might work. ^.^

 

Right now I can't justify the expensive of $105 to get three (separate) fans for testing, or even really $35 to get one fan for testing, so it will need to wait. Hopefully soon though.

Link to comment
Share on other sites

I found some hours and went ahead with the job.

 

progress report:

 

- changed UI

- added settings panel

- added hue bar to set color

- every effect settings is now saved when applied to the fan and loaded on the next opening

- new icon

- minor fixes

 

I feel GitHub closer Charixfox ;):

 

Quite awesome. Keep in mind GitHub can be used to keep track of Enhancements and Bugs too, so you can create tickets for things you intend to do and so on. After all, I wouldn't count my code as complete, but it's there. ^.^

 

Keep in mind I'm also happy to code firmware improvements that make things easier for the software and so on. For example, the firmware will dump its current settings to the com port, which is one thing. And there's firmware flash save of settings that might be a good idea to implement in the software. Many, many things of fun.

Link to comment
Share on other sites

I found some hours and went ahead with the job.

 

progress report:

 

- changed UI

- added settings panel

- added hue bar to set color

- every effect settings is now saved when applied to the fan and loaded on the next opening

- new icon

- minor fixes

 

I feel GitHub closer Charixfox ;):

 

Will your program with with the strips as well?

 

Charixfox: Can you address the strip led's individually as well? A chaser effect or sequential effect would be cool.

Edited by Charbo
Link to comment
Share on other sites

Charixfox: Can you address the strip led's individually as well? A chaser effect or sequential effect would be cool.

 

The firmware handles strips though there are not currently too many options for strips. Since most people get strips with an LNP, they end up not using the custom controller. Especially since wiring for the custom controller becomes hugely more complicated for strips. Need to tap into a SATA power connector as well as the data on the Arduino and stuff.

Link to comment
Share on other sites

The firmware handles strips though there are not currently too many options for strips. Since most people get strips with an LNP, they end up not using the custom controller. Especially since wiring for the custom controller becomes hugely more complicated for strips. Need to tap into a SATA power connector as well as the data on the Arduino and stuff.

 

The hardware part is whats easy for me, I have no idea what I am doing with coding and have just been learning as I go from your examples. I may just hook the strips back up to the lnp for now, but I was going to get different strips so I wanted to see what I could do with them using your code.

Link to comment
Share on other sites

The hardware part is whats easy for me, I have no idea what I am doing with coding and have just been learning as I go from your examples. I may just hook the strips back up to the lnp for now, but I was going to get different strips so I wanted to see what I could do with them using your code.

 

Oh? Did you see the current firmware? Translating fan patterns to strip patterns is relatively simple. The strips just run on a different pin from the Arduino. So if you have everything wired properly and compile default firmware, it'll just work. I have no objection to translating more strip modes either. That would be relatively easy.

Link to comment
Share on other sites

Oh? Did you see the current firmware? Translating fan patterns to strip patterns is relatively simple. The strips just run on a different pin from the Arduino. So if you have everything wired properly and compile default firmware, it'll just work. I have no objection to translating more strip modes either. That would be relatively easy.

 

Right now I am still using the lnp for power to the leds, I've been to lazy to solder. I de-pinned the data wire for the strips and fans and put them both in another lnp connector from an extension. plugged that into my arduino so that they were on pin 3 and 4 and it worked great. I plan on cleaning it up eventually but it works.

 

So ya, more modes would be great on the strips! It looked like it wouldn't be too hard to make the modes in the code you have, I just dont know enough about the commands to figure it out yet.

Link to comment
Share on other sites

Quite awesome. Keep in mind GitHub can be used to keep track of Enhancements and Bugs too, so you can create tickets for things you intend to do and so on. After all, I wouldn't count my code as complete, but it's there. ^.^

 

Keep in mind I'm also happy to code firmware improvements that make things easier for the software and so on. For example, the firmware will dump its current settings to the com port, which is one thing. And there's firmware flash save of settings that might be a good idea to implement in the software. Many, many things of fun.

 

I'm not very familiar with GitHub, some practice needed...

the project is here: https://github.com/kubdotnet/LedControllerEngine

Link to comment
Share on other sites

Atm they aren't supported. I can try to add them to the Application (this should be easy), but I can't try it because I do not have strips.

 

I would be happy to test them out for you. I will be trying your program out tomorrow.

Link to comment
Share on other sites

Project update:

Stripes are now supported (not tested)

Transfer Stage to Live is available

 

Awesome! How do I run this? I tried running it in visual studio but when I try to apply a setting it gives me an error. Like I said, I'm new to the coding part of this so sorry for newbie questions.

Link to comment
Share on other sites

Awesome! How do I run this? I tried running it in visual studio but when I try to apply a setting it gives me an error. Like I said, I'm new to the coding part of this so sorry for newbie questions.

 

What error message it gives you?

 

Edit:

I add a zip file containing the current version of the application (.NET Framework 4.6.2 required), and I have to add logging feature in the next version :biggrin:

LedControllerEngine_1.0.0.zip

Edited by kubdotnet
Link to comment
Share on other sites

What error message it gives you?

 

Edit:

I add a zip file containing the current version of the application (.NET Framework 4.6.2 required), and I have to add logging feature in the next version :biggrin:

 

It was giving me errors because I was trying to use it while running it in debug. I have never used Visual Studio before so the zip file worked great. So far the biggest bug I see is that it crashes when you apply settings, but they do apply. All the settings I tried on the fans worked great. The strips did not work as well, I am assuming because the modes are different so the command does not match the name. The strips did take the settings that I applied, just not the right mode so it was not actually what I chose. Thank you both for all your great work so far! I enjoyed the ease of Link, but the possibilities are endless with this setup if you know how to use it.

Link to comment
Share on other sites


×
×
  • Create New...