# Hacking Holiday Animatronics

## Overview

https://youtu.be/vaqxnH47WoE

There's an abundance of fun, well-made, and inexpensive animatronic holiday gizmos available at hardware stores, big-box stores, specialty shops, and online. They work great right out of the package, but sometimes you're looking for that extra bit of personalization, so this guide is all about swapping out the brains of animatronics with your own CircuitPython-based controller.

Why do it? Besides "for the fun of it", building your own animatronic controller allows you to switch out any audio files you like, fine tune the animation, and even introduce new capabilities such as wireless Bluetooth operation, ultrasonic distance sensors, and more.

Danger: 

## Parts
### Adafruit CRICKIT FeatherWing for any Feather

[Adafruit CRICKIT FeatherWing for any Feather](https://www.adafruit.com/product/3343)
Sometimes we wonder if robotics engineers ever watch movies. If they did, they'd know that making robots into servants always ends up in a robot rebellion. Why even go down that path? Here at Adafruit, we believe in making robots our&nbsp; **friends!**

So if you find...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3343)
[Related Guides to the Product](https://learn.adafruit.com/products/3343/guides)
![Angled shot of a Adafruit CRICKIT FeatherWing for any Feather](https://cdn-shop.adafruit.com/640x480/3343-02.jpg)

### Adafruit Feather RP2040

[Adafruit Feather RP2040](https://www.adafruit.com/product/4884)
A new chip means a new Feather, and the Raspberry Pi RP2040 is no exception. When we saw this chip we thought "this chip is going to be awesome when we give it the Feather Treatment" and so we did! This Feather features the&nbsp; **RP2040** , and all niceties you know and...

In Stock
[Buy Now](https://www.adafruit.com/product/4884)
[Related Guides to the Product](https://learn.adafruit.com/products/4884/guides)
![Angled shot of black rectangular microcontroller "Feather RP2040"](https://cdn-shop.adafruit.com/640x480/4884-04.jpg)

### 2.5mm Pitch 2-pin Cable Matching Pair - JST XH compatible

[2.5mm Pitch 2-pin Cable Matching Pair - JST XH compatible](https://www.adafruit.com/product/4872)
These solid 2.5mm pitch connector cable pairs are great when you need something that can carry a couple amps of current, easy to connect and disconnect, and is just-about 0.1" pitch compatible.

These cables are nice and long, 20 cm each, in fact. They've got both small form...

In Stock
[Buy Now](https://www.adafruit.com/product/4872)
[Related Guides to the Product](https://learn.adafruit.com/products/4872/guides)
![Angled shot of 2-pin cable matching pair.](https://cdn-shop.adafruit.com/640x480/4872-02.jpg)

### 5V 4A (4000mA) switching power supply - UL Listed

[5V 4A (4000mA) switching power supply - UL Listed](https://www.adafruit.com/product/1466)
Need a lot of 5V power? This switching supply gives a clean regulated 5V output at up to **4 Amps** (4000mA). 110 or 240 input, so it works in any country. The plugs are "US 2-prong" style so you may need a plug adapter, but you can pick one up at any hardware store for $1 or so,...

Out of Stock
[Buy Now](https://www.adafruit.com/product/1466)
[Related Guides to the Product](https://learn.adafruit.com/products/1466/guides)
![Angled shot of 5V 4A switching power supply brick with power cable.](https://cdn-shop.adafruit.com/640x480/1466-10.jpg)

# Hacking Holiday Animatronics

## Animatronic Anatomy

https://youtu.be/kj1oWzI5wm8?t=1228

![](https://cdn-learn.adafruit.com/assets/assets/000/106/235/medium800/hacks_drbl-3844b.jpg?1636400128)

The typical holiday animatronic will contain inputs, such as buttons and light/motion sensors, and outputs, such as motors, lights, and speakers.

Learning to identify the parts of your animatronic will aid you in transplanting your own control system.

## Motors

The key things to determine about motors are: motor type, voltage requirements, and current draw.

You can read more about different common motor types [here](https://learn.adafruit.com/adafruit-motor-selection-guide/types-of-motors).

The vast majority of animatronics from the store will contain brushed DC motors. These are perhaps the "dumbest" of the motor types you'll encounter, as they cannot be told to go to a particular rotational setting the way hobby servos and stepper motors can.

You can typically identify them by their shape -- a metal cylinder or flattened cylinder, with a plastic end cap.

![](https://cdn-learn.adafruit.com/assets/assets/000/106/236/medium800/hacks_components_IMG_4848.jpg?1636400128)

In the Eyeball Doorbell example, there are two brushed DC motors, one to open and close the eyelid and another to rotate the eyeball from side to side.

They are geared down with a pulley and belt system.

Another tell-tale sign of a brushed DC motor is the capacitor soldered across its leads to help reduce electrical noise in the overall circuit.

![hacks_drbl-3898.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/237/medium640/hacks_drbl-3898.jpg?1636400128)

![hacks_drbl-3897.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/238/medium640/hacks_drbl-3897.jpg?1636400128)

## Voltage

Using a multimeter in DC voltage measuring mode, we can see that the Doorbell sends approximately 4.5V maximum and approx. -4.5V minimum voltage to the motor during operation.

The three AAA batteries supply 4.5V, (1.5V x 3) so this makes sense, and is often another clue as to power requirements, although this can be misleading if the original circuit employs a buck or boost converter.

![hacks_drbl-3870.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/239/medium640/hacks_drbl-3870.jpg?1636400129)

![hacks_drbl-3871.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/240/medium640/hacks_drbl-3871.jpg?1636400129)

## Current Draw

You also want to determine the maximum current draw of each motor so you can use a power supply or battery pack that provides enough current.

Use your multimeter in current measuring mode (this may require switching one of the test leads on some meters) connect one lead of the motor to the original controller board and the other from the board, in the multimeter's positive lead, then from the multimeter's negative lead to the motor.

Run the animatronic cycle and read the maximum current draw. In this case it is about 212 milliamps.

![hacks_drbl-3885.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/241/medium640/hacks_drbl-3885.jpg?1636400129)

Info: 

Both motors combined draw a total maximum of about 250mA, so we'll keep this in mind when picking a motor driver. (Hint: The Crickit can handle this with no problems!)

## Speaker Impedance

Typical toy/animatronic speakers are either 4Ω or 8Ω speakers, and this is often marked on the back of the speaker.

If not, you can usually measure the DC resistance of the speaker to get a ballpark idea of its impedance.

Unplug the speaker from the rest of the circuit first, then use your multimeter in resistance measuring mode to determine the impedance. In this case, a measurement of 7.4Ω is close enough to say it is an 8Ω speaker.

This means you'll need to use an amplifier that can drive an 8Ω speaker, which happens to be the case with most of the Adafruit amps! (They tend to drive anywhere from 4Ω - 8Ω speakers.)

![hacks_drbl-3899.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/298/medium640/hacks_drbl-3899.jpg?1636400299)

![hacks_drbl-3901.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/299/medium640/hacks_drbl-3901.jpg?1636400299)

![](https://cdn-learn.adafruit.com/assets/assets/000/106/245/medium800/hacks_IMG_3911.jpg?1636400129)

## Input

The trigger for the Doorbell is a simple momentary pushbutton switch. That's about as easy as it gets to re-use! You'll simply use the switch to control a digital input, by connecting the switch to a GPIO pin on the microcontroller (or Crickit) and ground.

If you're faced with a more elaborate input, such as a PIR sensor for motion detection, you may need to test the signals with a multimeter or scope to determine what signal is sent when the trigger is tripped. Often this will still be a simple digital high/low signal, which is easy to integrate, pretty much the same as the momentary switch.

## LED Light

If your animatronic contains simple LED lights, you can drive them from a digital output or PWM pin to blink or even fade them. These will look like the typical two-legged LED (although they are sometimes a bit hidden as in the doorbell eye example here).

If the animatronic does multicolored lighting with RGB LEDs they will be either analog or digital (NeoPixel-style) packages.

You can determine if a four-legged LED is analog or digital by measuring the voltage between the power leg and each of the three other legs. If they are each operating at roughly 1V-3V, you've probably got an analog LED on your hands, and can control them in the manner shown in [this guide](https://learn.adafruit.com/rgb-led-strips/overview).

If not, you may be dealing with a NeoPixel or similar LED.

![hacks_drbl-3896.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/248/medium640/hacks_drbl-3896.jpg?1636400131)

![hacks_eyeled.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/249/medium640/hacks_eyeled.jpg?1636400719)

Warning: 

# Hacking Holiday Animatronics

## Controlling Animatronics

![](https://cdn-learn.adafruit.com/assets/assets/000/106/250/medium800/hacks_drbl-3906.jpg?1636400131)

The Crickit FeatherWing is an excellent choice for controlling the motors, sounds, LEDs, and input necessary for many animatronics.

I'll use the Animated Eyeball Doorbell for specific instructions here, but you should be able to apply them to many different cases. Watch out Santa!

## Teardown Documentation

It's a good idea to take detailed photos as you teardown the device. The Doorbell wiring is done with JST XH connectors, and has colored wiring, but no indication on the original mainboard as to which plug does what.

If you need to test things or return the device to stock state, it's incredibly helpful to have "before" photos as guidance!

![hacks_drbl-3845.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/251/medium640/hacks_drbl-3845.jpg?1636400131)

![hacks_drbl-3846.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/252/medium640/hacks_drbl-3846.jpg?1636400132)

![](https://cdn-learn.adafruit.com/assets/assets/000/106/254/medium800/hacks_drbl-3867.jpg?1636400132)

With the peripherals disconnected, it's time to test driving each part from a Crickit and Feather combo.

Use the JST XH pigtails to connect:

- **two motors** to the **motor driver terminals**
- **speaker** to **audio out**
- **pushbutton** to **signal 1/GND**

![](https://cdn-learn.adafruit.com/assets/assets/000/106/279/medium800/hacks_drbl-3865.jpg?1636400225)

Be sure to add a jumper across the audio output header pins on the Crickit in order to enable the amplifier output. (Red jumper shown here.)

![](https://cdn-learn.adafruit.com/assets/assets/000/106/284/medium800/hacks_drbl-3866.jpg?1636400261)

Since the LED is wired directly to the board you'll need to cut those wires to insert them into **signal 4/gnd**.

## LED Wiring

Note the polarity of the wiring -- **gray** is **+** and **green** is **-** here.

Clip the wires, then strip some insulation.

If you want to got the extra mile, you can crimp pins and add header shrouding or heat shrink tubing as shown here.

![hacks_drbl-3887.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/256/medium640/hacks_drbl-3887.jpg?1636400168)

![hacks_drbl-3888.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/257/medium640/hacks_drbl-3888.jpg?1636400175)

![hacks_drbl-3890.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/258/medium640/hacks_drbl-3890.jpg?1636400187)

![hacks_drbl-3891.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/259/medium640/hacks_drbl-3891.jpg?1636400196)

![hacks_drbl-3893.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/260/medium640/hacks_drbl-3893.jpg?1636400197)

![hacks_drbl-3895.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/261/medium640/hacks_drbl-3895.jpg?1636400205)

![](https://cdn-learn.adafruit.com/assets/assets/000/106/262/medium800/hacks_drbl-3894.jpg?1636400208)

The transplant is complete! Now, the Feather and Crickit can be coded in CircuitPython or Arduino to receive input from the doorbell pushbutton, and then control both motors, play unique sound files, and blink the LED.

![](https://cdn-learn.adafruit.com/assets/assets/000/106/297/medium800/hacks_drbl-3905.jpg?1636400295)

## Final Touches

Depending on the space inside your animatronic device, you may be able to fit the Crickit inside. If not, you may want to build a custom back to add space, or run the wiring into a separate enclosure.

Here's an example of drilling out a hole in the battery compartment to run the Crickit externally, using zip ties to hold the Crickit in place.

The also allows access to the power, on/off switch, and USB connector for any re-programming.

![hacks_drbl-3930.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/347/medium640/hacks_drbl-3930.jpg?1636400681)

![hacks_drbl-3933.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/348/medium640/hacks_drbl-3933.jpg?1636400681)

![hacks_drbl-3934.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/349/medium640/hacks_drbl-3934.jpg?1636400690)

![hacks_drbl-3935.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/350/medium640/hacks_drbl-3935.jpg?1636400692)

![](https://cdn-learn.adafruit.com/assets/assets/000/106/352/medium800/hacks_drbl-3938.jpg?1636400693)

# Hacking Holiday Animatronics

## Install CircuitPython

[CircuitPython](https://github.com/adafruit/circuitpython) is a derivative of [MicroPython](https://micropython.org) designed to simplify experimentation and education on low-cost microcontrollers. It makes it easier than ever to get prototyping by requiring no upfront desktop software downloads. Simply copy and edit files on the **CIRCUITPY** drive to iterate.

## CircuitPython Quickstart

Follow this step-by-step to quickly get CircuitPython running on your board.

[Download the latest version of CircuitPython for this board via circuitpython.org](https://circuitpython.org/board/adafruit_feather_rp2040/)
 **Click the link above to download the latest CircuitPython UF2 file.**

Save it wherever is convenient for you.

![install_circuitpython_on_rp2040_RP2040_UF2_downloaded.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/655/medium640/install_circuitpython_on_rp2040_RP2040_UF2_downloaded.jpg?1618943202)

![](https://cdn-learn.adafruit.com/assets/assets/000/102/705/medium800/adafruit_products_FeatherRP_buttons_highlighted.jpg?1623167565)

To enter the bootloader, hold down the **BOOT/**** BOOTSEL button**(highlighted in red above), and while continuing to hold it (don't let go!), press and release the**reset button**(highlighted in red or blue above).&nbsp;**Continue to hold the BOOT/BOOTSEL button until the RPI-RP2 drive appears!**

If the drive does not appear, release all the buttons, and then repeat the process above.

You can also start with your board unplugged from USB, press and hold the BOOTSEL button (highlighted in red above), continue to hold it while plugging it into USB, and wait for the drive to appear before releasing the button.

A lot of people end up using charge-only USB cables and it is very frustrating! **Make sure you have a USB cable you know is good for data sync.**

You will see a new disk drive appear called **RPI-RP2**.

&nbsp;

Drag the **adafruit\_circuitpython\_etc.uf2** file to **RPI-RP2.**

![install_circuitpython_on_rp2040_RP2040_bootloader_drive.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/656/medium640/install_circuitpython_on_rp2040_RP2040_bootloader_drive.jpg?1618943666)

![install_circuitpython_on_rp2040_RP2040_drag_UF2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/657/medium640/install_circuitpython_on_rp2040_RP2040_drag_UF2.jpg?1618943674)

The **RPI-RP2** drive will disappear and a new disk drive called **CIRCUITPY** will appear.

That's it, you're done! :)

![install_circuitpython_on_rp2040_RP2040_CIRCUITPY.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/658/medium640/install_circuitpython_on_rp2040_RP2040_CIRCUITPY.jpg?1618943864)

## Safe Mode

You want to edit your **code.py** or modify the files on your **CIRCUITPY** drive, but find that you can't. Perhaps your board has gotten into a state where **CIRCUITPY** is read-only. You may have turned off the **CIRCUITPY** drive altogether. Whatever the reason, safe mode can help.

Safe mode in CircuitPython does not run any user code on startup, and disables auto-reload. This means a few things. First, safe mode _bypasses any code in_ **boot.py** (where you can set **CIRCUITPY** read-only or turn it off completely). Second, _it does not run the code in_ **code.py**. And finally, _it does not automatically soft-reload when data is written to the_ **CIRCUITPY** _drive_.

Therefore, whatever you may have done to put your board in a non-interactive state, safe mode gives you the opportunity to correct it without losing all of the data on the **CIRCUITPY** drive.

### Entering Safe Mode
To enter safe mode when using CircuitPython, plug in your board or hit reset (highlighted in red above). Immediately after the board starts up or resets, it waits 1000ms. On some boards, the onboard status LED (highlighted in green above) will blink yellow during that time. If you press reset during that 1000ms, the board will start up in safe mode. It can be difficult to react to the yellow LED, so you may want to think of it simply as a slow double click of the reset button. (Remember, a fast double click of reset enters the bootloader.)

### In Safe Mode

If you successfully enter safe mode on CircuitPython, the LED will intermittently blink yellow three times.

If you connect to the serial console, you'll find the following message.

```terminal
Auto-reload is off.
Running in safe mode! Not running saved code.

CircuitPython is in safe mode because you pressed the reset button during boot. Press again to exit safe mode.

Press any key to enter the REPL. Use CTRL-D to reload.
```

You can now edit the contents of the **CIRCUITPY** drive. Remember, _your code will not run until you press the reset button, or unplug and plug in your board, to get out of safe mode._

## Flash Resetting UF2

If your board ever gets into a really _weird_ state and CIRCUITPY doesn't show up as a disk drive after installing CircuitPython, try loading this 'nuke' UF2 to RPI-RP2. which will do a 'deep clean' on your Flash Memory. **You will lose all the files on the board** , but at least you'll be able to revive it! After loading this UF2, follow the steps above to re-install CircuitPython.

[Download flash erasing "nuke" UF2](https://cdn-learn.adafruit.com/assets/assets/000/101/659/original/flash_nuke.uf2?1618945856)
# Hacking Holiday Animatronics

## Code the Animatronic Eyeball Doorbell

https://youtu.be/kj1oWzI5wm8?t=2651

## Text Editor

Adafruit recommends using the **Mu** editor for editing your CircuitPython code. You can get more info in [this guide](https://learn.adafruit.com/welcome-to-circuitpython/installing-mu-editor).

Alternatively, you can use any text editor that saves simple text files.

## Download the Project Bundle

Your project will use a specific set of CircuitPython libraries and the&nbsp; **code.py** &nbsp;file, along with a folder full of key configuration files. To get everything you need, click on the&nbsp; **Download Project Bundle** &nbsp;link below, and uncompress the .zip file.

Drag the contents of the uncompressed bundle directory onto your Feather board's **CIRCUITPY** &nbsp;drive, replacing any existing files or directories with the same names, and adding any new ones that are necessary.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Crickits/Crickit_Animatronic_Doorbell/code.py

## Use The Hacked Animatronic

You can now run your customized animatronic using the Crickit board! Press the original pushbutton to get it started. It will then play the **ring.mp3** audio file, open the eyelid, blink the LED, and start playing the first phrase file.

While the audio file plays, it'll run the eyeball motor back and forth, with some randomized speeds and timing. When the audio file is finished playing, the current loop of eye animation will complete and then the LED will turn off and the lid will close, ready for the next press of the button.

The next time the button is pressed the next audio file in the list will play, and so on until it loops back around to the first one.

Warning: 

## Create Your Own Audio Files

You can make and load any .mp3 file you like onto your Feather RP2040's **CIRCUITPY** drive. Here's a guide on how to create them.

## Make Your Own

To make your own .mp3, use audio software such as [Audacity](https://manual.audacityteam.org/man/mp3_export_options.html) to save them with these settings:

- bit rate: anywhere from 16 to 320 kb/s (lower will be smaller, higher is better quality)
- sample rate: 22050Hz or 44100Hz are recommended, although 16kHz, 24kHz, and 48kHz should also work
- channels: mono or stereo
- must be DRM free

Then, simply change the name in the audio file list in code and you can enjoy your own spooky/funny/weird/sassy/you-name-it phrases being uttered by a disembodied eyeball doorbell!


## Featured Products

### Adafruit Feather RP2040

[Adafruit Feather RP2040](https://www.adafruit.com/product/4884)
A new chip means a new Feather, and the Raspberry Pi RP2040 is no exception. When we saw this chip we thought "this chip is going to be awesome when we give it the Feather Treatment" and so we did! This Feather features the&nbsp; **RP2040** , and all niceties you know and...

In Stock
[Buy Now](https://www.adafruit.com/product/4884)
[Related Guides to the Product](https://learn.adafruit.com/products/4884/guides)
### Adafruit CRICKIT FeatherWing for any Feather

[Adafruit CRICKIT FeatherWing for any Feather](https://www.adafruit.com/product/3343)
Sometimes we wonder if robotics engineers ever watch movies. If they did, they'd know that making robots into servants always ends up in a robot rebellion. Why even go down that path? Here at Adafruit, we believe in making robots our&nbsp; **friends!**

So if you find...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3343)
[Related Guides to the Product](https://learn.adafruit.com/products/3343/guides)
### 2.5mm Pitch 2-pin Cable Matching Pair - JST XH compatible

[2.5mm Pitch 2-pin Cable Matching Pair - JST XH compatible](https://www.adafruit.com/product/4872)
These solid 2.5mm pitch connector cable pairs are great when you need something that can carry a couple amps of current, easy to connect and disconnect, and is just-about 0.1" pitch compatible.

These cables are nice and long, 20 cm each, in fact. They've got both small form...

In Stock
[Buy Now](https://www.adafruit.com/product/4872)
[Related Guides to the Product](https://learn.adafruit.com/products/4872/guides)
### 5V 4A (4000mA) switching power supply - UL Listed

[5V 4A (4000mA) switching power supply - UL Listed](https://www.adafruit.com/product/1466)
Need a lot of 5V power? This switching supply gives a clean regulated 5V output at up to **4 Amps** (4000mA). 110 or 240 input, so it works in any country. The plugs are "US 2-prong" style so you may need a plug adapter, but you can pick one up at any hardware store for $1 or so,...

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

## Related Guides

- [Introducing Adafruit Feather RP2040](https://learn.adafruit.com/adafruit-feather-rp2040-pico.md)
- [CNC Rotary Macropad](https://learn.adafruit.com/cnc-rotary-macropad.md)
- [Touch Deck: DIY Customizable TFT Control Pad](https://learn.adafruit.com/touch-deck-diy-tft-customized-control-pad.md)
- [Customizing USB Devices in CircuitPython](https://learn.adafruit.com/customizing-usb-devices-in-circuitpython.md)
- [Quickstart - Raspberry Pi RP2040 with BLE and CircuitPython](https://learn.adafruit.com/quickstart-raspberry-pi-rp2040-with-ble-and-circuitpython.md)
- [CRICKIT Flippy Robot](https://learn.adafruit.com/crickit-flippy-robot.md)
- [CRICKIT WobblyBot](https://learn.adafruit.com/crickit-wobblybot.md)
- [Introducing Adafruit Feather](https://learn.adafruit.com/adafruit-feather.md)
- [Bubble Table with LED Animations and IR Remote Control](https://learn.adafruit.com/bubble-table-with-led-animations-and-ir-remote-control.md)
- [Circle of Fifths Euclidean Synth with synthio and CircuitPython](https://learn.adafruit.com/circle-of-fifths-euclidean-synth-with-synthio-and-circuitpython.md)
- [Motorized POV LED Display](https://learn.adafruit.com/motorized-pov-led-display.md)
- [An Introduction to RP2040 PIO with CircuitPython](https://learn.adafruit.com/intro-to-rp2040-pio-with-circuitpython.md)
- [Adafruit DS3502 I2C Digital Potentiometer](https://learn.adafruit.com/ds3502-i2c-potentiometer.md)
- [MIDI Laser Harp with Time of Flight Distance Sensors](https://learn.adafruit.com/midi-laser-harp-time-of-flight-sensors.md)
- [Flying Faders](https://learn.adafruit.com/flying-faders.md)
- [Pip-Boy 2040 Wrist-Mounted Prop](https://learn.adafruit.com/pip-boy-2040.md)
