# Remote Control with the Huzzah + Adafruit.io

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/028/040/medium800thumb/adafruit_products_HUZZAH-Remote-LED.jpg?1448322597)

This guide will show you how to send button press data to Adafruit IO from the HUZZAH ESP8266, then&nbsp;use that data to change the color of an LED connected to a second HUZZAH ESP8266.

If you haven't worked your way through the Adafruit IO feed and dashboard basics guides, you should do that before continuing with this guide so you have a basic understanding of Adafruit IO.

- [Adafruit IO Basics: Feeds](../../../adafruit-io-basics-feeds)
- [Adafruit IO Basics: Dashboards](../../../adafruit-io-basics-dashboards)

You should also go&nbsp;through the setup guide associated with&nbsp;the&nbsp;HUZZAH ESP8266 for use with the Arduino IDE.

- [Adafruit HUZZAH ESP8266 Setup Guide](../../../adafruit-huzzah-esp8266-breakout/using-arduino-ide)

If you have completed&nbsp;all of the prerequisites listed above, you are now ready to move on to the&nbsp;Adafruit IO setup steps.

Let's get started!

# Remote Control with the Huzzah + Adafruit.io

## Adafruit IO Setup

The first thing you will need to do is to login to your [Adafruit IO account](https://io.adafruit.com)&nbsp;and get your Adafruit IO Key if you haven't already. Click the **AIO KEY** button on the right hand side of the window to retrieve your key.

A window will pop up with your Adafruit IO. Keep a copy of this in a safe place. We'll need it later.

## Creating the Buttons Feed

Next, you will need to create a feed called _"Remote Buttons"_. If you need help getting started with creating feeds on Adafruit IO, check out the&nbsp;[Adafruit IO Feed Basics&nbsp;guide](../../../../adafruit-io-basics-feeds).

![](https://cdn-learn.adafruit.com/assets/assets/000/027/962/medium800/adafruit_products_Feeds.png?1443832073)

## Adding the Gauge Block

Next, add a new **Gauge** &nbsp;block to a new or existing dashboard. Name the block whatever you would like, and give it a **max value** of **3**. Make sure you have selected the **Remote Buttons** &nbsp;feed as the data source for the gauge.

If you need help getting started with Dashboards on Adafruit IO, check out the&nbsp;[Adafruit IO Dashboard Basics guide](../../../../adafruit-io-basics-dashboards).

![](https://cdn-learn.adafruit.com/assets/assets/000/027/963/medium800/adafruit_products_Gauge.png?1443832219)

When you are finished editing the form, click **Create Block** to add the new block to the dashboard.

Next, we will look at how to connect an Arduino via WiFi to Adafruit IO.

# Remote Control with the Huzzah + Adafruit.io

## Arduino Setup

## Arduino Dependencies

The code in this guide are based off of the ESP8266 examples&nbsp;created by Tony DiCola and Todd Treece.&nbsp;You will need the following Arduino library installed to compile the sketch:

- [Adafruit IO Arduino Library&nbsp;](https://github.com/adafruit/Adafruit_IO_Arduino)

The easiest way to install it&nbsp;is by using the [Arduino IDE v.1.6.4+ Library Manager](https://www.arduino.cc/en/Guide/Libraries#toc3).&nbsp;You will also need to have the ESP8266 board manager package installed. For more info about installing the ESP8266 package, visit the&nbsp;[HUZZAH ESP8266 setup guide](../../../../adafruit-huzzah-esp8266-breakout).

```
http://arduino.esp8266.com/stable/package_esp8266com_index.json
```

### Adafruit IO Setup
To find your `IO_USERNAME`, [navigate to your profile on Adafruit IO](https://io.adafruit.com/profile) and click **View AIO Key** from the drop-down menu on smaller screens, or the&nbsp; **b**** lack key in a y ****ellow filled circle** in the top right on larger screens.   
Copy the **Username** field (ctrl+c or command+c)

![](https://cdn-learn.adafruit.com/assets/assets/000/054/864/medium800/adafruit_products_username.png?1528141790)

Then, in the `config.h` tab, replace the `"your_username"` text with your the username from your profile:

![](https://cdn-learn.adafruit.com/assets/assets/000/054/855/medium800/adafruit_products_adafruit_io_adafruitio_06_digital_in_-_config_h___Arduino_1_8_5_and_Adafruit_Learning_System.png?1528139435)

To find your `IO_Key`, navigate to your profile, click&nbsp; **View AIO Key** , and copy the **ACTIVE KEY** field to your clipboard (ctrl+c or command+c).

In `config.h`, replace the IO\_KEY with the IO Key copied to your clipboard.

![](https://cdn-learn.adafruit.com/assets/assets/000/054/856/medium800/adafruit_products_adafruit_io_adafruitio_06_digital_in_-_config_h___Arduino_1_8_5.png?1528139471)

### Wireless Setup
In the `config.h` tab, replace `"your_ssid"` with your WiFi's SSID and `"your_pass"` with your WiFi's password:

![](https://cdn-learn.adafruit.com/assets/assets/000/054/857/medium800/adafruit_products_adafruit_io_adafruitio_06_digital_in_-_config_h___Arduino_1_8_5_and_Adafruit_Learning_System_%281%29.png?1528139763)

# Remote Control with the Huzzah + Adafruit.io

## Button Board

![](https://cdn-learn.adafruit.com/assets/assets/000/027/959/medium800/adafruit_products_IMAG0351_BURST002.jpg?1443724124)

First we will create a simple input controller that will let Adafruit IO know what button was pressed. For this project we will be adding buttons to represent each of the possible states to be passed to our output device.

- 0 will represent "OFF"
- 1 for&nbsp;Red
- 2 for Green
- 3 for Blue

There are a few things we will need to get started:

- [1 x HUZZAH ESP8266](http://www.adafruit.com/product/2471)
- [3 x colored tactile push buttons (Red, Green, and Blue)](http://www.adafruit.com/product/1009)
- Six&nbsp;470 Ohms resistors
- [Jumper wires](http://www.adafruit.com/product/759)
- [Breadboard](http://www.adafruit.com/product/64)

Now let's get started with the wiring.

# Remote Control with the Huzzah + Adafruit.io

## Buttons Wiring

There are basically two ways to add simple&nbsp;button input for this project. We could just add a button to each digital pin, but that would limit the number of&nbsp;buttons we could use. This time around we will use resistors along side of our buttons and read the analog value based on what button was pressed. This works by adding one resistor to each button, but also setting the resistors up in series. When nothing is pressed, all of the resistors are used and we get a low number value when the analog pin is read. When we press a button, it shorts out the resistor string and we get another value when the analog pin is read. The higher the button is on the chain, the lower the analog value is. Ultimately, this means that we can add as many buttons as we want and only use up one PIN to do it.

We will now connect all of the components&nbsp;to match what is shown below. There should be just enough&nbsp;room to fit 3 of the colored push buttons and one of the 6MM buttons side by side.

![](https://cdn-learn.adafruit.com/assets/assets/000/027/928/medium800/adafruit_products_Assistive_Call_Buttons_Analog_bb.png?1443601672)

1. Connect one of the **GND** pins to the **-** side of the breadboard.
2. The **3V** pin should connect with the **+** side of the breadboard.
3. Connect one side of&nbsp;each button to it neighbouring&nbsp;button.
4. The last button will connect to the **A** pin on the HUZZAH.
5. Now add one resister&nbsp;connecting&nbsp; **GND** &nbsp;to the **A** pin.
6. Add the remaining resisters to the other side of each button&nbsp;in series with the last two connecting with the **3V** pin.

This can be powered through the FTDI cable, but you may want to add a battery or other power supply by connecting it to the **GND** and **VBat** pins.

Now it's time to code.

# Remote Control with the Huzzah + Adafruit.io

## Buttons Code

Info: 

The previous version of this guide used the Adafruit MQTT Arduino Library, but we suggest using the Adafruit IO Arduino Library. If you'd like to use this library, we suggest following the&nbsp;[MQTT, Adafruit IO & You! Learn Guide](https://learn.adafruit.com/mqtt-adafruit-io-and-you)

The Arduino sketch for this project is fairly straight forward. Copy the following code into a new Arduino sketch. You'll need to modify your `config.h` file to reflect your Wireless Network and Adafruit IO configuration.

If you do not know how to do this, follow the steps on the the&nbsp;[Arduino Setup](https://learn.adafruit.com/remote-control-with-the-huzzah-plus-adafruit-io/arduino-setup?)&nbsp;page.&nbsp;

```
// Remote Control with the Huzzah + Adafruit IO
// 
// Button Board
// 
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Written by Richard Albritton, based on original code by Tony DiCola for Adafruit Industries
// Licensed under the MIT license.
//
// All text above must be included in any redistribution.

/************************** Configuration ***********************************/

// edit the config.h tab and enter your Adafruit IO credentials
// and any additional configuration needed for WiFi, cellular,
// or ethernet clients.
#include "config.h"

/************************ Example Starts Here *******************************/
#include &lt;ESP8266WiFi.h&gt;

// Analog Pin on ESP8266
#define Buttons A0

// remote-buttons state
int ButtonRead = 0;
int current = 0;
int last = -1;

// set up the 'remote-buttons' feed
AdafruitIO_Feed *RemoteButtons = io.feed("remote-buttons");

void setup () {

  // start the serial connection
  Serial.begin(115200);

  // wait for serial monitor to open
  while(! Serial);

  // connect to io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();

  // wait for a connection
  while(io.status() &lt; AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());
  
}

void loop() {
  
  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();

  ButtonRead = analogRead(Buttons);
  delay(1);
  // grab the current state of the remote-buttons
  if (ButtonRead &gt; 500 &amp;&amp; ButtonRead &lt; 600) {
    current = 1;
  }
  if (ButtonRead &gt; 600 &amp;&amp; ButtonRead &lt; 750) {
    current = 2;
  }
  if (ButtonRead &gt; 750 &amp;&amp; ButtonRead &lt; 900) {
    current = 3;
  }
  if (ButtonRead &gt; 900) {
    current = 0;
  }

  // ret if value hasnt changed
  if(current == last)
    return;

  int32_t value = current;
  
  // let's publish stuff
  Serial.print("Sending RemoteButtons Value: ");
  Serial.print(value);
  Serial.print("...");

  RemoteButtons-&gt;save(value);
  delay(3000);
  
}

```

When you are finished reviewing the sketch and have finished making the necessary config changes, upload the sketch to your HUZZAH&nbsp;using the Arduino IDE. You should also open up your Adafruit IO dashboard so you can monitor the&nbsp;button gauge.

If everything goes as expected, you will see the gauge update on Adafruit IO. You should make sure to open&nbsp;the Arduino IDE's serial monitor if you are having issues with the sketch. It will provide valuable debugging info.

To add more buttons, just copy one of the conditional ( **if** ) statements and palce it in with the others. Each of the conditional statments reprisents a button that registers a press if the analog value is within a certain threshhold. You will need to set a minimum&nbsp;and maximum&nbsp;threshhold for all but the last button. The last button just needs to be grater than the maximum value of the button before it.

```
 // grab the current state of the remote-buttons
    if (ButtonRead &gt; 500 &amp;&amp; ButtonRead &lt; 600) {
      current = 1;
    }
    if (ButtonRead &gt; 600 &amp;&amp; ButtonRead &lt; 750) {
      current = 2;
    }
    if (ButtonRead &gt; 750 &amp;&amp; ButtonRead &lt; 900) {
      current = 3;
    }
    if (ButtonRead &gt; 900) {
      current = 0;
    }
```

This sketch is set up to output the analog value of whatever button is pressed. You could figure out was the value of each button is with some math, but it is easier&nbsp;to just look at what the reading is using the serial monitor. &nbsp;Give each button a wide birth to accommodate&nbsp;for any fluctuations.

Don't forget to add a&nbsp;new number to be set as the&nbsp; **current** &nbsp;value. Also be sure to set the Gauge&nbsp;so that it can accommodate&nbsp;the extra numbers.

Next, we will set up another HUZZAH to output the feed data to an RGB LED.

# Remote Control with the Huzzah + Adafruit.io

## LED

![](https://cdn-learn.adafruit.com/assets/assets/000/027/961/medium800/adafruit_products_IMAG0352_BURST002.jpg?1443767198)

Now it is time to&nbsp;connect an RGB LED to&nbsp;Adafruit IO so that it can display the color of the button that was pressed.

There are a few things we will need to get started:

- 1 x [HUZZAH ESP8266](http://www.adafruit.com/product/2471)
- 1 x [RGB LED](http://www.adafruit.com/product/848)
- [Jumper wire](http://www.adafruit.com/product/759)
- [Breadboard](http://www.adafruit.com/product/64)
- 3 x 470 ohm resistors (not shown)

Now let's get started with the wiring.

# Remote Control with the Huzzah + Adafruit.io

## LED Wiring

We will now connect all of the components&nbsp;to match what is shown below.

![](https://cdn-learn.adafruit.com/assets/assets/000/031/567/medium800/adafruit_products_Untitled_Sketch_bb.png?1459751919)

Info: 

1. Connect the&nbsp; **3V** &nbsp;pin to the **+** &nbsp;side of the breadboard.
2. The longest pin of the LED needs to connect with the&nbsp; **3V** pin.
3. Pin **#2** will connect to the **Red** pin on the LED.
4. The **Blue** pin sould connect with pin **#4**.
5. Connect pin **#5** to the **Green** pin.

This can be powered through the FTDI cable, but you may want to add a battery or other power supply by connecting it to the **GND** and **VBat** pins.

Now it's time to code.

# Remote Control with the Huzzah + Adafruit.io

## LED Code

Info: 

The previous version of this guide used the Adafruit MQTT Arduino Library, but we suggest using the Adafruit IO Arduino Library. If you'd like to use this library, we suggest following the&nbsp;[MQTT, Adafruit IO & You!](https://learn.adafruit.com/mqtt-adafruit-io-and-you)&nbsp;Learn Guide

The Arduino sketch for the LEDs is also fairly straight forward. Copy the following code into a new Arduino sketch. You'll need to modify your `config.h` file to reflect your Wireless Network and Adafruit IO configuration.

If you do not know how to do this, follow the steps on the the&nbsp;[Arduino Setup](https://learn.adafruit.com/remote-control-with-the-huzzah-plus-adafruit-io/arduino-setup?)&nbsp;page.&nbsp;

```
// Remote Control with the Huzzah + Adafruit IO
// 
// LED Board
// 
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Written by Richard Albritton, based on original code by Tony DiCola for Adafruit Industries
// Licensed under the MIT license.
//
// All text above must be included in any redistribution.

/************************** Configuration ***********************************/

// edit the config.h tab and enter your Adafruit IO credentials
// and any additional configuration needed for WiFi, cellular,
// or ethernet clients.
#include "config.h"

/************************ Example Starts Here *******************************/

#include &lt;ESP8266WiFi.h&gt;

// RGB LED Pins
#define Blue  5
#define Green 4
#define Red   2

// set up the 'digital' feed
AdafruitIO_Feed *AssistiveCallButtons = io.feed("assistive-call-buttons");

void setup() {

  // set power switch tail pin as an output
  pinMode(Blue, OUTPUT);
  pinMode(Green, OUTPUT);
  pinMode(Red, OUTPUT);

  digitalWrite(Red, HIGH);
  digitalWrite(Blue, HIGH);
  digitalWrite(Green, HIGH);

  // set up serial monitor
  Serial.begin(115200);

  // wait for serial monitor to open
  while(! Serial);

  // connect to io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();

  // set up a message handler for the 'digital' feed.
  // the handleMessage function (defined below)
  // will be called whenever a message is
  // received from adafruit io.
  AssistiveCallButtons -&gt; onMessage(handleMessage);

  // wait for a connection
  while(io.status() &lt; AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());
  // recv. the assistive-call-buttons feed
  AssistiveCallButtons-&gt;get();

}

void loop() {

  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();

}

// this function is called whenever an 'digital' feed message
// is received from Adafruit IO. it was attached to
// the 'digital' feed in the setup() function above.
void handleMessage(AdafruitIO_Data *data) {

  Serial.print("received &lt;- AssistiveCallButtons");  
  switch(data-&gt;toInt()) {
    case 0: // your hand is on the sensor
      digitalWrite(Red, HIGH);
      digitalWrite(Blue, HIGH);
      digitalWrite(Green, HIGH);
      break;
    case 1: // your hand is close to the sensor
      digitalWrite(Red, LOW);
      digitalWrite(Red, HIGH);
      digitalWrite(Red, HIGH);
      break;
    case 2: // your hand is a few inches from the sensor
      digitalWrite(Red, HIGH);
      digitalWrite(Red, HIGH);
      digitalWrite(Red, LOW);
      break;
    case 3: // your hand is nowhere near the sensor
      digitalWrite(Red, HIGH);
      digitalWrite(Red, LOW);
      digitalWrite(Red, HIGH);
      break;
  }
  // delay in-between reads for stability
  delay(1);
}
```

You will then need to check that the name of your feed matches the feed defined in the sketch:

```
AdafruitIO_Feed *AssistiveCallButtons = io.feed("assistive-call-buttons");

```

When you are finished reviewing the sketch and have finished making the necessary config changes, upload the sketch to your HUZZAH&nbsp;using the Arduino IDE. You should also open up your Adafruit IO dashboard so you can monitor the Remote Buttons gauge.

Let's test this thing out now.

# Remote Control with the Huzzah + Adafruit.io

## Test it out

Now that we have things constructed, power on the Buttons controller as well as the LED bourds.

When ever you press one of the buttons on the first Huzzah board, that should change the color of the LED on the second board. So long as they are both connected to the Internet, they can be used together. The status of the buttons that were pressed can also be seen on your Adafruit.IO dashboard.

![](https://cdn-learn.adafruit.com/assets/assets/000/027/964/medium800thumb/adafruit_products_HUZZAH-Remote-LED.jpg?1448322302)


## Featured Products

### Adafruit HUZZAH ESP8266 Breakout

[Adafruit HUZZAH ESP8266 Breakout](https://www.adafruit.com/product/2471)
Add Internet to your next project with an adorable, bite-sized WiFi microcontroller, at a price you like! The ESP8266 processor from Espressif is an 80 MHz microcontroller with a full WiFi front-end (both as client and access point) and TCP/IP stack with DNS support as well. While this chip...

In Stock
[Buy Now](https://www.adafruit.com/product/2471)
[Related Guides to the Product](https://learn.adafruit.com/products/2471/guides)
### FTDI Serial TTL-232 USB Cable

[FTDI Serial TTL-232 USB Cable](https://www.adafruit.com/product/70)
Just about all electronics use TTL serial for debugging, bootloading, programming, serial output, etc. But it's rare for a computer to have a serial port anymore. This is a USB to TTL serial cable, with a FTDI FT232RL usb/serial chip embedded in the head. It has a 6-pin socket at the end...

In Stock
[Buy Now](https://www.adafruit.com/product/70)
[Related Guides to the Product](https://learn.adafruit.com/products/70/guides)
### Colorful 12mm Square Tactile Button Switch Assortment - 15 pack

[Colorful 12mm Square Tactile Button Switch Assortment - 15 pack](https://www.adafruit.com/product/1010)
Little clicky switches are standard input "buttons" on electronic projects. These work best in a PCB but [can be used on a solderless breadboard as shown in this tutorial](http://www.ladyada.net/learn/arduino/lesson5.html). The pins are normally open (disconnected) and...

In Stock
[Buy Now](https://www.adafruit.com/product/1010)
[Related Guides to the Product](https://learn.adafruit.com/products/1010/guides)
### Colorful Round Tactile Button Switch Assortment - 15 pack

[Colorful Round Tactile Button Switch Assortment - 15 pack](https://www.adafruit.com/product/1009)
Little clicky switches are standard input "buttons" on electronic projects. These work best in a PCB but [can be used on a solderless breadboard as shown in this tutorial](http://www.ladyada.net/learn/arduino/lesson5.html). The pins are normally open (disconnected) and...

In Stock
[Buy Now](https://www.adafruit.com/product/1009)
[Related Guides to the Product](https://learn.adafruit.com/products/1009/guides)
### Tactile Button switch (6mm) x 20 pack

[Tactile Button switch (6mm) x 20 pack](https://www.adafruit.com/product/367)
Little clicky switches are standard input "buttons" on electronic projects. These work best in a PCB but [can be used on a solderless breadboard as shown in this tutorial](https://learn.adafruit.com/adafruit-arduino-lesson-6-digital-inputs?view=all). The pins are normally...

In Stock
[Buy Now](https://www.adafruit.com/product/367)
[Related Guides to the Product](https://learn.adafruit.com/products/367/guides)
### Diffused RGB (tri-color) 10mm LED (10 pack)

[Diffused RGB (tri-color) 10mm LED (10 pack)](https://www.adafruit.com/product/848)
Make some beautiful colors with these diffused 10mm tri-color LED with separate red, green and blue LED chips inside! They make a nice indicator, and fun to color-swirl. We like diffused RGB LEDs because they color mix inside instead of appearing as 3 distinct LEDs.  
  
These are...

Out of Stock
[Buy Now](https://www.adafruit.com/product/848)
[Related Guides to the Product](https://learn.adafruit.com/products/848/guides)
### Premium Male/Male Jumper Wires - 40 x 3" (75mm)

[Premium Male/Male Jumper Wires - 40 x 3" (75mm)](https://www.adafruit.com/product/759)
Handy for making wire harnesses or jumpering between headers on PCB's. These premium jumper wires are 3" (75mm) long and come in a 'strip' of 40 (4 pieces of each of ten rainbow colors). They have 0.1" male header contacts on either end and fit cleanly next to each other...

In Stock
[Buy Now](https://www.adafruit.com/product/759)
[Related Guides to the Product](https://learn.adafruit.com/products/759/guides)
### Half Sized Premium Breadboard - 400 Tie Points

[Half Sized Premium Breadboard - 400 Tie Points](https://www.adafruit.com/product/64)
This is a cute, half-size breadboard with&nbsp;400 tie points, good for small projects. It's 3.25" x 2.2" / 8.3cm&nbsp;x 5.5cm&nbsp;with a standard double-strip in the middle and two power rails on both sides.&nbsp;You can pull the power rails off easily to make the breadboard as...

In Stock
[Buy Now](https://www.adafruit.com/product/64)
[Related Guides to the Product](https://learn.adafruit.com/products/64/guides)

## Related Guides

- [MicroPython Smart Holiday Lights](https://learn.adafruit.com/micropython-smart-holiday-lights.md)
- [Ninja Timer: Giant 7-Segment Display](https://learn.adafruit.com/ninja-timer-giant-7-segment-display.md)
- [Unicorn Hat with Moving Ears](https://learn.adafruit.com/unicorn-hat-with-moving-ears.md)
- [DIY ESP8266 Home Security with Lua and MQTT](https://learn.adafruit.com/diy-esp8266-home-security-with-lua-and-mqtt.md)
- [MicroPython Hardware: SPI Devices](https://learn.adafruit.com/micropython-hardware-spi-devices.md)
- [Adding Third Party Boards to the Arduino v1.6.4+ IDE](https://learn.adafruit.com/add-boards-arduino-v164.md)
- [Breadboards for Beginners](https://learn.adafruit.com/breadboards-for-beginners.md)
- [Collin's Lab: Breadboards & Perfboards](https://learn.adafruit.com/collins-lab-breadboards-and-perfboards.md)
- [Adafruit IO Basics: ESP8266 + Arduino](https://learn.adafruit.com/adafruit-io-basics-esp8266-arduino.md)
- [All the Internet of Things - Episode Two: Protocols](https://learn.adafruit.com/alltheiot-protocols.md)
- [Adding a WiFi Co-Processor to CircuitPython](https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32.md)
- [Huzzah Weather Display](https://learn.adafruit.com/huzzah-weather-display.md)
- [Reverse Geocache Box](https://learn.adafruit.com/reverse-geocache-engagement-box.md)
- [Pro Trinket as a USB HID Mouse](https://learn.adafruit.com/pro-trinket-usb-hid-mouse.md)
- [Overwatch Prop Gun: Lucio's Blaster Pt. 3](https://learn.adafruit.com/overwatch-prop-gun-lucios-blaster-pt-3.md)
