# Ahsoka Lightsaber Prop-Maker RP2040 retrofit

## Overview

https://youtu.be/crviNW4B3Fc

https://youtu.be/crviNW4B3Fc

You can upgrade your toy Disney lightsaber into a more feature-packed build with Adafruit’s RP2040 PropMaker Feather!

This toy lightsaber features a detachable blade that we were able to upgrade with a strip of NeoPixel LEDs

We gutted the toy's electronics to swap in the RP2040 PropMaker Feather and reused the injection molded parts so there is no 3D printing in this build.

&nbsp;

![hacks_compare.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/666/medium640/hacks_compare.jpg?1692630185)

![hacks_hero-color-loop.gif](https://cdn-learn.adafruit.com/assets/assets/000/123/668/medium640thumb/hacks_hero-color-loop.jpg?1692631377)

The original only has around 20 LEDs, so we replaced them with a strip of NeoPixels so we can get smooth animations and any color.

The stock LEDs have noticeable gaps showing dark spots in the blade that look less than desirable, so we've solved that with the denser strip.

The CircuitPython code features customizable settings for colors, and the sensitivity of the swings and clashes so you can modify things to match your preference.

You can also swap out the sound files for your own so you can make it super custom.

![hacks_hero-board.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/669/medium640/hacks_hero-board.jpg?1692631451)

![hacks_code-scroll.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/670/medium640/hacks_code-scroll.jpg?1692631503)

![](https://cdn-learn.adafruit.com/assets/assets/000/123/671/medium800/hacks_hero-clash.jpg?1692631805)

## Parts
![](https://cdn-learn.adafruit.com/assets/assets/000/123/692/medium800/hacks_parts.jpg?1692634557)

### 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)

### Adafruit Mini Skinny NeoPixel Digital RGB LED Strip - 144 LED/m

[Adafruit Mini Skinny NeoPixel Digital RGB LED Strip - 144 LED/m](https://www.adafruit.com/product/2970)
So thin. So mini. So teeeeeeny-tiny. It's the 'skinny' version of our classic NeoPixel strips!

These NeoPixel strips have 144 digitally-addressable pixel Mini LEDs per meter and are very affordable and are only 7.5 mm wide (0.3")&nbsp;if you remove the strip from the...

In Stock
[Buy Now](https://www.adafruit.com/product/2970)
[Related Guides to the Product](https://learn.adafruit.com/products/2970/guides)
![Adafruit NeoPixel Digital RGB LED Strip wired to a microcontroller, with all the LEDs in a rainbow](https://cdn-shop.adafruit.com/product-videos/640x480/2970-05.jpg)

### JST PH 2-Pin Cable - Female Connector 100mm

[JST PH 2-Pin Cable - Female Connector 100mm](https://www.adafruit.com/product/261)
Red and black tinned wires with a 2-pin JST PH connector on the end. 4" / 100mm long. Matches up nicely with our Lipoly chargers!

[We have the socket 'mating' version of this cable](https://www.adafruit.com/product/3814) over here, <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/261)
[Related Guides to the Product](https://learn.adafruit.com/products/261/guides)
![Top view shot of a red and black JST PH 2-Pin Cable to Female Connector - 100mm.](https://cdn-shop.adafruit.com/640x480/261-01.jpg)

### JST PH 2-Pin Cable – Male Header 200mm

[JST PH 2-Pin Cable – Male Header 200mm](https://www.adafruit.com/product/3814)
For a really long time we assumed that the JST PH didn't have a free-hanging male header version. But then we found this **JST-PH 2-pin Male Cable,** and we were like,&nbsp;_this is perfect!_ It's not a genuine JST connector, but it's 100%...

In Stock
[Buy Now](https://www.adafruit.com/product/3814)
[Related Guides to the Product](https://learn.adafruit.com/products/3814/guides)
![Top view shot of JST PH 2-Pin Cable - Male Header - 200mm.](https://cdn-shop.adafruit.com/640x480/3814-02.jpg)

### Silicone Cover Stranded-Core Ribbon Cable - 4 Wires 1 Meter Long

[Silicone Cover Stranded-Core Ribbon Cable - 4 Wires 1 Meter Long](https://www.adafruit.com/product/3889)
For those who are fans of our silicone-covered wires, but are always looking to _up their wiring game_. We now have **Silicone Cover Ribbon cables!** These may look _a lot_ like <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/3889)
[Related Guides to the Product](https://learn.adafruit.com/products/3889/guides)
![A coiled Silicone Cover Stranded-Core Ribbon Cable - 4 Wires 1 Meter Long](https://cdn-shop.adafruit.com/640x480/3889-01.jpg)

### USB Type A to Type C Cable - approx 1 meter / 3 ft long

[USB Type A to Type C Cable - approx 1 meter / 3 ft long](https://www.adafruit.com/product/4474)
As technology changes and adapts, so does Adafruit. This&nbsp;&nbsp; **USB Type A to Type C** cable will help you with the transition to USB C, even if you're still totin' around a USB Type A hub, computer or laptop.

USB C is the latest industry-standard connector for...

In Stock
[Buy Now](https://www.adafruit.com/product/4474)
[Related Guides to the Product](https://learn.adafruit.com/products/4474/guides)
![Angled shot of a coiled black, USB-C to USB-A cable.](https://cdn-shop.adafruit.com/640x480/4474-02.jpg)

# Ahsoka Lightsaber Prop-Maker RP2040 retrofit

## Circuit Diagram

The diagram below provides a general visual reference for wiring of the components once you get to the **Assembly** page. This diagram was created using the software package [Fritzing](http://fritzing.org/download/).

## Adafruit Library for Fritzing

Adafruit uses the Adafruit's Fritzing parts library to create circuit diagrams for projects. You can download the library or just grab individual parts. Get the library and parts from [GitHub - Adafruit Fritzing Parts](https://github.com/adafruit/Fritzing-Library/tree/master/parts).

![](https://cdn-learn.adafruit.com/assets/assets/000/123/665/medium800/hacks_Circuit-Diagram.jpg?1692629854)

## Wired Connections

- The NeoPixel strip, button switch, and speaker are each connected to pins on the screw block terminal.
- The slide switch is connected to the EN and GND pins on the Feather.
- The battery pack is connected to the battery port on the Feather via a 2 Pin JST Plug.

# Ahsoka Lightsaber Prop-Maker RP2040 retrofit

## 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)
# Ahsoka Lightsaber Prop-Maker RP2040 retrofit

## Code the Lightsaber

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 to your computer as a zipped folder.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Feather_RP2040_Prop-Maker_Lightsaber/code.py

## 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 **CIRCUITPY**. Unzip the folder and copy the following items to the RP2040 Prop-Maker Feather's **CIRCUITPY** drive.

- **lib** folder
- **sounds** folder
- **code.py**

Your RP2040 Prop-Maker Feather **CIRCUITPY** drive should look like this after copying the **lib** folder, **sounds** folder and the **code.py** file.

![CIRCUITPY](https://adafruit.github.io/Adafruit_Learning_System_Guides/Feather_RP2040_Prop-Maker_Lightsaber.png )

## How the CircuitPython Code Works

At the top of the code, you can customize a few attributes for your lightsaber. `HIT_THRESHOLD` and `SWING_THRESHOLD` affect the force needed to trigger a hit or swing for the lightsaber. The `COLORS` array has all of the available colors for the NeoPixels. You can change the value of `SABER_COLOR` to match the index for the color that you want your lightsaber to be. `CLASH_COLOR` is the color that the lightsaber turns when a hit is detected.

```python
# CUSTOMIZE SENSITIVITY HERE: smaller numbers = more sensitive to motion
HIT_THRESHOLD = 120
SWING_THRESHOLD = 130
RED = (255, 0, 0)
YELLOW = (125, 255, 0)
GREEN = (0, 255, 0)
CYAN = (0, 125, 255)
BLUE = (0, 0, 255)
PURPLE = (125, 0, 255)
WHITE = (255, 255, 255)
COLORS = [RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE]
SABER_COLOR = 3
CLASH_COLOR = 6
```

## Sound FX

Audio is played back through the onboard I2S amp on the Feather. The `play_wav()` function opens a WAV file from the **sounds** folder and then plays it.

```python
wavs = []
for filename in os.listdir('/sounds'):
    if filename.lower().endswith('.wav') and not filename.startswith('.'):
        wavs.append("/sounds/"+filename)
wavs.sort()
print(wavs)
print(len(wavs))

audio = audiobusio.I2SOut(board.I2S_BIT_CLOCK, board.I2S_WORD_SELECT, board.I2S_DATA)

def play_wav(num, loop=False):
    """
    Play a WAV file in the 'sounds' directory.
    :param name: partial file name string, complete name will be built around
                 this, e.g. passing 'foo' will play file 'sounds/foo.wav'.
    :param loop: if True, sound will repeat indefinitely (until interrupted
                 by another sound).
    """
    try:
        n = wavs[num]
        wave_file = open(n, "rb")
        wave = audiocore.WaveFile(wave_file)
        audio.play(wave, loop=loop)
    except:  # pylint: disable=bare-except
        return
```

## Button, NeoPixels, and Accelerometer

The button and NeoPixels are connected to the external pins in the terminal block. The button uses the **Debounce** library so that long press and short press can be monitored in the loop. The onboard LIS3DH accelerometer is used to read movement and tap detection for the swing and hit functionality.

```python
# external button
pin = DigitalInOut(board.EXTERNAL_BUTTON)
pin.direction = Direction.INPUT
pin.pull = Pull.UP
switch = Button(pin, long_duration_ms = 1000)
switch_state = False

# external neopixels
num_pixels = 100
pixels = neopixel.NeoPixel(board.EXTERNAL_NEOPIXELS, num_pixels, auto_write=True)
pixels.brightness = 0.8

# onboard LIS3DH
i2c = board.I2C()
int1 = DigitalInOut(board.ACCELEROMETER_INTERRUPT)
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1)
lis3dh.range = adafruit_lis3dh.RANGE_2_G
lis3dh.set_tap(1, HIT_THRESHOLD)
```

## RGB LED

Inside the button is an RGB LED. The color of the LED matches the color of the NeoPixels with the help of the `set_rgb_led()` function.

```python
red_led = pwmio.PWMOut(board.D10)
green_led = pwmio.PWMOut(board.D11)
blue_led = pwmio.PWMOut(board.D12)

def set_rgb_led(color):
    # convert from 0-255 (neopixel range) to 65535-0 (pwm range)
    red_led.duty_cycle = int(simpleio.map_range(color[0], 0, 255, 65535, 0))
    green_led.duty_cycle = int(simpleio.map_range(color[1], 0, 255, 65535, 0))
    blue_led.duty_cycle = int(simpleio.map_range(color[2], 0, 255, 65535, 0))

set_rgb_led(COLORS[SABER_COLOR])
```

## The Loop

At the top of the loop, the button is monitored for any change in state with `switch.update()`. The rest of the loop is a series of states defined by the value of `mode`. When `mode` is `0`, the lightsaber boots up by playing the start-up sound and having the NeoPixels light-up one by one.

```python
switch.update()
# startup
if mode == 0:
  print(mode)
  play_wav(0, loop=False)
  for i in range(num_pixels):
    pixels[i] = COLORS[SABER_COLOR]
    pixels.show()
    time.sleep(1)
    play_wav(1, loop=True)
    mode = 1
```

## Default Mode

When `mode` is `1`, the lightsaber is idle, playing the idling sound on a loop. The LIS3DH is monitored for any changes that match or exceed the thresholds defined at the top of the code for a hit or swing.

```python
# default
elif mode == 1:
  x, y, z = lis3dh.acceleration
  accel_total = x * x + z * z
  if lis3dh.tapped:
      print("tapped")
      mode = "hit"
  elif accel_total &gt;= SWING_THRESHOLD:
      print("swing")
      mode = "swing"
```

The button is also monitored for a short press or long press. When a short press is detected, the lightsaber goes into `mode 3`, which is the shutdown mode. When a long press is detected, the lightsaber goes into `mode 5`, which lets you change the color of the lightsaber.

```python
if switch.short_count == 1:
    mode = 3
if switch.long_press:
    audio.stop()
    play_wav(19, loop=True)
    print("change color")
    mode = 5
```

## Lightsaber Battle

If a swing or hit is detected, a randomized matching sound effect is played. In the case of a hit, the NeoPixels change in color to white. After the swing or hit has finished, the idle sound begins playing again on a loop.

```python
# clash or move
    elif mode == "hit":
        audio.stop()
        play_wav(random.randint(3, 10), loop=False)
        while audio.playing:
            pixels.fill(WHITE)
            pixels.show()
        pixels.fill(COLORS[SABER_COLOR])
        pixels.show()
        play_wav(1, loop=True)
        mode = 1
    elif mode == "swing":
        audio.stop()
        play_wav(random.randint(11, 18), loop=False)
        while audio.playing:
            pixels.fill(COLORS[SABER_COLOR])
            pixels.show()
        pixels.fill(COLORS[SABER_COLOR])
        pixels.show()
        play_wav(1, loop=True)
        mode = 1
```

## Power Down

If a short press is detected in idle mode, the lightsaber powers down by playing the shutdown sound and turning off the NeoPixels one by one. The external power pin is also turned off to conserve battery power.

If a short press is detected in this mode, `mode` is set to `4` and the external power pin is turned back on. Then, `mode` is set to `0` to return to the start-up mode.

```python
# turn off
    elif mode == 3:
        audio.stop()
        play_wav(2, loop=False)
        for i in range(99, 0, -1):
            pixels[i] = (0, 0, 0)
            pixels.show()
        time.sleep(1)
        external_power.value = False
        mode = 4
    # go to startup from off
    elif mode == 4:
        if switch.short_count == 1:
            external_power.value = True
            mode = 0
```

## Choose Your Color

A long press in idle mode changes the `mode` to `5`, which lets you change the color of the NeoPixels. With every short press, the selected index in the `COLORS` array advances by `1`. The RGB LED also changes its color to match. You'll use a long press to exit color change mode with your new color and return to idle mode.

```python
# change color
    elif mode == 5:
        if switch.short_count == 1:
            SABER_COLOR = (SABER_COLOR + 1) % 6
            pixels.fill(COLORS[SABER_COLOR])
            pixels.show()
            set_rgb_led(COLORS[SABER_COLOR])
        if switch.long_press:
            play_wav(1, loop=True)
            pixels.fill(COLORS[SABER_COLOR])
            pixels.show()
            set_rgb_led(COLORS[SABER_COLOR])
            mode = 1
```

# Ahsoka Lightsaber Prop-Maker RP2040 retrofit

## Blade Assembly

Take apart the blade by removing the screws from the pogo pin connector shell

Use tweezers to help remove the plastic pin from the tube.

&nbsp;

![hacks_blade-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/686/medium640/hacks_blade-screws.jpg?1692632777)

![hacks_blade-shell-pin.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/687/medium640/hacks_blade-shell-pin.jpg?1692632867)

Carefully slide out the diffuser a bit and take out the LED's PCB while keeping the cover and diffuser in the tube.

![hacks_blade-core.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/688/medium640/hacks_blade-core.jpg?1692632973)

Now we can solder the wires from the pogo pin connector to our strip of NeoPixels.&nbsp;

&nbsp;

Then, we can fit it into the diffuser sleeve and slide it into the cover and tube.

&nbsp;

Fit the covers of the pogo pin connector onto the blade and secure it using the screws.

&nbsp;

![hacks_blade-led-desolder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/689/medium640/hacks_blade-led-desolder.jpg?1692633070)

![hacks_blade-neopixels.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/694/medium640/hacks_blade-neopixels.jpg?1692636524)

![](https://cdn-learn.adafruit.com/assets/assets/000/123/690/medium800/hacks_pogo-pins.jpg?1692633078)

# Ahsoka Lightsaber Prop-Maker RP2040 retrofit

## Assembly

Start by removing the pommel using a spatula or prying tool then remove the screw from the battery cover.

&nbsp;

&nbsp;

![hacks_guard-remove.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/672/medium640/hacks_guard-remove.jpg?1692631912)

![hacks_guard-removed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/673/medium640/hacks_guard-removed.jpg?1692631941)

The two halves are held together with six screws so it's easy to take apart.

Carefully disconnect the speaker and slide switch connectors from the main board.

Desolder wires for the pogo connector, push button and the vibration motor.

![hacks_handle-open.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/676/medium640/hacks_handle-open.jpg?1692632103)

![hacks_handle-unsolder-board.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/677/medium640/hacks_handle-unsolder-board.jpg?1692632206)

You can splice wires to extend the cable from the pogo pin connector.&nbsp;

Attach a 2-pin JST cable to the battery holders terminals so it can plug into the Feather.

&nbsp;

![hacks_solder-pog.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/678/medium640/hacks_solder-pog.jpg?1692632245)

![hacks_solder-battery.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/679/medium640/hacks_solder-battery.jpg?1692632296)

The push button wires can just screw into the Prop Maker's screw block terminals.

&nbsp;

![hacks_push-button.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/680/medium640/hacks_push-button.jpg?1692632345)

You'll need to cut the trace on the back of the Feather to disable lipo charging so we can use Alkaline Batteries.

Add another JST cable for the slide switch and insulate the exposed pins on the back of the Feather with some Kapton tape to avoid shorting.

![hacks_lipo-charge-pad-cut.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/682/medium640/hacks_lipo-charge-pad-cut.jpg?1692632431)

![hacks_board-switch-jst.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/683/medium640/hacks_board-switch-jst.jpg?1692632483)

Then we can plug everything together and close it back together.

The Feather fits between the old PCB standoffs with cables tucked underneath the board.

![hacks_board-place-inside.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/684/medium640/hacks_board-place-inside.jpg?1692632615)

![hacks_handle-close-wire-tuck.jpg](https://cdn-learn.adafruit.com/assets/assets/000/123/685/medium640/hacks_handle-close-wire-tuck.jpg?1692632683)

## Complete!
![](https://cdn-learn.adafruit.com/assets/assets/000/123/691/medium800/hacks_hero-clash-kids.jpg?1692633090)


## 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)
### Adafruit Mini Skinny NeoPixel Digital RGB LED Strip - 144 LED/m

[Adafruit Mini Skinny NeoPixel Digital RGB LED Strip - 144 LED/m](https://www.adafruit.com/product/2970)
So thin. So mini. So teeeeeeny-tiny. It's the 'skinny' version of our classic NeoPixel strips!

These NeoPixel strips have 144 digitally-addressable pixel Mini LEDs per meter and are very affordable and are only 7.5 mm wide (0.3")&nbsp;if you remove the strip from the...

In Stock
[Buy Now](https://www.adafruit.com/product/2970)
[Related Guides to the Product](https://learn.adafruit.com/products/2970/guides)
### JST PH 2-Pin Cable - Female Connector 100mm

[JST PH 2-Pin Cable - Female Connector 100mm](https://www.adafruit.com/product/261)
Red and black tinned wires with a 2-pin JST PH connector on the end. 4" / 100mm long. Matches up nicely with our Lipoly chargers!

[We have the socket 'mating' version of this cable](https://www.adafruit.com/product/3814) over here, <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/261)
[Related Guides to the Product](https://learn.adafruit.com/products/261/guides)
### JST PH 2-Pin Cable – Male Header 200mm

[JST PH 2-Pin Cable – Male Header 200mm](https://www.adafruit.com/product/3814)
For a really long time we assumed that the JST PH didn't have a free-hanging male header version. But then we found this **JST-PH 2-pin Male Cable,** and we were like,&nbsp;_this is perfect!_ It's not a genuine JST connector, but it's 100%...

In Stock
[Buy Now](https://www.adafruit.com/product/3814)
[Related Guides to the Product](https://learn.adafruit.com/products/3814/guides)
### Silicone Cover Stranded-Core Ribbon Cable - 4 Wires 1 Meter Long

[Silicone Cover Stranded-Core Ribbon Cable - 4 Wires 1 Meter Long](https://www.adafruit.com/product/3889)
For those who are fans of our silicone-covered wires, but are always looking to _up their wiring game_. We now have **Silicone Cover Ribbon cables!** These may look _a lot_ like <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/3889)
[Related Guides to the Product](https://learn.adafruit.com/products/3889/guides)
### USB Type A to Type C Cable - approx 1 meter / 3 ft long

[USB Type A to Type C Cable - approx 1 meter / 3 ft long](https://www.adafruit.com/product/4474)
As technology changes and adapts, so does Adafruit. This&nbsp;&nbsp; **USB Type A to Type C** cable will help you with the transition to USB C, even if you're still totin' around a USB Type A hub, computer or laptop.

USB C is the latest industry-standard connector for...

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

## Related Guides

- [Adafruit RP2040 Prop-Maker Feather](https://learn.adafruit.com/adafruit-rp2040-prop-maker-feather.md)
- [Adafruit NeoPixel Überguide](https://learn.adafruit.com/adafruit-neopixel-uberguide.md)
- [Prop-Maker Feather Talking Adabot Clock](https://learn.adafruit.com/prop-maker-feather-talking-adabot-clock.md)
- [Close Encounters of the MIDI NeoPixel Visualizer Kind](https://learn.adafruit.com/midi-neopixel-visualizer.md)
- [Gravity Falls Memory Gun](https://learn.adafruit.com/gravity-falls-memory-gun.md)
- [PropMaker Jack O'Lantern](https://learn.adafruit.com/propmaker-jack-o-lantern.md)
- [Zelda Echoes Of Wisdom Tri Rod](https://learn.adafruit.com/zelda-tri-rod.md)
- [Make a Zelda Master Sword with the RP2040 Prop-Maker Feather](https://learn.adafruit.com/master-sword-rp2040.md)
- [Dune Worm Thumper](https://learn.adafruit.com/dune-worm-thumper.md)
- [Haunted Air Blaster](https://learn.adafruit.com/automated-air-blaster.md)
- [Adabot Toy Robot Friend](https://learn.adafruit.com/adabot-rp2040.md)
- [NeoPixel Infinity Mirror Coaster](https://learn.adafruit.com/infinity-mirror-coaster.md)
- [Soundbox RP2040](https://learn.adafruit.com/soundbox-rp2040.md)
- [Motion Sensor Bat](https://learn.adafruit.com/motion-sensor-bat.md)
- [NeoPixel Infinity Cube](https://learn.adafruit.com/neopixel-infinity-cube.md)
