Overview
As we get closer to launching the new Adafruit IO Actions, it has been fun thinking of the many fun ways it can be used. Here is a really simple project that has a ton of potential without writing a single line of code. With this project, I simply added a NeoPixel to a simple arcade button (using the below Learn guide), and then use that LED and button to communicate information in different ways. The more I play around with this project, the more ideas I come up with. So be sure to check back here often as I will post more ideas as I come up with them.
Parts Used
I used the NeoPixel Mini Button as shown in the guide above, but used the QT Py ESP32-S3 board with the NeoPixel BFF to drive the NeoPixel, then just soldered one side of the button to 3V on the QT Py, and the other side of the button to A2.
You could also simply skip modifying the arcade button, and just use the built in NeoPixel on the QT Py. You could even just use the built in pushbutton on the QT Py and skip the Arcade Button all together. This guide isn't so much about the specific project, as it is about the possibilities of the new Adafruit IO Actions. You can set this up with any NeoPixel and button.
With that in mind, here are the products I used:
Adding the Components
For this project we really just need to add the button, and NeoPixel to the device. For each of these, just click New Component, search for NeoPixel and Push Button. For the NeoPixel, if you are using the NeoPixel Driver BFF, you can set the NeoPixel Pin to A3. Set the number of pixels to 1, and keep the color order GRB.
For the pushbutton, I have it attached to A2, return interval set to On Change, Specify Pin Pull Direction checked, and Pull Down checked.
Finding LED Values
In the examples below, I will be using IO Actions to set the color and brightness of the NeoPixel in the button. The easiest way to figure out what hex values are best is through trial and error. Go into the devices page, and under the NeoPixel you set up for the button, use the colors and slider to pick the ideal color and brightness. Then, you can click the color picker icon, and copy the associated hex value.
Daily Reminder Timer
The first action I set up is a simple timer that turns the NeoPixel on to remind me to do a task at a certain time each day. This could be useful as a reminder to take a medication, feed the dog, or any other task. To start with, I just set up a new action to turn the NeoPixel to blue at 6pm. That's it for the first action:
Next we need to set up another action that will just clear the LED. So, once you see the notification and take action, you can press the button to turn off the LED and wait for any future notifications. All we need to do here is check for any new data that comes from the push button (it gets pressed), and then set the LED to #000000 (black/off).
With this example, I will get a blue light at 6pm every day to remind me to feed the dog (though he does a good enough job of reminding me on his own). Once I have fed the dog, I will press the button to clear the LED.
You could set up a bunch of these, and use the color of the LED to remind you of a different task. If it glows green, its time to take medication. If it glows red, it is time to stand up and stretch.
Let's move on to another example.
Pomodoro/Activity/Countdown Timer
This example we will set up two different actions, but both will trigger when the button is pressed. The first one will be to just turn on the LED when the button is pressed. The other action we will set up uses the delay function to turn off the LED after a set amount of time.
Let's start by creating a simple 60 second countdown timer. First, we need to set up the action to simply turn on the led when you press the button:
Now we just need to set up a delayed action to turn off the LED after a set amount of time after the button was pressed. In this case, we will set the delay to 1 minute:
Here you can see we set the LED color to #000000 (black/off) 1 minute after the button is pressed. You can use the little cog button next to Triggers to adjust the delay to whatever you want.
Weather Notification Button
If you have an Adafruit IO+ subscription, you will have access to the super powerful weather block. There is an incredible amount of weather data that you can tap into with this little block. For this example, I am going to set up the button to check if it is going to rain in the next 30 minutes. Again, we will trigger this based on a button press, and then check Precipitation Intensity in the next 30 minutes. If it is more than 0, I will change the button color to blue, if it is 0 (no rain), I will change it to green.
Just like the first example, I am going to set up a timer to turn off the LED after 1 minute.
This page (The Many Possibilities of Adafruit IO Actions and an Arcade Button) was last updated on April 18, 2025.