Jump to content
Corsair Community

HowTo: HD120 RGB Custom Lighting Controller


Recommended Posts

Good news everyone! (World of Warcraft Putricide quote)

 

I managed to add support for multiple ports; every command (load settings, save settings, stage-to-live) and every effect are now sent through selected port(s) (feedbacks are welcome).

 

- Port(s) selection has moved from Settings to the main window to easily switch between them

- Added new fan's settings introduced by Charixfox for the current effects (I've not yet looked inside the firmware to catch stripe's new features :laughing:)

 

Awesome! Thank you for the PC-side support!

 

If you'd like to coordinate on control schemes with the Firmware, let me know. Also, if there are any questions about the new features, let me know. The "Set a setting group all at once" may be useful to you.

 

the next weeks I'll be away for work, when I come back I'll try to implement the new features for the strips and the "group settings" feature; if there is something unclear I will come back to ask you :biggrin:

 

Thank you for your work!

LedControllerEngine-1.1.zip

Link to comment
Share on other sites

  • Replies 271
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Have a good work-ation!

 

I'll see if I can get HID-based comms working Just In Case and I'll see about updating the led strip mode documentation.

 

The "set a group of settings at once" feature is a comm improvement.

Instead of doing:

>1.0.1>1.1.2>1.2.0>1.3.1>1.4.64>1.5.28>1.6.2>1.7.60

to set everything on fan one, instead you can can just:

&1.1.2.0.1.64.28.2.60

 

I'm working out several improvements, including dynamic setting of the fans, fan types, and so on, so stand by for a long wait before possible exciting news. :)

Link to comment
Share on other sites

Good news everyone! (World of Warcraft Putricide quote)

 

I managed to add support for multiple ports; every command (load settings, save settings, stage-to-live) and every effect are now sent through selected port(s) (feedbacks are welcome).

 

- Port(s) selection has moved from Settings to the main window to easily switch between them

- Added new fan's settings introduced by Charixfox for the current effects (I've not yet looked inside the firmware to catch stripe's new features :laughing:)

 

 

 

the next weeks I'll be away for work, when I come back I'll try to implement the new features for the strips and the "group settings" feature; if there is something unclear I will come back to ask you :biggrin:

 

Thank you for your work!

 

I gave the new version a try, it did not show any features. So I don't know if I missed something. The 1.0 version opens fine.

Link to comment
Share on other sites

I gave the new version a try, it did not show any features. So I don't know if I missed something. The 1.0 version opens fine.

 

Could be something related to the saved settings, please try to rename the file %appdata%\LedControllerEngine\settings.json (by default c:\Users\<name>\AppData\Roaming\LedControllerEngine\settings.json) into settings.json.backup and re-open the new version. I'll do some debugging asap.

Link to comment
Share on other sites

I did remove the setting.json file, and could not get anything images of fans or the list of modes on the left.

 

So I tried it on another computer and everything came up fine. Further investigations is the machine I tried it on had no COM ports. I went back to my PC disabled all the COM ports and everything came up correctly.

 

It looks like it is in the detecting COM port when the app launches that the problem occurs.

 

Hope it helps! Thanks again.

 

Could be something related to the saved settings, please try to rename the file %appdata%\LedControllerEngine\settings.json (by default c:\Users\<name>\AppData\Roaming\LedControllerEngine\settings.json) into settings.json.backup and re-open the new version. I'll do some debugging asap.
Link to comment
Share on other sites

Correct! I wasn't too impressed by aurora capability from the motherboards, so I skipped plugging anything into it. If you jump the header into the correct pins on the fan, you should be good to go though.

 

Let me know how that works. I honestly can't guess whether the data stream would be intact when parallel.

 

I got it working with Gigabyte Fusion, I am impressed as it looks far better than I thought it would. You are still not going to get as much customization out of it, compared to something custom like building your own light controller. You are really limited by the software you use. Though at the same time, you can connect it to your system w/o the Lighting Node Pro and it is a lot less effort and the cost is only yanking a couple old 2pin connectors from an old computer case and splicing them together. I created a video of the different modes.

 

[ame]

[/ame]
Link to comment
Share on other sites

READ IF YOU LOADED THE 0.2.1.3 FIRMWARE

 

The 0.2.1.3 firmware caused a bug with the Arduino bootloader and will require some extra action to recover. The firmware will work, but upgrades and changes are kind of broken.

 

NOTE: 2.1.3 may cause the controller to not respond properly to soft resets to bootloader. This applies to Leonardo type ATMega32u* controllers only, like the Pro Micro and Beetle. If you are unable to upload this new version because you went to 2.1.3, there are two options to recover it: 1: Send an initial soft reset just before the upload starts. The double soft reset corrects the issue and properly enters bootloader. This can be done by opening the com port at 1200 baud and closing it. For example, on Windows in the command prompt:

 

mode COM6 BAUD=1200 parity=N data=8 stop=1

 

Replace COM6 with the com port of the Arduino.

 

Timing is important, as the second reset from the Arduino IDE must reeach the Arduino after it finished the first reset (about 500ms) and before 3 seconds after the first reset.

 

2: You can do a hardware or double-soft reset to put it into the bootloader and use avrdude to send the firmware.

 

You MUST know the port the Ardiono Bootloader will be on. It is NOT the same com port as the normal run port. You can find out in Windows by watching Computer Management in the Ports section of Device Manager for the proper port number.

 

To do this, you must compile and SAVE the firmware (You can do this by pressing Ctrl-Alt-S on Windows IDE). On Windows, the firmware will be saved under Documents\Arduino(Your Sketch)\sketchname.ino.board.hex. For example:

 

C:/Users/kit/Documents/Arduino/HD120_Controller/HD120_Controller.ino.leonardo.hex

 

DO NOT use the one that mentions "boot" in the filename.

 

On Windows in a command prompt, change directory to:

 

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin

 

And run a command similar to:

 

avrdude -v -C../etc/avrdude.conf -patmega32u4 -cavr109 -PCOM9 -b57600 -D -V -Uflash:w:C:/Users/kit/Documents/Arduino/HD120_Controller/HD120_Controller.ino.leonardo.hex:i

 

Replace only the location and name of the .hex file and the COM port number with information appropropriate to your computer.

 

You can do a hardware reset by temporarily connecting the RST pin to ground. You can use the mode command above twice to force a soft reset.

 

I will work on a more user-friendly way to fix this in the near future if I am able to.

 

Let me know if you have any questions or trouble upgrading to 0.2.2.0 and I will do what I can to assist.

Link to comment
Share on other sites

I did remove the setting.json file, and could not get anything images of fans or the list of modes on the left.

 

So I tried it on another computer and everything came up fine. Further investigations is the machine I tried it on had no COM ports. I went back to my PC disabled all the COM ports and everything came up correctly.

 

It looks like it is in the detecting COM port when the app launches that the problem occurs.

 

Hope it helps! Thanks again.

 

Thank you for your infos, I'll do some investigation in that direction. :biggrin:

Link to comment
Share on other sites

  • 4 weeks later...

Intermediate electronics knowledge will help with some of this. I personally will always advocate that you follow spec on load. There are some ways to massage spec, but they usually aren't simple.

 

Then, let's start at the beginning...

 

The reason I recommend the Leonardo is because

- Serial handling is on-chip so has a larger hardware buffer

-- Which means that comms from the computer don't get broken by LED display cycles

- It supports HID, which will be in use in the firmware I write

- It's small

- It's very inexpensive

- It has a lot of RAM and Flash for its size and cost

 

You can use the Mega, but it will not work well with the existing current firmware or at all with the future HID-based firmware, so you would need to write your own code for it and worry about comms with the board.

 

Arduino is a combination of electrical stuff and C++ coding of firmware. Shell and Perl can be a boon (The music sync video is a shell script sending commands to the controller), but won't help with the firmware side.

 

Differences between "Digital" and "Analog" LEDs...

Digital = 5V power and 5V data signal, with each unit being individually-addressable (like each LED on an HD RGB fan)

Analog = 12V power and PWM (Pulse Width Modulation)

 

The Arduino runs at 5V (or SOMETIMES 3.3). Pi runs at 3.3V. To control a digital LED set, the controller needs to send signals across one or two lines when it wants to make changes and the LED handler does everything from there. To control analog, the controller needs to send three lines of constant PWM data to something that will handle the speed while bumping the voltage up to 12V, keeping in mind that a level shifter can't handle that much current.

 

Controlling digital devices...

Depends on the device, its communication method, whether the controller can handle that method, and suchnot. Would not be able to use the firmware I provided stock, so you'd have to get coding.

 

Have enough IO...

Just controlling analog will be a challenge due to the voltage considerations. Beyond that, it's how many pins you can come up with. Even "analog" LEDs are really digital output (PWM) for example. To an Arduino, "Analog" output is based on voltage level.

 

Power...

The controller power is one consideration, true. Pi will have a potential for some issues with "standard" libraries for WS2812 LEDs since those are one-wire and require precise timing to do things. When the Pi changes threads or gets interrupts, the data stream is paused and then the LEDs get the wrong data or latch and won't necessarily be what you want.

 

The LED sets should absolutely have their own power links though. And on the lines of power, you can nab 5, 12 and 3.3 from SATA power connectors.

 

When you say "I want a dozen different channels", it's better to evaluate whether you really want a dozen different channels (physical wires) or a dozen different virtual groups (Like the individual fans can be controlled separately). Digitally-addressed LEDs are all in serial generally.

 

In general, doing things with analog strips is a pain. Plan the project well first either way.

 

I actually went ahead and got a Leonardo, Raspberry Pi 3 B+, breadboard, and etc. I want to tinker around with both of them. It seems like the PI is a tinker tool that can operate on it's own, while it seem the Arduino needs to work with a system. I also picked up some of these, as I know I will need 3 PWM signals/LED cluster I want to control: https://www.amazon.com/gp/product/B01D9VNXEQ/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

 

I am aware the difference between addressable and analog LEDs as well as some come in 5v, while others run on 12v. My first goal is to control some 5v Analog RGBs inside of some hard line fittings:

 

http://community.thermaltake.com/index.php?/topic/64527-make-pacific-rgb-fittings-compatible-with-asus-aura-professional-electrician-needed/

 

These are using a small PCB that fits around a hard line fitting. They use something smaller than the standard 5050, these look like 1616 RGB LEDs. There is also 18 330ohm resistors around the board. I would like to control these with the Leonardo. I have some in some instances where some people use 3x PWM channels to control the Red, Green, and Blue. Though some instances they use a Mosfet, while other times they use just a resistor. As the LEDs I am trying to light up already have a bunch of resistors, I think the 5v is all I really need is a 5v coming into each cluster w/ 3xPWM for each RGB cluster I want to light up. I want to make it so I can control different RGB clusters on different logical channels. I have a total of 6 RGB fittings, so I think I need 6RGB Fittings x 3PWM Signals = 18 Total PWM signals. I also might want to control 12v LED Strips as well, though I think I would need to use Mosfets for that:

 

RGB w/ Mosfets:

https://learn.adafruit.com/rgb-led-strips/usage

RGB w/ Resistors:

https://learn.adafruit.com/adafruit-arduino-lesson-3-rgb-leds/overview

 

I plan to add the HD-120 control for my fans as well, though at this time I already control them via the MB. The TT RGB Fittings are manually controlled and very annoying.

Link to comment
Share on other sites

I actually went ahead and got a Leonardo, Raspberry Pi 3 B+, breadboard, and etc. I want to tinker around with both of them. It seems like the PI is a tinker tool that can operate on it's own, while it seem the Arduino needs to work with a system. I also picked up some of these, as I know I will need 3 PWM signals/LED cluster I want to control: https://www.amazon.com/gp/product/B01D9VNXEQ/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

 

I am aware the difference between addressable and analog LEDs as well as some come in 5v, while others run on 12v. My first goal is to control some 5v Analog RGBs inside of some hard line fittings:

 

http://community.thermaltake.com/index.php?/topic/64527-make-pacific-rgb-fittings-compatible-with-asus-aura-professional-electrician-needed/

 

These are using a small PCB that fits around a hard line fitting. They use something smaller than the standard 5050, these look like 1616 RGB LEDs. There is also 18 330ohm resistors around the board. I would like to control these with the Leonardo. I have some in some instances where some people use 3x PWM channels to control the Red, Green, and Blue. Though some instances they use a Mosfet, while other times they use just a resistor. As the LEDs I am trying to light up already have a bunch of resistors, I think the 5v is all I really need is a 5v coming into each cluster w/ 3xPWM for each RGB cluster I want to light up. I want to make it so I can control different RGB clusters on different logical channels. I have a total of 6 RGB fittings, so I think I need 6RGB Fittings x 3PWM Signals = 18 Total PWM signals. I also might want to control 12v LED Strips as well, though I think I would need to use Mosfets for that:

 

RGB w/ Mosfets:

https://learn.adafruit.com/rgb-led-strips/usage

RGB w/ Resistors:

https://learn.adafruit.com/adafruit-arduino-lesson-3-rgb-leds/overview

 

I plan to add the HD-120 control for my fans as well, though at this time I already control them via the MB. The TT RGB Fittings are manually controlled and very annoying.

 

The fact that TT (or anybody else) is using analog LEDs is sooooo annoying in this day and age. Either way, you are far ahead in knowledge compared to many folks, so you have an excellent head start. And there can never be enough prototype boards. ;) I tested my theories on a Mega before moving to the Pro Micro (Leonardo) for size reasons and control reasons.

 

Other than the mosfet being a thing if the current would otherwise be too much for the thermal fuse on the controller, it looks like you primarily have things under control.

 

Test all the things and see what you can get working successfully.

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...

I am having some issues with getting this to run on an esp8266. I have a few of these lying around and i thought they would be good chips for this project. I run into HID errors or eeprom errors (see below).

 

Errors i get:

 

Using Arduino Uno R3 - error: #error HID Project can only be used with an USB MCU.

Using Huzzah(ESP8266) - fatal error: avr/eeprom.h: No such file or directory

 

Is there are easy workaround for the ESP8266, a compatible library i can download?

 

If I need to switch, is the arduino pro micro the best bet? (I am trying to go as small as possible, and with micro usb interface)

Edited by ychro
Link to comment
Share on other sites

I am having some issues with getting this to run on an esp8266. I have a few of these lying around and i thought they would be good chips for this project. I think the main issue is that there are some HID issues so it wont compile.

 

Is there are easy workaround for the ESP8266, a compatible library i can download?

 

If I need to switch is the arduino pro micro the best bet? (I am trying to go as small as possible)

 

Pretty much any version of a "Leonardo", such as the Pro Micro or the Beetle, as well as several variations on that with an ATMega 32U4. The 32U4 has built in USB handling which allows it to work with the HID.

 

Hmmm... An ESP8266 has a few considerations...

It runs at a 3.3v logic level, which is a little bit of a problem.

Signalling to the LEDs is run by interrupts so some things can cause unexpected and unwanted behavior from the LEDs.

 

I don't think the HID library would work on the ESP at all, so that would have to be torn out and all that benefit removed.

 

The 3.3v logic level is not sufficient to signal the LEDs running at 5v. The LEDs detect high signal at 70% of VCC, which is 3.5v. So you'd have to have a logic level shifter or you'd need to drop the voltage driving the LEDs, which is non-trivial. You can pull SOME 3.3V off SATA power connectors, but the hub is hard-wired to snag the 5v. There are some other cheats like the sacrificial LED, but that has more complex wiring.

 

The fact that LED signalling I think uses bit banging makes communications with the system a potential challenge without having LED updates collide with comms.

 

At the same time, I can see a potential benefit to using an ESP8266:

Web-based control from its own wifi network. Phone app anybody? <.< ^.^;

Link to comment
Share on other sites

Ill probably just pick up a pro micro then.

 

Another cool feature might be bluetooth control, with the feather bluetooth version.

 

https://www.adafruit.com/product/2829

 

That could work.

 

Pro Micro is a bit less-expensive. Another option is a DFRobot Beetle or equivalent:

https://www.amazon.com/dp/B01B0IQFU4/

 

The BLE version uses an ATMega328, which loses HID capability and 20% of its SRAM, so at that point I find an ESP12-F with a power regulator and a Logic Level Shifter to talk to the LEDs a better idea. The ESP8266 can run Wifi with an access point or connect to other things, and thus there's no special program needed, just a web browser.

Link to comment
Share on other sites

  • 3 weeks later...

It appears they have changed something with the HD120 now. The one i purchased has both the cables being 4 pin. (Power and LED ones)

any idea what the pin out for this would be ?

(trying to connect it to an arduino for use in my 3d printer enclosure)

Link to comment
Share on other sites

It appears they have changed something with the HD120 now. The one i purchased has both the cables being 4 pin. (Power and LED ones)

any idea what the pin out for this would be ?

(trying to connect it to an arduino for use in my 3d printer enclosure)

 

I answered your question in this thread:

 

http://forum.corsair.com/forums/showpost.php?p=955012&postcount=8

Link to comment
Share on other sites

Hi, I do not understand a lot of programming but when I try to load the program he gives me this error: HID-Project.h: No such file or directory

 

how i can fix ?

 

thanks!

 

Hi Kino!

 

In the Arduino IDE:

Sketch Menu -> Include Library -> Manage Libraries

Search for "HID" and one of the results will be HID-Project. Install that library in the IDE (Click on the library and an Install button should appear. Click that button when it does and follow any directions presented.)

Link to comment
Share on other sites

Hi Kino!

 

In the Arduino IDE:

Sketch Menu -> Include Library -> Manage Libraries

Search for "HID" and one of the results will be HID-Project. Install that library in the IDE (Click on the library and an Install button should appear. Click that button when it does and follow any directions presented.)

 

Hi, Thank you i found and added but now i have this error (i need to edit it or ?);

 

Arduino:1.8.2 (Windows 10), Scheda:"Arduino Leonardo"

HD120-Controller:136: error: 'CRGBArray' does not name a type

CRGBArray<NUM_LEDS + 14>   leds;    // Operate on this array as if it had the correct layout.

^

HD120-Controller:139: error: 'CRGBArray' does not name a type

CRGBArray<STRIP_LEDS> stripLeds;  // Strips in order

^

HD120-Controller:142: error: 'CRGBSet' does not name a type

CRGBSet *fan[NumberOfFans];      // Fan Subset Array

^

HD120-Controller:146: error: 'CRGBSet' does not name a type

CRGBSet *strip[NumberOfStrips + 1];                 // Strips Array

^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode0(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:173:3: note: in expansion of macro 'EM_F'

  EM_F = CHSV(beatsin8(rFS(thisFan, 7), rFS(thisFan, 1), rFS(thisFan, 2), 0, rFS(thisFan, 5)) + rFS(thisFan, 3), beatsin8(rFS(thisFan, 7), rFS(thisFan, 4), rFS(thisFan, 6), 0, rFS(thisFan, 5)), 255);

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode1(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:196:3: note: in expansion of macro 'EM_F'

  EM_F.fadeToBlackBy(rFS(thisFan, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode2(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:238:7: note: in expansion of macro 'EM_F'

      EM_F.fill_rainbow(beat8(rFS(thisFan, 7)) + rFS(thisFan, 3), rFS(thisFan, 2)); 

      ^

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:244:5: note: in expansion of macro 'EM_F'

    EM_F[random8(LedsPerFan)] += CRGB::White;

    ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode3(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:270:3: note: in expansion of macro 'EM_F'

  EM_F.fadeToBlackBy(rFS(thisFan, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode4(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:306:3: note: in expansion of macro 'EM_F'

  EM_F.fadeToBlackBy(rFS(thisFan, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode5(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:333:3: note: in expansion of macro 'EM_F'

  EM_F.fadeToBlackBy(rFS(thisFan, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode6(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:352:5: note: in expansion of macro 'EM_F'

    EM_F[i] = ColorFromPalette(palette, counter + (i * (rFS(thisFan, 1))), beat - counter + (i * rFS(thisFan, 2)));

    ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode7(uint8_t)':

HD120-Controller:92: error: 'fan' was not declared in this scope

#define EM_FE               (*fan[thisFan])((LedsPerFan / 2), LedsPerFan - 1)

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:369:7: note: in expansion of macro 'EM_FE'

      EM_FE = CHSV(hueb, 255, 255);

      ^

HD120-Controller:91: error: 'fan' was not declared in this scope

#define EM_FW               (*fan[thisFan])(0,(LedsPerFan / 2) - 1)

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:385:3: note: in expansion of macro 'EM_FW'

  EM_FW = CHSV(huea, 255, beat);

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode8(uint8_t)':

HD120-Controller:94: error: 'fan' was not declared in this scope

#define EM_FNW              (*fan[thisFan])(0,(LedsPerFan / 4) -1)

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:412:7: note: in expansion of macro 'EM_FNW'

      EM_FNW = CHSV(huea, 255, 255);

      ^

HD120-Controller:94: error: 'fan' was not declared in this scope

#define EM_FNW              (*fan[thisFan])(0,(LedsPerFan / 4) -1)

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:432:7: note: in expansion of macro 'EM_FNW'

      EM_FNW = CHSV(huea, 255, beat);

      ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode9(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:442:3: note: in expansion of macro 'EM_F'

  EM_F = CRGB(rFS(thisFan,1),rFS(thisFan,2),rFS(thisFan,3));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void mode10(uint8_t)':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:449:5: note: in expansion of macro 'EM_F'

    EM_F.fadeToBlackBy(rFS(thisFan, 1));

    ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode0(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:465:3: note: in expansion of macro 'EM_S'

  EM_S = CHSV(beatsin8(rSS(thisStrip, 7), rSS(thisStrip, 1), rSS(thisStrip, 2), 0, rSS(thisStrip, 5)) + rSS(thisStrip, 3), beatsin8(rSS(thisStrip, 7), rSS(thisStrip, 3), rSS(thisStrip, 5), 0, rSS(thisStrip, 5)), 255);

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode1(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:488:3: note: in expansion of macro 'EM_S'

  EM_S.fadeToBlackBy(rSS(thisStrip, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode2(uint8_t)':

HD120-Controller:84: error: 'strip' was not declared in this scope

  #define EM_S1               (*strip[thisStrip])(0,(LedsPerStrip / 2) - 1)

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:511:7: note: in expansion of macro 'EM_S1'

      EM_S1 = CHSV(hueb, 255, 255);

      ^

HD120-Controller:84: error: 'strip' was not declared in this scope

  #define EM_S1               (*strip[thisStrip])(0,(LedsPerStrip / 2) - 1)

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:527:3: note: in expansion of macro 'EM_S1'

  EM_S1 = CHSV(huea, 255, beat);

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode3(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:539:7: note: in expansion of macro 'EM_S'

      EM_S.fill_rainbow(beat8(rSS(thisStrip, 7)) + rSS(thisStrip, 3), rSS(thisStrip, 2)); 

      ^

HD120-Controller:545: error: 'strip' was not declared in this scope

    (*strip[thisStrip][0])[random8(LedsPerStrip)] += CRGB::White;

      ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode4(uint8_t)':

HD120-Controller:557: error: 'strip' was not declared in this scope

    (*strip[thisStrip])[i] = ColorFromPalette(palette, counter + (i * rSS(thisStrip, 1)), beat - counter + (i * rSS(thisStrip, 2)));

      ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode5(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:565:3: note: in expansion of macro 'EM_S'

  EM_S = CRGB(rSS(thisStrip,1),rSS(thisStrip,2),rSS(thisStrip,3));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode6(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:589:3: note: in expansion of macro 'EM_S'

  EM_S.fadeToBlackBy(rSS(thisStrip, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode7(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:615:3: note: in expansion of macro 'EM_S'

  EM_S.fadeToBlackBy(rSS(thisStrip, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void smode8(uint8_t)':

HD120-Controller:83: error: 'strip' was not declared in this scope

  #define EM_S                (*strip[thisStrip])  // Addressing for strip modes that use thisStrip to grab the whole strip

                                ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:642:3: note: in expansion of macro 'EM_S'

  EM_S.fadeToBlackBy(rSS(thisStrip, 6));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void gmode2()':

HD120-Controller:89: error: 'fan' was not declared in this scope

#define EM_F                (*fan[thisFan])

                              ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino:684:3: note: in expansion of macro 'EM_F'

  EM_F = CRGB(rGS(3), rGS(4), rGS(5));

  ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void setup()':

HD120-Controller:772: error: 'leds' was not declared in this scope

    FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);

                                                     ^

HD120-Controller:775: error: 'stripLeds' was not declared in this scope

    FastLED.addLeds<LED_TYPE, STRIP_PIN, COLOR_ORDER>(stripLeds, STRIP_LEDS);

                                                      ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void defineSets()':

HD120-Controller:820: error: 'strip' was not declared in this scope

    strip[i] = new CRGBSet( stripLeds((i * LedsPerStrip), (((i + 1) * LedsPerStrip) - 1)));

    ^

HD120-Controller:820: error: expected type-specifier before 'CRGBSet'

    strip[i] = new CRGBSet( stripLeds((i * LedsPerStrip), (((i + 1) * LedsPerStrip) - 1)));

                   ^

HD120-Controller:829: error: 'fan' was not declared in this scope

    fan[thisFan] = new CRGBSet(leds(offset, offset + LedsPerFan - 1));

    ^

HD120-Controller:829: error: expected type-specifier before 'CRGBSet'

    fan[thisFan] = new CRGBSet(leds(offset, offset + LedsPerFan - 1));

                       ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void remap()':

HD120-Controller:854: error: 'leds' was not declared in this scope

    leds(NUM_LEDS, NUM_LEDS + LedsPerFan - 1) = leds(i, i + LedsPerFan -1);

                                            ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void demap()':

HD120-Controller:863: error: 'leds' was not declared in this scope

    leds(NUM_LEDS, NUM_LEDS + LedsPerFan - 1) = leds(i, i + LedsPerFan -1);

                                            ^

C:\Users\*\Desktop\HD120Controller\HD120-Controller\HD120-Controller.ino: In function 'void breakfast()':

HD120-Controller:1091: error: 'strip' was not declared in this scope

          delete strip[i];

                 ^

HD120-Controller:1092: error: expected type-specifier before 'CRGBSet'

          strip[i] = new CRGBSet( stripLeds((i * LedsPerStrip), (((i + 1) * LedsPerStrip) - 1)));

                         ^

exit status 1
'CRGBArray' does not name a type

 

Thanks!

Link to comment
Share on other sites

That impies that FastLED is missing as a library. Mea culpa for not documenting the need for the HID-Project library in the readme file, but it definitely mentioned the need for the FastLED library. Use the same process for FastLED. Let me know if the library was already installed.

 

I suppose if all else fails, I can package the libraries in the code, though that has upsides and downsides.

Link to comment
Share on other sites

That impies that FastLED is missing as a library. Mea culpa for not documenting the need for the HID-Project library in the readme file, but it definitely mentioned the need for the FastLED library. Use the same process for FastLED. Let me know if the library was already installed.

 

I suppose if all else fails, I can package the libraries in the code, though that has upsides and downsides.

 

Thank you again! FastLED is already installed but with old version 3.1.0.

After i try to update with last version 3.1.6 and now work without error, later i will try to upload and test with fans. :biggrin:

Link to comment
Share on other sites

Thank you again! FastLED is already installed but with old version 3.1.0.

After i try to update with last version 3.1.6 and now work without error, later i will try to upload and test with fans. :biggrin:

 

Thank you for the update! I didn't recall that the library lacked CRGBSets in that version, so the reminder is helpful. Have fun with the project!

Link to comment
Share on other sites

  • 3 weeks later...

Hi!

This looks very cool.

I'm thinking of making an Arduino controller too and would love to get some help.

So I have a single LL120 fan and I'm considering to purchase additional 3 HD120 fans for the front of my 570x case. So here are my questions if anyone can help me out:

  • Would it look good with an ll120 for the exhaust and 3 hd120 for the intake?

  • Does this project work for both LL and HD fan models?

  • Which type of Arduino do I choose? Pro micro or the original Leonardo (like this one for instance)

  • Does the RGB hub's sata connector needs to be connected?

  • For my understanding I need a 5v input. The original Leonardo Arduino which I've linked has a 5v input while the pro micro doesn't (it comes with a RAW and a VCC input). Can anyone explain to me how the RAW input works? How do I ensure I get exactly 5v for the fans lighting?

  • Would a 3 pin JST SM cable work for connecting the RGB hub to the Arduino board?

  • Is there anything I should be cautious of so I do not damage the LEDs by any mistake?

  • Can I connect the Arduino to an onboard USB header using an adapter?

 

Too many questions I know..

Anyways any help is appreciated, thanks.

Edited by Abs17
Link to comment
Share on other sites


×
×
  • Create New...