# Mario Magic Wand

## Overview

https://youtu.be/lU-yuDoru_E

https://www.youtube.com/watch?v=XXsSDuHt-bc

## Magikoopa Wand

You can build Kamek's Magic Wand from Super Mario Bros!

We designed and 3D printed a magic wand inspired by Kamek the Magikoopa in the Super Mario Brothers movie. It’s got motion activated lights and sound with a spinning crystal gem.

Powered by the Adafruit RP2040 Prop-Maker Feather, this advanced prop uses an accelerometer to detect swings and hits that trigger super bright NeoPixels with full sound effects!

&nbsp;

![3d_printing_hero-loop.gif](https://cdn-learn.adafruit.com/assets/assets/000/122/232/medium640thumb/3d_printing_hero-loop.jpg?1688355032)

![3d_printing_hero-solo.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/233/medium640/3d_printing_hero-solo.jpg?1688355198)

## Prop-Maker Feather

The Prop-Maker Feather was designed for creating advanced props using motion, lights and sound. The **LIS3DH** accelerometer can detect steps, swings and hits. It has an on-board **class-D audio amp** for blasting sound effects. For creating stunning lighting effects, the built-in **NeoPixel driver** and **3W RGB LED driver** are essential.

**Terminal Block Port -** With easy-to-use screw terminals you can quickly connect and disconnect, lights, speakers and buttons!

**Servo Connection** - [Plug any hobby servo with 3 wires](https://www.adafruit.com/search?q=servo) into the 0.1" spaced header, and you can have quick motion control!

![3d_printing_hero-board.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/258/medium640/3d_printing_hero-board.jpg?1688396630)

![3d_printing_hero-terminal.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/259/medium640/3d_printing_hero-terminal.jpg?1688396772)

![](https://cdn-learn.adafruit.com/assets/assets/000/122/261/medium800thumb/3d_printing_hero-loop-black.jpg?1688397160)

## Parts
![](https://cdn-learn.adafruit.com/assets/assets/000/122/260/medium800/3d_printing_parts.jpg?1688396964)

### Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier

[Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier](https://www.adafruit.com/product/5768)
The Adafruit Feather series gives you lots of options for a small, portable, rechargeable microcontroller board. By picking a feather and stacking on a FeatherWing you can create advanced projects quickly. One popular combo is our [Feather M4](https://www.adafruit.com/product/3857)...

In Stock
[Buy Now](https://www.adafruit.com/product/5768)
[Related Guides to the Product](https://learn.adafruit.com/products/5768/guides)
![Video of a white hand pressing a button to briefly turn an LED strip into white lights. Also wired up to the microcontroller are a servo motor and a speaker.](https://cdn-shop.adafruit.com/product-videos/640x480/5768-09.jpg)

### NeoPixel Ring - 24 x 5050 RGB LED with Integrated Drivers

[NeoPixel Ring - 24 x 5050 RGB LED with Integrated Drivers](https://www.adafruit.com/product/1586)
Round and round and round they go! 24 ultra bright smart LED NeoPixels are arranged in a circle with 2.6" (66mm) outer diameter. The rings are 'chainable' - connect the output pin of one to the input pin of another. Use only one microcontroller pin to control as many as you can...

In Stock
[Buy Now](https://www.adafruit.com/product/1586)
[Related Guides to the Product](https://learn.adafruit.com/products/1586/guides)
![Hand holding NeoPixel Ring with 24 x 5050 RGB LED, lit up rainbow](https://cdn-shop.adafruit.com/640x480/1586-00.jpg)

### Continuous Rotation Servo

[Continuous Rotation Servo](https://www.adafruit.com/product/154)
This servo rotates fully forward or backward instead of moving to a position. You can use any servo code, hardware, or library to control these servos. Good for making simple moving robots. Comes with four different horns, as shown.

To control with an Arduino, we suggest connecting...

Out of Stock
[Buy Now](https://www.adafruit.com/product/154)
[Related Guides to the Product](https://learn.adafruit.com/products/154/guides)
![Continuous Rotation Servo with three pin cable](https://cdn-shop.adafruit.com/640x480/154-07.jpg)

### Mini LED Arcade Button - 24mm Translucent Clear

[Mini LED Arcade Button - 24mm Translucent Clear](https://www.adafruit.com/product/3429)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have **LEDs built right in!** That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3429)
[Related Guides to the Product](https://learn.adafruit.com/products/3429/guides)
![Video of 24mm mini translucent clear LED arcade button flashing on and off.](https://cdn-shop.adafruit.com/product-videos/640x480/3429-03.jpg)

### Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)

[Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)](https://www.adafruit.com/product/1152)
Quick connector wire sets will make wiring up our arcade-style or metal buttons quicky-quick. Each wire comes as a 'pair' with two 0.11" quick-connects pre-crimped onto 20cm long wires. The wires are then terminated together in a JST 2.5mm/0.1" spaced 2-pin connector (we...

In Stock
[Buy Now](https://www.adafruit.com/product/1152)
[Related Guides to the Product](https://learn.adafruit.com/products/1152/guides)
![Angled shot of ten 20 cm long quick-connect wire pairs. ](https://cdn-shop.adafruit.com/640x480/1152-06.jpg)

### Speaker - 40mm Diameter - 4 Ohm 5 Watt

[Speaker - 40mm Diameter - 4 Ohm 5 Watt](https://www.adafruit.com/product/3968)
Hear the good news! This speaker&nbsp;is a great addition to any audio project where you need a&nbsp;4 Ohm impedance and 3W or less of power.

At **40mm diameter** it has a more square-ish shape, but a smaller face. Sound quality and volume are nicely sandwiched between our...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3968)
[Related Guides to the Product](https://learn.adafruit.com/products/3968/guides)
![Angled Shot of the Speaker - 40mm Diameter - 4 Ohm 3 Watt.](https://cdn-shop.adafruit.com/640x480/3968-03.jpg)

### Breadboard-friendly SPDT Slide Switch

[Breadboard-friendly SPDT Slide Switch](https://www.adafruit.com/product/805)
These nice switches are perfect for use with breadboard and perfboard projects. They have 0.1" spacing and snap in nicely into a solderless breadboard. They're easy to switch no matter what size fingers you have, but not so easy that they'll get flipped by accident. Work great as...

In Stock
[Buy Now](https://www.adafruit.com/product/805)
[Related Guides to the Product](https://learn.adafruit.com/products/805/guides)
![Small, black, SPDT slide switch.](https://cdn-shop.adafruit.com/640x480/805-03.jpg)

### Lithium Ion Cylindrical Battery - 3.7v 2200mAh

[Lithium Ion Cylindrical Battery - 3.7v 2200mAh](https://www.adafruit.com/product/1781)
Need a big battery for your project? This lithium-ion battery contains a 2200mAh and a protection circuit that provides over-voltage, under-voltage, and over-current protection. Yet, it is slim and easy to fit into many project cases.  
  
This cell can provide 2 **C** of...

In Stock
[Buy Now](https://www.adafruit.com/product/1781)
[Related Guides to the Product](https://learn.adafruit.com/products/1781/guides)
![Lithium Ion Cylindrical Battery - 3.7v 2200mAh with JST PH connector](https://cdn-shop.adafruit.com/640x480/1781-04.jpg)

### JST-PH Battery Extension Cable - 500mm

[JST-PH Battery Extension Cable - 500mm](https://www.adafruit.com/product/1131)
By popular demand, we now have a handy extension cord for all of our JST PH-terminated battery packs (such as our LiIon/LiPoly and 3xAAA holders). One end has a JST-PH compatible socket, and the other end has a matching plug. Between the two, 500mm of color coded wire. Handy for wearable...

In Stock
[Buy Now](https://www.adafruit.com/product/1131)
[Related Guides to the Product](https://learn.adafruit.com/products/1131/guides)
![Front shot of JST-PH Battery Extension Cable.](https://cdn-shop.adafruit.com/640x480/1131-00.jpg)

### Part: M2.5x6mm Screws
quantity: 12
M2.5x6mm Screws

# Mario Magic Wand

## Circuit Diagram

## Adafruit Library for Fritzing

The wiring diagram below provides a visual reference for connecting the components. It is not true to scale, it is just meant to be used as reference. This diagram was created using the [Fritzing software package](http://fritzing.org/download/).

Take a moment to review the components in the circuit diagram. This illustration is meant for referencing wired connections - the length of wire, position and size of components are not exact.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/122/226/medium800/3d_printing_circuit-diagram-Magic_Wand_Kamek.jpg?1688353777)

![](https://cdn-learn.adafruit.com/assets/assets/000/122/264/medium800/sensors_kamek_schematic.jpg?1688489754)

# Mario Magic Wand

## 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_prop_maker/)
 **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/121/865/medium800/adafruit_products_boot_reset.jpg?1686710555)

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)
# Mario Magic Wand

## Coding the Magic Wand

Once you've finished setting up your RP2040 Prop-Maker Feather with CircuitPython, you can access the code and necessary libraries by downloading the Project Bundle.

To do this, click on the **Download Project Bundle** button in the window below. It will download as a zipped folder.

![3d_printing_cp-hero.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/230/medium640/3d_printing_cp-hero.jpg?1688354560)

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

![](https://cdn-learn.adafruit.com/assets/assets/000/122/231/medium800/3d_printing_cp-wide.jpg?1688354606)

## Upload the Code and Libraries to the RP2040 Prop-Maker Feather

After downloading the Project Bundle, plug your RP2040 Prop-Maker Feather into the computer's USB port with a known good USB data+power cable. You should see a new flash drive appear in the computer's File Explorer or Finder (depending on your operating system) called&nbsp; **CIRCUITPY**. Unzip the folder and copy the following items to the RP2040 Prop-Maker Feather's&nbsp; **CIRCUITPY** &nbsp;drive.&nbsp;

- **lib** &nbsp;folder
- **code.py**
- **wand-mix-sfx.wav**

Your RP2040 Prop-Maker Feather&nbsp; **CIRCUITPY&nbsp;** drive should look like this after copying the&nbsp; **lib** &nbsp;folder, the&nbsp; **code.py&nbsp;** file and **wand-mix-sfx.wav** audio file.

![CIRCUITPY](https://adafruit.github.io/Adafruit_Learning_System_Guides/Kamek_Magic_Wand_Prop.png )

## How the CircuitPython Code Works

The code begins by enabled the `EXTERNAL_POWER` pin. This pin enables power to all of the external component pins, which includes the servo header, external NeoPixel pin, external button pin and speaker output.

```python
# enable external power pin
# provides power to the external components
external_power = DigitalInOut(board.EXTERNAL_POWER)
external_power.direction = Direction.OUTPUT
external_power.value = True
```

## Audio Setup

Next is I2S audio setup. The **wand-mix-sfx.wav** audio file is passed to a `Mixer` object. The `Mixer` is setup to play the sound effect in a loop, but with the volume initially at `0`. Later on in the code loop, the volume will be adjusted so that you can hear the audio. This is one technique you can use to incorporate playing and pausing audio in a non-blocking way in your code.

```python
# i2s playback
wave_file = open("wand-mix-sfx.wav", "rb")
wave = audiocore.WaveFile(wave_file)
audio = audiobusio.I2SOut(board.I2S_BIT_CLOCK, board.I2S_WORD_SELECT, board.I2S_DATA)
mixer = audiomixer.Mixer(voice_count=1, sample_rate=22050, channel_count=1,
                         bits_per_sample=16, samples_signed=True)
audio.play(mixer)
mixer.voice[0].play(wave, loop=True)
mixer.voice[0].level = 0
```

## Servo and Button

A continuous servo and button are setup next using the servo header and the external button pin.

```python
# servo control
pwm = pwmio.PWMOut(board.EXTERNAL_SERVO, frequency=50)
prop_servo = servo.ContinuousServo(pwm)
servo_move = False

# external button
switch = DigitalInOut(board.EXTERNAL_BUTTON)
switch.direction = Direction.INPUT
switch.pull = Pull.UP
switch_state = False
```

## NeoPixels and Animations

The NeoPixel ring is setup on the external NeoPixel pin. The NeoPixels are using the `Rainbow` and `Pulse` animations from the LED animations library.

```python
# external neopixels
num_pixels = 24
pixels = neopixel.NeoPixel(board.EXTERNAL_NEOPIXELS, num_pixels)
pixels.brightness = 0.3
rainbow = Rainbow(pixels, speed=0.05, period=2)
pulse = Pulse(pixels, speed=0.1, color=RED, period=3)
```

## Accelerometer

Last but not least, the onboard LIS3DH is initialized over I2C. In the loop, the LIS3DH will be able to affect the prop by detecting `shake`.

```python
i2c = board.I2C()
int1 = DigitalInOut(board.ACCELEROMETER_INTERRUPT)
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1)
lis3dh.range = adafruit_lis3dh.RANGE_2_G
```

## The Loop

In the loop the `servo_move` state determines what all of the components are doing. If `servo_move` is `False`, then the NeoPixels pulse red, the speaker is silent and the servo does not move.

```python
if not servo_move:
        pulse.animate()
        mixer.voice[0].level = 0.0
        prop_servo.throttle = 0.0
```

If the LIS3DH detects a `shake` or the external button is pressed, then `servo_move` is set to `True`.

```python
if lis3dh.shake(shake_threshold=20) or not switch.value and switch_state is False:
        servo_move = True
        clock = ticks_ms()
        clock = ticks_add(clock, prop_time)
        switch_state = True
if switch.value and switch_state is True:
        switch_state = False
```

When `servo_move` is `True`, the NeoPixels show the rainbow animation, the servo spins and the speaker output is set to `0.5` with the `Mixer` object. `ticks` is used to keep time in a non-blocking way. After three seconds have passed, then `servo_move` is set back to `False`.

```python
else:
        prop_servo.throttle = 0.5
        rainbow.animate()
        mixer.voice[0].level = 0.5
        if ticks_diff(ticks_ms(), clock) >= prop_time:
            servo_move = False
```

# Mario Magic Wand

## 3D Printing

## Parts List

STL files for 3D printing are oriented to print "as-is" on FDM style machines. Parts are designed to 3D print without any support material. Original design source may be downloaded using the links below.

![3d_printing_3d-parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/227/medium640/3d_printing_3d-parts.jpg?1688353828)

[Edit Design](https://a360.co/3XwRZoJ)
[Download STLs](https://www.thingiverse.com/thing:6107187)
## Slice with settings for PLA material&nbsp;

The parts were sliced using CURA using the slice settings below.

- PLA filament 220c extruder
- 0.2 layer height
- 10% gyroid infill
- 60mm/s print speed
- 60c heated bed

![3d_printing_slice.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/228/medium640/3d_printing_slice.jpg?1688354366)

## Supports

- Support Overhang Angle: 50
- Support Destiny: 6%
- Enable Support Interface
- Enable Support Roof
- Support Z Distance: .21

![3d_printing_supports.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/229/medium640/3d_printing_supports.jpg?1688354389)

# Mario Magic Wand

## Assemble

## Amp Gain

Bridge the 12db pad and center pads with a bit of solder to increase the amplifier volume.

## Solder Slide Switch

Measure a short wire and solder the two pins on the slide switch to EN and GND pins on the Feather.

## Speaker Extension

Use a JST 2 pin socket extension to connect the speaker. Attach to the + and - to the terminal blocks.

## Button Wires

Attach wires to the 5V, GND and Button terminal blocks.

![3d_printing_amp-gain.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/234/medium640/3d_printing_amp-gain.jpg?1688392655)

![3d_printing_slide-switch-solder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/235/medium640/3d_printing_slide-switch-solder.jpg?1688392829)

## Feather mount

Align the pins on the feather mount to the screw holes next to the terminals. Use M2.5x5mm screws on the other two screw holes.

&nbsp;

&nbsp;

![3d_printing_feather-mount.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/236/medium640/3d_printing_feather-mount.jpg?1688393021)

![3d_printing_feather-mount-attached.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/237/medium640/3d_printing_feather-mount-attached.jpg?1688393126)

## Attach Feather to Base

Use two M2.5x6mm screws to attach the Feather mount to the base part.

## NeoPixel Ring Wires

Measure and cut wires to connect the Data Input, 5V and GND to the 24 NeoPixel ring.

![3d_printing_feather-mounted.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/238/medium640/3d_printing_feather-mounted.jpg?1688393194)

![3d_printing_led-ring-solder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/239/medium640/3d_printing_led-ring-solder.jpg?1688393260)

## Mount NeoPixel Ring

Align the ring to the mount on the base part. Pass wires through the cut out on the base. Connect NeoPixel wires by sharing the 5v and GND terminal.

![3d_printing_led-ring-wire-pass.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/240/medium640/3d_printing_led-ring-wire-pass.jpg?1688393408)

![3d_printing_led-ring-wire-passed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/241/medium640/3d_printing_led-ring-wire-passed.jpg?1688393482)

## Mount Servo

Align the servo wire to the cutout on the base part. Pass the cable through the cutout on the base and connect to the header pins on the Feather.

![3d_printing_servo-mount.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/242/medium640/3d_printing_servo-mount.jpg?1688393574)

![3d_printing_servo-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/243/medium640/3d_printing_servo-connect.jpg?1688393608)

## Mount Battery

Orient the battery with the cable facing up. &nbsp;&nbsp;

## Speaker Mount

Use M2.5x6mm screws to secure the speaker mount to the base part.

![3d_printing_battery-mount.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/244/medium640/3d_printing_battery-mount.jpg?1688393727)

![3d_printing_speaker-mount.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/245/medium640/3d_printing_speaker-mount.jpg?1688393839)

## Attach Speaker

Press fit the speaker base into the mount.

## Battery JST extension cable

Connect an 2 pin JST extension cable to the battery.

![3d_printing_speaker-mounting.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/246/medium640/3d_printing_speaker-mounting.jpg?1688393924)

![3d_printing_battery-extension.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/247/medium640/3d_printing_battery-extension.jpg?1688393975)

## Pass Button wires&nbsp;

Align the USB port to the cutout on the handle part. Pass button wires through the cutout.

## Share Button Ground connection

Solder an additional button connector to the ground wire.

![3d_printing_button-wire-pass.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/248/medium640/3d_printing_button-wire-pass.jpg?1688394063)

![3d_printing_button-wire-ground-share.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/249/medium640/3d_printing_button-wire-ground-share.jpg?1688394141)

## Connect Button wires

Attach the wires to each pin on the button.

## Speaker and Battery Connections

Secure cables for the speaker and battery to the ports on the Feather.

![3d_printing_button-wire-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/250/medium640/3d_printing_button-wire-connect.jpg?1688394264)

![3d_printing_connections.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/251/medium640/3d_printing_connections.jpg?1688394295)

## Attach Slide Switch

Press fit the side switch at an angle, into the cut out on the handle part.

&nbsp;

![3d_printing_slide-switch-press.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/252/medium640/3d_printing_slide-switch-press.jpg?1688395919)

## Align base to handle

Coil wires around the speaker to fit in the handle.

Align the USB port to the cut out on the handle part.

Use M2.5x6mm screws to attach the base to the handle.

![3d_printing_align-usb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/253/medium640/3d_printing_align-usb.jpg?1688396092)

![3d_printing_base-handle-attach.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/254/medium640/3d_printing_base-handle-attach.jpg?1688396141)

## Assemble Gem

Press fit the horn into the gem part.

The horn press fits to the servo stem.&nbsp;

![3d_printing_horn-attach.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/255/medium640/3d_printing_horn-attach.jpg?1688396215)

![3d_printing_horn-attached.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/256/medium640/3d_printing_horn-attached.jpg?1688396366)

## Wahoo Complete!
![](https://cdn-learn.adafruit.com/assets/assets/000/122/257/medium800thumb/3d_printing_complete-loop.jpg?1688396496)


## Featured Products

### Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier

[Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier](https://www.adafruit.com/product/5768)
The Adafruit Feather series gives you lots of options for a small, portable, rechargeable microcontroller board. By picking a feather and stacking on a FeatherWing you can create advanced projects quickly. One popular combo is our [Feather M4](https://www.adafruit.com/product/3857)...

In Stock
[Buy Now](https://www.adafruit.com/product/5768)
[Related Guides to the Product](https://learn.adafruit.com/products/5768/guides)
### NeoPixel Ring - 24 x 5050 RGB LED with Integrated Drivers

[NeoPixel Ring - 24 x 5050 RGB LED with Integrated Drivers](https://www.adafruit.com/product/1586)
Round and round and round they go! 24 ultra bright smart LED NeoPixels are arranged in a circle with 2.6" (66mm) outer diameter. The rings are 'chainable' - connect the output pin of one to the input pin of another. Use only one microcontroller pin to control as many as you can...

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

[Continuous Rotation Servo](https://www.adafruit.com/product/154)
This servo rotates fully forward or backward instead of moving to a position. You can use any servo code, hardware, or library to control these servos. Good for making simple moving robots. Comes with four different horns, as shown.

To control with an Arduino, we suggest connecting...

Out of Stock
[Buy Now](https://www.adafruit.com/product/154)
[Related Guides to the Product](https://learn.adafruit.com/products/154/guides)
### Mini LED Arcade Button - 24mm Translucent Clear

[Mini LED Arcade Button - 24mm Translucent Clear](https://www.adafruit.com/product/3429)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have **LEDs built right in!** That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3429)
[Related Guides to the Product](https://learn.adafruit.com/products/3429/guides)
### Speaker - 40mm Diameter - 4 Ohm 5 Watt

[Speaker - 40mm Diameter - 4 Ohm 5 Watt](https://www.adafruit.com/product/3968)
Hear the good news! This speaker&nbsp;is a great addition to any audio project where you need a&nbsp;4 Ohm impedance and 3W or less of power.

At **40mm diameter** it has a more square-ish shape, but a smaller face. Sound quality and volume are nicely sandwiched between our...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3968)
[Related Guides to the Product](https://learn.adafruit.com/products/3968/guides)
### Lithium Ion Cylindrical Battery - 3.7v 2200mAh

[Lithium Ion Cylindrical Battery - 3.7v 2200mAh](https://www.adafruit.com/product/1781)
Need a big battery for your project? This lithium-ion battery contains a 2200mAh and a protection circuit that provides over-voltage, under-voltage, and over-current protection. Yet, it is slim and easy to fit into many project cases.  
  
This cell can provide 2 **C** of...

In Stock
[Buy Now](https://www.adafruit.com/product/1781)
[Related Guides to the Product](https://learn.adafruit.com/products/1781/guides)
### Breadboard-friendly SPDT Slide Switch

[Breadboard-friendly SPDT Slide Switch](https://www.adafruit.com/product/805)
These nice switches are perfect for use with breadboard and perfboard projects. They have 0.1" spacing and snap in nicely into a solderless breadboard. They're easy to switch no matter what size fingers you have, but not so easy that they'll get flipped by accident. Work great as...

In Stock
[Buy Now](https://www.adafruit.com/product/805)
[Related Guides to the Product](https://learn.adafruit.com/products/805/guides)
### JST-PH Battery Extension Cable - 500mm

[JST-PH Battery Extension Cable - 500mm](https://www.adafruit.com/product/1131)
By popular demand, we now have a handy extension cord for all of our JST PH-terminated battery packs (such as our LiIon/LiPoly and 3xAAA holders). One end has a JST-PH compatible socket, and the other end has a matching plug. Between the two, 500mm of color coded wire. Handy for wearable...

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

## Related Guides

- [Adafruit RP2040 Prop-Maker Feather](https://learn.adafruit.com/adafruit-rp2040-prop-maker-feather.md)
- [UFO Drone](https://learn.adafruit.com/ufo-drone.md)
- [Prop-Maker Feather Talking Adabot Clock](https://learn.adafruit.com/prop-maker-feather-talking-adabot-clock.md)
- [micro:bit Lesson 3. NeoPixels with micro:bit](https://learn.adafruit.com/micro-bit-lesson-3-neopixels-with-micro-bit.md)
- [Unibeam](https://learn.adafruit.com/unibeam.md)
- [A NeoPixel Blinkendisc](https://learn.adafruit.com/a-neopixel-blinkendisc.md)
- [2014 Halloween 3D Printed Projects Roundup](https://learn.adafruit.com/2014-halloween-3d-printed-projects-roundup.md)
- [Your Pulse Displayed with NeoPixels](https://learn.adafruit.com/pulse-sensor-displayed-with-neopixels.md)
- [Soundbox RP2040](https://learn.adafruit.com/soundbox-rp2040.md)
- [Talking HAL 9000 with RP2040 Prop Maker Feather](https://learn.adafruit.com/hal-9000-rp2040-prop-maker.md)
- [Make a Zelda Master Sword with the RP2040 Prop-Maker Feather](https://learn.adafruit.com/master-sword-rp2040.md)
- [Adabot Toy Robot Friend](https://learn.adafruit.com/adabot-rp2040.md)
- [LED Rocket Lamp](https://learn.adafruit.com/led-rocket-lamp.md)
- [NeoPixel Jack-o-lantern](https://learn.adafruit.com/neopixel-jack-o-lantern.md)
- [3D Printed Camera LED Ring](https://learn.adafruit.com/3d-printed-camera-led-ring.md)
- [NeoPixel Bike Light](https://learn.adafruit.com/neopixel-headlight.md)
