Light Dance Show Solutions: Custom Label Template for Adafruit IR Remote Control

I’ve designed and written tutorials for several different LED spin and flow props on the Adafruit Learning Center.  My dance troupe uses these props all the time doing professional LED light dance shows in the San Francisco Bay Area.

Lately our Fire Pixie LED light dance show has been getting complicated.

Problem 1: Dancers

When I’m onstage dancing, my focus is in my body.  I feel the flow of the props, feel the music, and feel the audience.  It’s a wonderful state to be in.  It does not lend itself to thinking.

For a 20 minute corporate or private party performance,  my dance partners and I go through four or five different LED props.  Each prop can have multiple scripts running programmed lights choreographed to different songs, which need to be triggered at specific moments in the show.  Sometimes the clients also want ambient strolling dancers after the show, and in that case we need our props to automatically scroll through different images forever.

I need each dancer to be able to effortlessly switch between props and understand how to start and control them.  Dancers are great with their arms and legs and faces.  With technology…. not so much.  I need to make it tactile, obvious, and easy.

Problem 2: IR Controlled Props

My Supernova Poi and Morningstar Doublestaff props are ones I made myself, so I have a lot of control over their UI.  The hula hoops I use are made by SpinFX, and so I have a lot less control.

I like the SpinFX Phoenix hula hoops because they are scriptable, and I can customize which buttons do what on the remote control, but I am still stuck using their remote since I can’t control what IR codes the hoop listens for.

For the poi and the double staff I use Adafruit’s IR remote control.  This remote has lots of tasty buttons, but unfortunately some of them conflict with the SpinFX hula hoop receiver — and not in a “hey that’s handy, I can consolidate remotes” kind of way.  Four of the buttons on the Adafruit remote sneakily overwrite the SpinFX hoop’s config file, instantly erasing my scripts and any custom remote commands.  Poof.  Gone.

This is rather catastrophic.  A stray button press will completely disable my hoop right before I go onstage.  (And let me tell you, I had a devil of a time figuring out what was going on here!)

Solution 1: Convert All Props to use the SpinFX Remote

Since I can’t change the hoop’s IR codes, I figured I’d just go with the flow and change the poi and double staff to use the other buttons on the hoop remote.  There aren’t quite enough buttons, but using one to start the show on all props shouldn’t be too hard.

I hooked up an IR sensor and uploaded the serial IR remote code finder code from the IRremote library.  This prints any IR code received to the Serial monitor.   I pressed the buttons on the SpinFX remote and wrote down all the codes.

This remote did something strange.  Instead of just sending one code per button press, it alternates between two different codes each time a button is pressed.  I did some research and discovered this may be a toggle bit R5 or R6 remote.. but I’m just not sure.  I added modes for both codes, just in case.

After punching it into shape to work with the poi, I repeated my work with the double staffs and realized that the Pro Trinket (running the double staffs) interprets IR codes completely differently than the Teensy (running the poi).  The codes it reads from the Adafruit remote are different, and it wouldn’t read the codes I’d discovered for the SpinFX remote at all.

I can’t easily query the double staffs themselves since the Pro Trinket doesn’t have a serial port, so I can’t just ask it what codes it is receiving without messing about with FTDI (impossible since the board is already built into my props).   Arrgh.

At this point I decided to just give up and try something else.

Solution 2: New Label Template for my Adafruit Remote

I’m stuck with using two remotes, so at least I can make my life easier with a lovely colorful label template.  Here’s the .psd file:


The Adafruit remote is laid out in a rather video-gamey style, which didn’t quite work for me considering I had to avoid five of the buttons in the middle so as not to kill my hula hoops.  I started from scratch and reassigned the buttons in a way that make the most sense for my particular application.  I color coded the buttons and x’ed out all the buttons that need to be avoided at all costs.
I updated my poi and double staff code to map to the new button layout.

Then I found some large Avery shipping labels and printed the new design out right on the label.  It fit just perfectly once I trimmed it down.  I’ve now got an adorable custom remote that even a dancer in the middle of a show can figure out.

Here’s hoping this solution smooths out a few more of the edges on our light show.

Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at !

No Comments

No comments yet.

Sorry, the comment form is closed at this time.