Neopixel Dome Button




Introduction: Neopixel Dome Button

This is an Instructable I wanted to do for a while, on how to build a really great-looking Dome Button with built-in LEDs. It's part of a 2-series where I will explain how we built our Hackerspace Status Button for P-Space, our local hackerspace in Patras, Greece.

The basic premise is that we wanted a way for the first person coming into P-space to set the space status to Open, and the last one to leave to set it to Closed. We used to do this through a simple web page, but we wanted an easier way to do that, so we set up an Arduino with a Wi-Fi shield next to the door that connects to that web page and controls the status.

That way, we can still use the web page, or just hit a button as we leave, and let the Arduino do the rest.

And we wanted a big, fancy button for that.

For this Instructable, you will need:

Let's go!

Step 1: Prepare the Hardware

First of all, you will want to disassemble your Dome Button. It consists of 2 black plastic parts for the casing, and 2 white parts + 1 clear front for the moving part of the button.

The 1st part of the casing already has 4 holes, which are just right for the cables, but you will need to cut a hole in the second part, as seen in the first picture. I just used a Dremel with a drilling bit for that, and I was done in seconds. You will also need to do the same for one of the white plastic parts, as seen in the 2nd picture.

You will then need to solder the wires to the NeoPixel Ring. I used three different colored wires (Red for 5V, Black for GND, and Blue for Data/IN), which makes wiring easier in the next steps.

After that, using the Glue Gun, you just glue the NeoPixel Ring to the white moving part as seen in the 2nd picture, making sure that the wires run through the hole.

For extra effect, we used our a laser cutter to etch the semi-transparent plastic of the button's front face, and added a nice little logo. Unfortunately, we didn't have the P-Space logo in vector format at the time, so we used codebender's logo instead. Still looks great if you ask me ;)

Now, last but not least, snap all the pieces back together, making sure that you align the various holes correctly, and that the wires don't get caught anywhere. Your button is ready to go :)

Step 2: Wiring

We really wanted the whole thing to be independent, so for all intents and purposes, it's a drop-in replacement to a standard button, only it requires power to operate.

In order to make it independent, we used an Adafruit Trinket 5V, which controls the NeoPixel ring to show a nice rainbow effect, and flashes the NeoPixel Ring green twice when the Dome Button is pressed. It will then go back to showing the rainbow effect.

We also use one of the Trinket's pins as an output, and toggle it when a button is pressed. By connecting this output to an Arduino's Digital Input*, and toggling it between 0V and 5V, we can make an Arduino think that a button is pressed.

*We also need to connect the two Grounds (GND) together. This is called "common ground", and it's necessary in order for two circuits to work together

Step 3: The Code

That's the easy part. Just use the code provided here to program your Adafruit Trinket.

I've embedded the code from codebender, so that you can use it without having to install the Arduino IDE or any libraries. Just install the browser plugin, select the Adafruit Trinket, and click Run on Arduino.

Note: The Trinket doesn't show up as a Serial Port, but rather as a usbtinyisp programmer. That means that you will not see a COM port when you connect it, and there's no need to select a port to program it. Also, right now, codebender doesn't support usbtinyisp on Chrome, so you'll have to use firefox if you want to program a Trinket.

Keep in mind that the Trinket doesn't auto-reset, so you will have to press the reset button manually when you flash it.

ATTiny NeoPixel Dome (for door)

Step 4: Enjoy!

Hope you enjoyed this. On my next Instructable, I will show the main circuit for our Space Status Button, that uses an Arduino & Wi-Fi Shield to control the hackerspace's status, an RGB LCD to show the current status, and uses the Dome Button we just made as a button to change the status.

Be the First to Share


    • Trash to Treasure Contest

      Trash to Treasure Contest
    • Science Fair Challenge

      Science Fair Challenge
    • Woodworking Contest

      Woodworking Contest



    3 years ago

    Great move!
    Here I thought this was a novel idea. The LEDs that ship with the buttons are useless. The neopixel ring adds tons of functionality to the button. Keep making cool stuff!

    IMG_1312 2.png

    3 years ago

    I've been doing this for about a year now, and it's my favorite button ever! I've made a voting machine out of them—pulse them white to draw visitors closer, and rainbow effect when pressed. People love it! The 24 pixel RGB rings also fit, if you want more pixels to play with. Theoretically you could fit multiple rings inside the button for a 2-dimensional array.


    4 years ago

    sparkfun doesn't seem to sell the clear version of the 100mm dome button, any more, but you can find it on amazon:

    i just bought all four of the colored versions (red, blue, green, yellow) for a project of mine, but now i see this and it's about seven hundred times better to be able to control the color, so yeah... another forty bucks for the clear versions.


    Reply 4 years ago

    and you can find the "rgb led rings" on ebay for WAY cheaper than adafruit.

    i chose the 12 led version:


    6 years ago on Introduction

    Looks awesome.Can't wait for part 2, we have been considering making something like this, so would love to see how you guys did it.