RGB LED lighting strips are everywhere. Many of these strips come with a handy infrared (IR) remote control that will allow you to select different colors, change brightness, and fade from one color to the next. They're very easy to install and use, but can be rather a disappointment for the discerning LED connoisseur.

The pre-programed animations and available colors on these cheap RGB strips are very basic. You can get ordinary solid colors or annoying blink modes, but buttery smooth subtle color shifts, gradients, and beautiful mesmerizing animations are far beyond the reach of these "dumb" RGB strips. For subtlety and beauty, you need NeoPixels - "smart" individually addressable LED lights that can be controlled with code.

This guide will show you how to get beautiful, subtle NeoPixel animations up and running and controllable with a simple IR remote in minutes, with no coding required.

The free, open-source WLED app allows you to create your own NeoPixel animations, choosing from hundreds of effects and color palettes. Automatically map your custom animations to the buttons on your IR remote, so you can choose solid colors or run your beautiful custom animations from the same controller.


Angled shot of purple square-shaped microcontroller.
This dev board is like when you're watching a super-hero movie and the protagonist shows up in a totally amazing costume in the third act and you're like 'OMG! That's...
Video of a driver board lighting up an RGBW half-meter long LED strip.
Our QT Py boards are a great way to make very small microcontroller projects that pack a ton of power - and now we have a way for you to quickly add a
Adafruit NeoPixel LED Strip with 3-pin JST PH Connector lit up rainbow
Plug in and glow, this Adafruit NeoPixel LED Strip with JST PH Connector has 30 total LEDs in a "60 LED per meter" spacing,...

This works with a traditional inexpensive IR sensor:

IR (Infrared) Receiver Sensor plugged into breadboard
IR sensor tuned to 38KHz, perfect for receiving commands from a TV remote control. Runs at 3V to 5V so it's great for any microcontroller.To use, connect pin 3 (all the...

Or you can use Adafruit's IR Remote Receiver, which has IR sensors that face in two directions. This is a plug-and-play solution with a Stemma connector so you don't need to worry about soldering fiddly sensor legs.

Hand demo still
A year ago we designed a high-current-output Infrared Transmitter STEMMA which makes it easy to create high-powered...

WLED software will work with a wide variety of different remotes. For this tutorial I'm using this 44-key remote from Amazon.

1 x Stemma Connector
Stemma Connector with Female Sockets
1 x Standard Heat Shrink
Heat Shrink Tubing in various sizes
1 x USB C cable
USB C to USB A Cable
1 x Female Headers
Short Female Headers

Tools & Accessories

  • Heat Gun
  • Hot Glue Gun
  • Soldering iron & accessories

We'll be powering the pixels directly through the board since we only have a few pixels. This arrangement works for small projects of 30-60 pixels. For larger projects with more LEDs, you'll want to power the pixels directly from a 5V power supply. If you are powering more than 20 LEDs or so, see the guides below:

The QT Py attaches back-to-back with the BFF using soldered-on headers.

The NeoPixel strip plugs into the 3-pin connector on the BFF, and the IR sensor will plug into the Stemma port on the QT Py using a a Stemma cable.

Driver Update

Some versions of the QT Py have a new serial chip which needs a driver installed before we can install WLED. Head over to our How to Install Drivers for WCH USB to Serial Chips tutorial, and download and install the new driver.

If you have an older QT Py with CP2102 USB-to-Serial bridge, use SiLabs’ driver instead.

Install WLED

These next steps require a Web Serial-compatible browser. As of this writing, that means Google Chrome, Microsoft Edge or Opera “desktop” browsers. Other browsers (Safari, Firefox, Explorer and anything mobile) won’t work.

Visit https://install.wled.me/

Plug your microcontroller into your computer with a known good USB cable. Click "Install" and select the port for your board.

Depending on the USB-to-serial bridge chip on the board, you might see one or two serial ports. On Mac, for instance, there might be both “/dev/cu.usbmodem[number]” and/dev/cu.wchusbserial[number]”. Use the “wchusbserial” one.

After successful installation, enter your WiFi network name and password when prompted. This must be a 2.4 GHz WiFi network; ESP32 does not support 5 GHz networks. If it can’t connect, then as a fallback WLED will create its own 2.4 GHz WiFi access point.

Setup & Preferences

WiFi Setup

It's a good idea to head to WiFi Setup screen and create a good URL so you can control your project from any web-enabled device. I called mine http://pico.local -- this is what I type into any web browser on my WiFi network in order to connect to my project.

LED Preferences

You need to change just a couple settings in the app to get the lights running correctly. Click the LED Preferences tab and scroll down to Hardware Setup. Enter the total number of LEDs in your strip under "Length".

Our data pin is connected to A3 (aka pin 15) on the QT Py, so make GPIO match the pin number. Also, change the IR GPIO pin to 22, which corresponds to the blue wire in the Stemma connector.

Use It

Now you can use any computer or handheld device to control your LEDs. 

Make sure your device is on the same WiFi network as your board. Navigate to your custom URL (pico.local/ for me) in a web browser. You'll see a color picker above a whole bunch of color palette choices.

Choose a color, choose an effect, and watch your lights animate and glow!

Save your favorite combinations as presets, create playlists, control the speed and intensity of the animations, and lots more. This web app is incredibly intuitive and easy to use.

On my 44-key remote, there are buttons near the bottom labeled "DIY1", "DIY2" etc. WLED will automatically assign your animation presets to these buttons so you can select your favorite presets or playlists. Simply save the presets you want to the first 6 preset slots and the buttons will pull them up. 

You will need to press the button marked "Auto" to switch to DIY mode on the remote. Press "Auto" then "DIY1" to play the preset saved to slot #1 in WLED.

Head over to the WLED wiki at https://kno.wled.ge/ to delve into all the particulars.

Assembly is fairly simple for this project. Watch the video tutorial for a complete step-by-step.

QT Py & BFF Headers

Solder headers onto the QT Py and BFF to stick them together. If you're new to soldering headers, check out this How to Solder Headers guide.

The boards align back-to-back, so I soldered regular headers onto the QT Py and female socket headers onto the back of the BFF.

IR Sensor

Trim the sensor legs about halfway down. Cut the yellow wire off your stemma connector - we only need 3 wires for the sensor.

With the sensor bump facing you and the legs pointing down, slip the red wire onto the leg on the right, the black wire to the middle leg, and the blue wire to the leg on the left.

Cover the connections with heat shrink, and squirt a little hot glue inside before you shrink it down to hold the connections firmly together.

Solder to the stemma connector as follows:

  • IR sensor red --> stemma red
  • IR sensor black --> stemma black
  • IR sensor white --> stemma blue

The yellow wire on the stemma connector is unused.

IR Breakout

Plug your smaller stemma wire into the QT Py's stemma port, and your larger stemma wire into the IR sensor. Connect the two together by soldering or just plugging in the male and female ends.

Plug the sensor into the Stemma port on the QT Py and the NeoPixel strip into the BFF's NeoPixel port. Plug the QT Py into power with the USB cable. And you're in business!


If the lights don't come on, or the remote doesn't seem to do anything, here are a couple things to try:

  1. Open the WLED software and go to the LED Settings page. Make sure you have the correct pin (GPIO) entered here. The BFF's port is attached to A3, which corresponds to digital pin 15 (A3 is the analog pin number. Find this out in the pinout diagram in the QT PY guide).
  2. Also be sure you've chosen IR GPIO pin 22 in the WLED software on the same page, and that you've selected your remote from the dropdown.
  3. Wiggle the connections on the IR sensor to be sure they haven't pulled loose.
  4. If it's still not working, head over to the NeoPixel Uberguide and try uploading some basic code, just to see whether the problem is with your wiring or with the software. If you can get the lights to come on using Arduino or CircuitPython, the trouble is with the software -- try reinstalling.

This guide was first published on Dec 06, 2022. It was last updated on Jul 10, 2024.