Vixen Lights 3.x Arduino Pixel Controller (WS2812B)

Vixen3-Arduino-LogoFor years I have been fascinated by synchronizing Christmas lights to music.  With an interest in Arduino I decided to start working on an Arduino Pixel Controller for use with WS2812B strips which can then be controlled by Vixen Lights.  Below is a guide for how to use this code and setup a complete controller to get your lights all blinky.

Before I go too far, I want to give credit where credit is due and thank one of my good friends Richard at themindfactory.com for helping me with the Arduino code.  He is a bit of a coding wizard!  I know that if you want to thank him, he works on the beer donation system. I am hoping I have given him a bit of the CLAP (Christmas Light Addiction Program).

What is Vixen Lights?

Vixen Lights is software for do-it-yourself lighting automation displays.  The latest version 3.x was a complete redesign to support addressable “pixel” lights.

You can download it at http://www.vixenlights.com/downloads/ This tutorial is based on version 3.1u1 64 Bit.

What is a Pixel?

A pixel is a cluster of 3 Light Emitting Diodes (LEDs) consisting of the three primary colors (Red, Green and Blue).  The intensity of these three colors (LEDs) can be varied to make other colors.  The WS2812B pixels I am using in my example include an Integrate Circuit (IC) chip which accepts data in on one port, displays the information that was addressed to it and passes on data to the next pixel.  For my display I purchased strings of 5 meters which have 30 pixels for every meter or 150 pixels for 5 meters.  Addressable RGB “pixel” strips can usually be identified because they have 3 wires.  One for power, one for ground and one for data.  In contrast, RGB “dumb” strips can be identified by them having 4 wires.  Usually one for power and one for each color Red, Green and Blue

RGB Strips

Powering Up Pixels

RGB Pixels use a LOT of power.  While the Arduino board can power up a few pixels using the built in voltage regulator, you will quickly run out of power.  Therefore we will want to use an external power supply to power the lights.  The voltage required will depend on the specific lights you have purchased.  The lights I am using are 5V (volt).  Another requirement of a power supply is to ensure it has enough power to support the number of pixels you are using.  Each pixel at full white requires approximately 60 milliamps. for 150 RGB Pixels that works out to approximately 9A (Amps).

Unfortunately, the thin copper traces used on most LED strips causes “resistance” which will lead to dropping voltage levels.  If the voltage at the pixel drops too low it can cause various problems such as flicker, dim lights or simply failure to light up.  To avoid these issues, you may find that you will need to “insert” power at points within the RGB Pixel Strip.  You would cut the strip and then just jump the DATA line across and add a new set of POWER and GROUND wires running back to your power supply.  But be aware, that the distance of your power wire will also cause resistance and result in voltage drop.  To avoid this, you must use wire that is thick enough based on your power requirements.  The following chart is a decent starting point for choosing the right size of power wires.  http://www.engineeringtoolbox.com/amps-wire-gauge-d_730.html

Bigger is always better when it comes to a power supply.  You will need something that can provide more power (Amps) then you require.  In my case I have ordered a couple of medium sized power supplies, 40 Amp and 60 Amp.  Multiple power supplies can be used however, you should connect all of the ground wires for the power supplies together.


Arduino Controller

Many of the main stream Arduino boards can be used as a controller to become the middle man between the computer running Vixen Lights and the actual RGB Pixel Strips.

Various boards have different hardware limitation such as processor speed, memory (RAM) size and storage size.  However in testing, the biggest limiting factor we found was the speed of the Serial Port.  Most Arduinos can not go any faster than 115,200 bps. When we push the color codes for each of the three colors for 150 Pixels (aka 450 colors) down the serial port at 115,200 bps we can calculate that it will take 45 milliseconds to complete the transmission. This means we can safely refresh each pixel every 50 milliseconds (or 20 times per second).


Arduino Mega Serial Data Timing for 150 WS2812B Channels at 50ms Refresh Rate (115,200 baud)

If we want to address more pixels, we would need to reduce the rate at which we change the colors of the pixels.  For example, we could use 300 pixels and change the refresh rate of Vixen to 100 ms (or 10 times per second).  Unfortunately 500 pixels becomes the next limit we hit as a result of memory limitations.  If you attempt to get that many pixels hanging off a single Arduino you will probably find that the refresh rate is too low any ways.




Arduino Code

There are some really good tutorials out there for programming Arduino boards so I won’t get into it in this article.  What I will mention is that the code below requires the FastLED library.  To use this library, you must download it from http://fastled.io and place the files inside your Arduino Libraries folder usually found C:\Program Files (x86)\Arduino\libraries

Configuring Vixen Serial Port

In order to use the Arduino controller, you must configure it inside of Vixen 3.x The following process was documented using Vixen Lights 3.1u1 64Bit.  For this example I will be configuring 3 Pixels.


Step1 - Add Generic Serial Controller

Step 1 – Add Generic Serial Controller

The first step is to add a Generic Serial Controller.

Step 2 - Set Outputs

Step 2 – Set Outputs

Now we will set the number of outputs for the controller.  This number should be 3x the number of pixels.  In my example I am configuring 3 pixels which means I will set the output count to 9

Step 3 - Configure COM Port

Step 3 – Configure COM Port

Now we will configure the COM Port.  To do this we will select the COM port for the Arduino.  My example is COM13 but yours will probably be different.  We also want to configure the baud rate to 115200.  The remainder of the settings can be left alone.

Step 4 - Configure Text Header

Step 4 – Configure Text Header

Here we will be adding the number of pixels into the header so that the Arduino knows how many pixels it should be receiving.  The number of pixels must be 300 or less and must be entered as a three digit value.  Again my example uses 3 pixels therefore I will be preceding it with two zeros.  At this point you should see a bunch of blinky flashy on your Arduino as it is now receiving the serial data.

Configure Element

Step 1 - Add Element

Step 1 – Add Element

Now we will be creating an Element in Vixen to manage the pixels on our WS2812B RGB Strip.  In my example I am calling it Pixel Strip.

Step 2 - Add Pixels

Step 2 – Add Pixels

Next we will right click on the Pixel Strip we just created and we will select Add Multiple.  To add all of the pixels, we will select Numbered Items, define a name (I used Pixel Strip) and then select the number of pixels to generate (3 in my example).  You should see all of the names in the list before clicking OK.

Step 3 - Change To RGB

Step 3 – Change To RGB

Now we will highlight the Pixel Strip and Configure the Color Handling property.  We will select “They can be any color: they are full RGB and mix to make any color.”

Step 4 - Patching

Step 4 – Patching

The final step before we can call it a day is to patch the Element to the Controller.  To do this highlight the Pixel Strip on the left and the Generic Serial controller on the right.  The number of Unconnected Patch Points should match.  The only thing left to do is click Patch Elements to Controllers and then you are ready for Christmas Light Bliss!


Patched Elements


If you were successful your graphical view should look something like this.

Changing Refresh Rate In Vixen

Changing Vixen Refresh Rate

Changing Vixen Refresh Rate

Just in case you decide that you want to try and push the controller to 300 pixels you will need to change the Vixen refresh rate to 100 ms.  Simply select Tools \ Options and you will find what you are looking for.






    • I am working on one. I just want to get a few more elements of my Christmas display finished first.

    • Do I need to modify the sketch for use with WS2801 pixels or is the code line
      FastLED.addLeds(leds, num_leds); valid for that pixel type without modification?

  1. Another question.
    In your code you use just 1 data pin for 3 ledstrips ? how it’s possible ?

    • Yes, WS2812B uses “1-Wire” communitcation. Which refers to the Data Pin. In my case I am using Pin 6 specifically because I am using an Arduino Teensy 2.0++ and that is the LED Pin. Using this pin allows me to visually see that I have data going out Pin 6 towards the Pixel Strips. Technically the Ground pin is also connected as you can see in the diagrams so there are two wires between the arduino and the strips. Power is only applied from the external power supply to the strips and not the arduino as it is powered by USB.

  2. Hi i made a small mega tree this year with vixen, arduino and some cheap led strings that i was quite pleased with…..NOW I GOT THE BUG !!!!!
    I spotted your blog on pixels and so am going to try and follow it but have run into a little trouble already. I have downloaded the FastLED and placed it in the ARDUINO librarys folder. I also copied the ARDUINO code on to a sketch.
    My problem is that when i try and upload the sketch I get a message (Exception in thread “thread101” java.lang.Stackoverloadflowerror) and the sketch wont complete compiling.
    Any help would be gratetfully received.

    • Hey Cliff, try lowering the number of LEDs being addressed just to see if that is the issue? Something like the following.
      #define NUM_LEDS 30
      Also make sure you are using the latest Arduino IDE.
      Fianlly I had a bit of an issue with the header characters but that was a different error. I will try and update the post later today to address the header issure I encountered.

    • Forgot to mention that if you couple it with a network shield and the OctoWS2811 LED Library that you can do Artnet.

      • That is exactly what I intend to begin to play with over the summer. Maybe it will even turn into another tutorial…

    • No I haven’t personally tried a Teens 3.1, only the 2.0++. Although the 3.1 does have more memory than the 2.0++ I don’t think it would still be any faster than the 2.0++ but I could be wrong. I think 1,500 pixels is probably more than anyone would actually want to control using a single data bus anyways. When ou get that many your risk of losing a single pixels continues to increase and if you lose one near the begining, well, you’ve effectively lost the remainder of the string.

  3. Thanks for your example. It got my pixel strand working with vixen great. I am using Arduino Uno. Is there a way to use to hook up Sainsmart Relay on the same Arduino or is this one only good for pixels? I was hoping to control 6 50 count strands of pixels and 8 channels of LED lights using vixen and am not sure how that would be defined for the Arduino.

    • Intersting thought, mixing mechanical (or SSR) relays with Pixels on the same controller… I could certainly see this being possible, although I have not played with it. I have a few relays, but used custom SSR boards for my High Voltage lighting needs which operate in theory very similar to mechanical relays (except faster). Definately something to think about.

      • Is it possible to use multiple pins for different pixels or do I need a separate arduino for each string or pixels? I am wanting to make 6 rgb sparkle balls, each using 50 pixels. They would be at a different location in the tree. I was hoping to control all 6 from one arduino.

        • I was able to get it to recognize multiple pins by combining your sketch with one of the examples from included with the library: MultipleStripsInOneArray

          Thanks for the detailed example on getting this going.

          • Wayne,
            I’d be interested in doing the same thing. Would you be willing to email a copy of your sketch to me?

    • I used the Teensy 2.0++ because that’s what I had on the workbench and did not have to order anything. A friend had initially suggested an Arm Cortex M4 and I almost took that path.

      Correct, it (the 3.1) can drive more chips than the 2.0++ as my limit became 1,500 LEDs because of the amount of memory (RAM) required to store the color values. The 3.1 does have more RAM and would eliminate this resource limitiation. As I understand it, both the 2.0++ and the 3.1 share a similar USB to serial built directly into the AVR itself and do not use an FTDI converter like a standard Arduino. This is what allowed me to go from 150 LEDs using a standard Arduino to 1,500 using the Teensy 2.0++ Which I believe is what you are saying.

      I still go back and ask when too many LEDs on a single string becomes an issue? The best use case I can think of might be a matrix. But I think too many LEDs on a single string would be catastrophic if you lost a pixel near the begining of the string.

      • Teensy 3.x is arm not avr, and only Teensy 3.x have DMA.
        For the gritty details as to why DMA is important I suggest reading this

        Finding a bad led on a long string is relatively easy and all you have to do is replace the problem led. The IC’s on each pixel act as a signal booster. I have had 3,000 pixels on a oscope where the signal at the end of the chain is identical to the signal at the start.

  4. I got my arduinoi working but the only problem is that red becomes green and green becomes red when I run a sequence. Any ideas. thanks

    • I had the same problem in Vixen. I changed this line in the Arduino code.
      FastLED.addLeds(leds, num_leds); to
      FastLED.addLeds(leds, num_leds);
      By changing it from GRB to RGB, that fixed the problem.

  5. Dave, what a cracking job.. Thankyou..
    Pixels come from china today, 150 x WS2812B 5M in IP67 Tubing. £19($28) Delivered
    Arduino Nano V3, again China £2($3) Delivered.
    The alternative CN USB Serial Converter chip(CH340G). (After the FTDI Boycott)
    So with a 150 Pixels, it come out at £0.14/Pixel or £4.20/M – Pretty good it think.(Less, Power and Cable Cost)
    Played with Arduino once about a year ago, so needed to download it again.
    Never controlled any lights with Vixen, but been playing with it since Xmas, so generally know my way around.
    Took 20 Minutes to wire it all up, compile, load, and set-up up a 150 LED strip in vixen(The longest bit!) to be up and running,
    On strip lengths, I have a few comments that may help others.
    If a pixel dies, how easy it is to replace is down to the type of pixels you have, how they are fitted to the display and where in the display. i.e 3M up a tree!
    Dead Pixel(s) is likely to mean, the remain string will not get data.
    When its Raining and freezing,(In the UK it usual is.) trying to repair a WS2812B in a IP67 Silicone tube or Resin, in situ and made it waterproof again, is going to be a pain. Pixel String are possible easier. Have your Gas Iron ready.
    Also, consider a faulty PSU, going over voltage, could kill every pixel, so driving Pixels for many PSUs, reduces the risk of a big burn out.
    Next is the refresh rate, Dave discuss this above.
    Vixens default is 20Hz, although you can change this.
    Voltage Drop and Power injection are also an issue.
    Even my single 150 Pixel string is dropping 2Volts along its length.
    It is out of the LEDs spec. So you really need to be feeding power from both ends(NOT THE DATA !!).
    What I would like to know if anyone has tested it, how many USB serials could you drive at 20Hz refresh before you have issues with the PC or Vixen, Anyone.??

  6. Will this code work for ws2811 pixels? I have already ordered my pixels and am looking for code that will work with this type of pixel. Thank you!

    • Im sorry. I just reviewed the code and realize the comments have answered my question. Sorry bout that!

  7. Okay im sorry but this time i really do need help. I have uploaded the code and the rgb strip defaults to green… and when i run vixen it flashes alot and overides the other colors. Am i doing something wrong? I know vixens recieving communication and i dont need vixen open for it to be green so i believe it may be something in the code. Thank you!

    • Without a serial connection you shouldn’t have any colors being displayed when you first turn on the board. How long is the run between the Arduino and the LEDs? It could be noise on the line causing the flickering (which might be solved with a simple resistor). Have you tried regular WS2812B examples to make sure they work with your hardware?

      • The line is very short leading to the strip. maybe a few inches. Maybe the resistor thing will work though. Will try later. Will the ws2812B examples work for the ws2811 chipset? or do you just want me to see if they run at all on the arduino. I am working right now but later when i am home i will post a youtube link to a video of the issue im having. Thank you so much for your help!

  8. I made a quick video showing my issue. Looking now, it may actually be a problem within vixen as the issue only starts when i start vixen. If you need any more info please let me know 🙂

      • How many amps is your power supply? Can you try changing the greater than and less than symbols in both the Arduino sketch and within the serial port configuration for Vixen to something else? Probably try MM and NN instead of >> and << and let me know if that helps?

        • my power supply is 2 amps but i have been recently attempting to pinpoint the issue and switched down to only 10 chips (30 leds). I changed the vixen send header and tried to complete the process yet again to no avail. I am wondering if i would have this much trouble just purchasing an actual controller like a renard px1 or sandevices controller. Id really like to figure out the arduino problem though. And i have a 20 amp power supply coming by the way. thanks again!

          • Just for fun have you tried running them as WS2812B within the arduino sketch? I believe the two chips are very similar. Also were you able to test them using some of the basic built in Arduino examples that came with the FastLED Library?

  9. https://youtu.be/dEC2XNxat8c
    This is a video of it running the fire2012 and its not running well. It is just flashing every color everywhere. Yesterday I had it working at some point but i must have messed up the hardware or software somewhere

  10. My wire connections is a 12v power and ground going to the strip and a data going into the strip. Am i supposed to ground the data?

    • I grounded my data wire and now no more flashing and communication seems to work great with everything. I guess i really messed up and that was a dumb one too. Now my only issue is that instead of my strip having all channels default to (0,0,0) it defaults to a solid green. I have no clue why its putting green… it turning my reds orange and my blues lighter.

  11. Thank you for a wonderful tutorial. Has anyone had any luck using the Ethernet shield instead of USB. Would love to run arduino over network.

    • Ya great call! I did a bit of reading and some people were using a W5100 shield with E1.31

      I picked up a shield but haven’t had time to give it a go yet. Too many other projects right now like getting ready for a few Quadcopter FPV races and then we will be into Halloween setup! Yikes, I wanted to spin off some PCBs for christmas lights this year but where did the year go?!

      • You’ll probably discover the W5100 chip has terribly slow performance. Every byte of actual data has 3 bytes of overhead (4 bytes on the SPI bus), because the W5100 doesn’t support block transfer.

        The W5200 chip performs much better, if you read a whole UDP packet at once. The W5200’s block transfer requires a few bytes setup, then each actual data byte is sent as 1 byte over the SPI bus.

  12. I’ve got considerable experience with FastLED and this bring a whole new dimension to what I can do. Thanks for the absolutely awesome tutorial. It works like a charm.

    • I do have a problem, however with trying to use just 2 or 1 pixels in the display. It doesn’t seem to work. Ultimately, I’d like to be able to use Vixen to send serial strings/commands instead of RGB values to the Arduino, but Vixen seems to be fighting me every step of the way.

  13. I have tried to intergrate this code with one for the ssr that i already have.
    can not seem to get arduino to accept them, can you figure out how to help me, want to add the rgb to it.
    here is the relay code i have.
    guess i just dont have enough experance with arduino to figure it out.
    any help would be appricated thanks.

    const int numChannels = 32;
    // Listing Arduino pins in Channel number order
    int channels[numChannels] = {2,3,4,5,6,7,8,9,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45};
    int incomingByte[numChannels];

    void setup()

    for(int i = 0; i = numChannels)
    for (int i=0; i<numChannels;i++)
    incomingByte[i] = Serial.read();

    for(int i = 0; i < numChannels; i++)
    digitalWrite(channels[i], 0+incomingByte[i]);


    • i tried intergrating like this but the rgb’s just radumly flash.

      #define NUM_LEDS 50
      #define DATA_PIN 11
      // #define CLOCK_PIN 13

      CRGB leds[NUM_LEDS];

      // BE CAREFUL w/DEBUG!
      // If you turn this on, do NOT expect a high refresh rate
      // w/out some bytes getting missed. The Serial library takes
      // a certain amount of time to output data, if too much data
      // is output too quickly, it may not allow time to read before
      // the UART buffer fills up. This can
      // be improved by commenting out DEBUG sections you don’t need
      // boolean DEBUG = false;

      const int numChannels = 32;
      // List Arduino pins in Channel number order
      int channels[numChannels] = {2,3,4,5,6,7,8,9,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45};
      int incomingByte[numChannels];

      void setup()

      for(int i = 0; i < numChannels; i++){
      pinMode(channels[i], OUTPUT);
      // Start with lights turned off


      // Uncomment/edit one of the following lines for your leds arrangement.
      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);
      FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS); // I changed RGB to GRB as that is how my pixels are configured
      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);

      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);

      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);
      // FastLED.addLeds(leds, NUM_LEDS);



      void loop()
      if (Serial.available() >= numChannels)
      for (int i=0; i<numChannels;i++)
      incomingByte[i] = Serial.read();

      for(int i = 0; i < numChannels; i++)
      //digitalWrite(channels[i], incomingByte[i]);
      digitalWrite(channels[i], 0+incomingByte[i]);

      for(int i = 0; i 0) {
      Serial.readBytes( (char*)leds, NUM_LEDS * 3);



  14. Hi Dave, Just a quick question, When i run my sequence in vixen should my LED strip from my Arduino be flashing just like the demo on screen?

  15. My problem was i put 016 in vixen as a header and the light flaseh on the arduino BUT it needed the >>016<< the greater than and lessthan signs are needed

  16. Hi Dave, I am hoping to set up a mega tree next year (starting early as I’m a newbie!!!!!) and your example looks extremely straight forward however I am most probably about to over complicate it. Is it possible to have an Arduino listen for these serial comms over Ethernet? Say for example I have one Arduino connected via usb taking the serial data and sending to a receiving Arduino connected to the Pixels?

    • Since the limit with the arduino is only 300 leds, a mega tree is out of the question. Dave recently mentioned below that using a teensy version 2 or higher allowed him to use 800 led.
      I am interested in an arduino-vixen mega tree as well as well as other features. I purchased a wifi chip for $2 and a bunch of 433mhz tranceivers also so hopefully I can setup a mesh network. I dont have any idea what to use for code but Dave’s code here is a nice start. I also found this posted for running an arduino pixel tree http://auschristmaslighting.com/forums/index.php?topic=6528.0

  17. Dave thanks for the tutorial. I have 2 questions. First my setup is an arduino DUE and ws2811 pixels. i tried using the code as is and also tried to change the code to read ws2811 instead of ws2812b. As soon as i start Vixen, my first pixel red comes on and stays on. Also when i dim the pixels, they flash between 2 colors instead of dim the one color. i am not sure if those are related to eachother. My questions are: 1) Is it a problem with the Due or 2) Is it a problem with 2811 instead of 2812b?

    • Forgot to mention that if i use set level and set to full, all colors work as expected.

  18. Thanks for the code Dave!
    Since this code on an arduino uno or mega has a limit of only 300 LED, is there a way around that? Other commenters mentioned using a teensy with the octa board but then that would break this code, or would it be compatible?

    • I thought I mentioned in in one of my articles, but yes, I am running about 800 pixels on a Teensy++ 2.0. It overcomes the serial and memory limitations I speak about in this article.

  19. I had my ws2811 set up with 150 leds. Followed all instructions, all working out, however, my leds lights in a group of three’s instead of individual. The preview is showing individual. Any advice?

  20. Hey Dave, I’m new to light sequencing and have used your code to start my project. The biggest problem for me is the refresh rate. I have a 240 pixel strip but after getting past using 100, the refresh rate becomes too slow for me. Can you let me know the best way to get around this? I’m currently an Arduino UNO R3 with a 240 diode WS2812B strip. I’m looking to run the whole strip with a high refresh rate, something like 30-50ms. Thanks.

    • I ran 600 WS2812B LEDs using a Teensy. Because the teensy has a virtual com port, it is not limited by the serial throughput of the FTDI or CH340G chips.

  21. Hello Dave,
    I used your setup with an xbee wireless module and it works great! vixen recognizes the xbee module and I’m able to send the serial data wirelessly to an arduino hooked up to led modules. My question is, how can I modify the arduino sketch so that it will skip over the data for the first 20 pixels, then read the data starting with the 21st pixel and make that 1st pixel hooked up to the arduino? I want it to work like a DMX device so I can have five devices working off one serial port.

  22. Is there a way to add a trigger to the arguing? For example, I would like my show to start when a button is pressed. And if so, what about multiple triggers?

  23. I just tried this…it works great except when the leds should be off, they are red…Any suggestions???

  24. Can this code be modified to support multiple separate strings on individual data pins?

  25. Hi, looking for more info on the post above. I am using an arduino mega to control 16 relays and 250 LEDs. I was able to get 100 LEDs working and when i strung the next 25, i still have plenty of voltage, but my data stopped working at 100. Do i need to change my refresh rate to 100ms in vixen? I saw the max is 300 LEDs, so i should be okay. I have a 75 watt power supply and never going to full white, so i will only use a third of my max power.

    Thanks for any help.

  26. Window 10
    Vixen 3
    Arduino Uno R3
    115200 usb
    100 refresh
    470 ohm resister
    470uf cap w/separate 30A power
    Ws2812b 300pixel
    Header >>300 <<
    Using code from this blog, and fastled lib, data pin 6, 300 pixel count

    Getting a random flickering all colors like noise on the data line? Continues as show is played or when stopped. Any ideas?

  27. Thanks for your ideas,But I have a problem:If i want more numbers of LEDs,How did I should do?

  28. Greetings! This code works wonderful with my setup. I was wondering if anyone came up with some code to integrate both relays (SSR or analog) and LED strips on the same Arduino with Dave’s code as a base.

Leave a Reply

Your email address will not be published. Required fields are marked *