# Tombstone Prop-Maker RP2040

## Overview

https://youtu.be/U4jtZsjRZNg

Build an interactive tombstone for Halloween with Adafruit's RP2040 PropMaker Feather.

This ghoulish prop features lights and sounds but also an RGB LED matrix and a servo controlled Raven.

The servo, sound effects, and NeoPixels are triggered whenever a time of flight sensor detects something nearby.

The RGB LED matrix displays scrolling text messages to warn or welcome would-be trick-or-treaters.&nbsp;

&nbsp;

![hacks_hero-bird-loop_1.gif](https://cdn-learn.adafruit.com/assets/assets/000/124/295/medium640thumb/hacks_hero-bird-loop_1.jpg?1694486618)

![hacks_hero-indoor-loop_1.gif](https://cdn-learn.adafruit.com/assets/assets/000/124/297/medium640thumb/hacks_hero-indoor-loop_1.jpg?1694487115)

The tombstone is an off-the-shelf styrofoam prop. It's easy to work with so we were able to cut out channels and recesses for the electronics and wiring.

&nbsp;

The RP2040 PropMaker Feather does most of the work and the Matrix FeatherWing makes it easy to plug in an RGB LED matrix.

&nbsp;

CircuitPython has great support for RGB matrices and the time of flight sensor. It's got adjustable parameters so you can customize just about every attribute of this project.

![hacks_eyes-glow-loop.gif](https://cdn-learn.adafruit.com/assets/assets/000/124/301/medium640thumb/hacks_eyes-glow-loop.jpg?1694490403)

![hacks_neopixel-eye-cutouts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/303/medium640/hacks_neopixel-eye-cutouts.jpg?1694490469)

## Parts
### 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 RGB Matrix Featherwing Kit

[Adafruit RGB Matrix Featherwing Kit](https://www.adafruit.com/product/3036)
Ahoy! It's time to create a dazzling light up project with our new **RGB Matrix FeatherWing**. Now you can quickly and easily create projects featuring your favorite 16 or 32-pixel tall matrix boards. Using our RGB Matrix library is easy and...

In Stock
[Buy Now](https://www.adafruit.com/product/3036)
[Related Guides to the Product](https://learn.adafruit.com/products/3036/guides)
![Video of a woman with a turquoise manicure attaching a driver board to the back of a LED matrix panel. She flips the matrix panel around reveal it lit up text in rainbow colors: "Ada
fruit
32x32
*RGB* ](https://cdn-shop.adafruit.com/product-videos/640x480/3036-05.jpg)

### 64x32 RGB LED Matrix - 4mm pitch

[64x32 RGB LED Matrix - 4mm pitch](https://www.adafruit.com/product/2278)
Bring a little bit of Times Square into your home with this sweet 64 x 32 square RGB LED matrix panel. These panels are normally used to make video walls, here in New York we see them on the sides of busses and bus stops, to display animations or short video clips. We thought they looked...

In Stock
[Buy Now](https://www.adafruit.com/product/2278)
[Related Guides to the Product](https://learn.adafruit.com/products/2278/guides)
![Two white hands hold out an assembled and powered on 64x32 RGB LED Matrix Panel - 4mm pitch. The matrix displays "Adafruit Industries LED MATRIX! 32x64 *RGB*"](https://cdn-shop.adafruit.com/640x480/2278-00.jpg)

### Adafruit VL53L4CD Time of Flight Distance Sensor - ~1 to 1300mm

[Adafruit VL53L4CD Time of Flight Distance Sensor - ~1 to 1300mm](https://www.adafruit.com/product/5396)
The **Adafruit VL53L4CD Time of Flight Sensor** is another great _Time of Flight_&nbsp;distance sensor from ST in the VL5 series of chips, this one is great for shorter distances. The sensor contains a very tiny invisible laser source&nbsp;and a matching sensor. The...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5396)
[Related Guides to the Product](https://learn.adafruit.com/products/5396/guides)
![Video of a hand hovering over a Adafruit VL53L4CD Time of Flight Distance Sensor thats connected to a white breadboard reading the range of motion of the hand. ](https://cdn-shop.adafruit.com/product-videos/640x480/5396-05.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...

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

### NeoPixel RGBW Mini Button PCB - Pack of 10

[NeoPixel RGBW Mini Button PCB - Pack of 10](https://www.adafruit.com/product/4776)
These are the smallest NeoPixel breakouts around! Tiny, bright RGB+White pixels to your project. These little PCBs are only 9.1mm x 9.1mm and have two sets of three pads on the back for soldering wires. These ultra-bright LEDs have a constant-current driver cooked right into the LED package!...

In Stock
[Buy Now](https://www.adafruit.com/product/4776)
[Related Guides to the Product](https://learn.adafruit.com/products/4776/guides)
![Glowing NeoPixel Mini Button PCB wired up to a microcontroller](https://cdn-shop.adafruit.com/product-videos/640x480/4776-00.jpg)

### Part: 5V 4A (4000mA) switching power supply
quantity: 1
5V 4A (4000mA) switching power supply
[5V 4A (4000mA) switching power supply](https://www.adafruit.com/product/1466)

### Part: Black LED Diffusion Acrylic Panel
quantity: 1
Black LED Diffusion Acrylic Panel
[Black LED Diffusion Acrylic Panel](https://www.adafruit.com/product/4749)

### Part: Micro servo - TowerPro SG92R
quantity: 1
Micro servo - TowerPro SG92R
[Micro servo - TowerPro SG92R](https://www.adafruit.com/product/169)

### Part: JST PH 2-Pin Cable – Plug Header 200mm
quantity: 2
JST PH 2-Pin Cable – Plug Header 200mm
[JST PH 2-Pin Cable – Plug Header 200mm](https://www.adafruit.com/product/3814)

### Part: JST PH 2-Pin Cable - Socket Connector 100mm
quantity: 2
JST PH 2-Pin Cable - Socket Connector 100mm
[JST PH 2-Pin Cable - Socket Connector 100mm](https://www.adafruit.com/product/261)

### Part: JST PH 2mm 3-Pin Socket
quantity: 1
JST PH 2mm 3-Pin Socket
[JST PH 2mm 3-Pin Socket](https://www.adafruit.com/product/4046)

### Part: STEMMA JST PH 2mm 3-Pin Plug
quantity: 1
STEMMA JST PH 2mm 3-Pin Plug
[STEMMA JST PH 2mm 3-Pin Plug](https://www.adafruit.com/product/3893)

### Part: Silicone Cover Stranded-Core Ribbon Cable
quantity: 1
Silicone Cover Stranded-Core Ribbon Cable
[Silicone Cover Stranded-Core Ribbon Cable](https://www.adafruit.com/product/3889)

### Part: Split Wire Loom Tubing Wire Conduit
quantity: 1
Split Wire Loom Tubing Wire Conduit
[Split Wire Loom Tubing Wire Conduit](https://amzn.to/3sTADHq)

This is the foam tombstone we used - feel free to buy one of your choice or make one with materials at hand.

### Part: 3.5 Ft Gargoyle Tombstone
quantity: 1
3.5 Ft Gargoyle Tombstone
[3.5 Ft Gargoyle Tombstone](https://www.spirithalloween.com/product/3-5-ft-gargoyle-tombstone-decorations/131272.uts)

![](https://cdn-learn.adafruit.com/assets/assets/000/124/304/medium800thumb/hacks_hero-wide-loop_1.jpg?1694490589)

# Tombstone Prop-Maker RP2040

## 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 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/124/345/medium800/proximity_Circuit-Diagram.jpg?1694535784)

## Wired Connections

- The NeoPixels and speaker are each connected to pins on the screw block terminal
- Sensor plugs into the STEMMA port
- Servo connects to the headers on the Feather
- The Prop-Maker Feather seats on top of the RGB Matrix Wing

# Tombstone Prop-Maker RP2040

## 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)
# Tombstone Prop-Maker RP2040

## Code

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.

![hacks_code-wide.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/305/medium640/hacks_code-wide.jpg?1694490712)

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Tombstone_Matrix_Prop-Maker/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
- **tomb\_sounds** folder
- **code.py**

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

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

## How the CircuitPython Code Works

At the top of the code are a few parameters that you can modify to customize the tombstone. `distance_trigger` is the distance in centimeters where the time of flight sensor will trigger. `text` is the text that will scroll across the RGB matrix. `text_color` is the color of the scrolling text. `pause_time` is the time in seconds that the time of flight sensor will delay after being initially triggered. `scroll_time` is the speed in seconds that the text scrolls across the RGB matrix.

```python
distance_trigger = 90 # cm
text="Here lies Fred"
text_color = 0xff0000
# how often to check for a new trigger from ToF
pause_time = 30 # seconds
# speed for scrolling the text on the matrix
scroll_time = 0.1 # seconds
```

## Time of Flight and RGB Matrix Setup

The time of flight sensor is instantiated over I2C, and the RGB matrix object is set up to use the [FeatherWing pinout for the RP2040](https://learn.adafruit.com/rgb-matrix-featherwing/pinouts#m0-slash-m4-slash-rp2040-slash-esp32-s2-slash-s3-featherwing-wiring-2999121).

```python
i2c = board.I2C()
vl53 = adafruit_vl53l4cd.VL53L4CD(i2c)

vl53.inter_measurement = 0
vl53.timing_budget = 200

matrix = rgbmatrix.RGBMatrix(
    width=64, height=32, bit_depth=4,
    rgb_pins=[board.D6, board.D5, board.D9, board.D11, board.D10, board.D12],
    addr_pins=[board.D25, board.D24, board.A3, board.A2],
    clock_pin=board.D13, latch_pin=board.D0, output_enable_pin=board.D1)
```

## DisplayIO on the RGB Matrix

The `matrix` is passed as a `FramebufferDisplay` so that `displayio` can be used with the RGB matrix. The text is created as a `Label`. The `scroll` function moves the text by one pixel at a time across the display.

```python
display = framebufferio.FramebufferDisplay(matrix, auto_refresh=True)

line1 = adafruit_display_text.label.Label(
    terminalio.FONT,
    color=text_color,
    text=text)
line1.x = 1
line1.y = 14

def scroll(line):
    line.x = line.x - 1
    line_width = line.bounding_box[2]
    if line.x &lt; -line_width:
        line.x = display.width

g = displayio.Group()
g.append(line1)

display.root_group = g
```

## Sound Effects

The audio files in the **/tomb\_sounds** folder are added to the `wavs` list. If you change or add more sound effects to the folder, they will be added to the list with no additional modification in the code. Audio playback is handled with the I2S amp on the Feather. Playback is routed through a `Mixer` object to allow for software volume control. The `open_audio` function takes an index location for a wave file in the `wavs` list and preps it for playback.

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

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)

mixer.voice[0].level = 1
audio.play(mixer)
wav_length = len(wavs) - 1

def open_audio(num):
    n = wavs[num]
    f = open(n, "rb")
    w = audiocore.WaveFile(f)
    return w
```

## NeoPixels and Servo

The NeoPixels and servo are setup using the external NeoPixel and servo pins.&nbsp;

```python
PIXEL_PIN = board.EXTERNAL_NEOPIXELS
BRIGHTNESS = 0.3
NUM_PIXELS = 2

PIXELS = neopixel.NeoPixel(PIXEL_PIN, NUM_PIXELS, auto_write=True)
pulse = Pulse(PIXELS, speed=0.05, color=RED, period=3)
COLORS = [RED, GREEN, BLACK]

SERVO_PIN = board.EXTERNAL_SERVO
PWM = pwmio.PWMOut(SERVO_PIN, duty_cycle=2 ** 15, frequency=50)
SERVO = servo.Servo(PWM)
SERVO.angle = 0
```

## Time Keeping

The `ticks` library is used for time tracking without blocking in the loop. The `scroll_clock` handles the delay for scrolling the text, and the `pause_clock` adds a delay for triggering the time of flight sensor. `ticks` uses milliseconds for time keeping. The `pause_time` and `scroll_time` variables at the top of the code are multiplied by `1000` to convert them from seconds to milliseconds.

```python
x = 0
scroll_clock = ticks_ms()
scroll_time = int(scroll_time * 1000)
pause_clock = ticks_ms()
pause_time = pause_time * 1000
pause = False
```

## The Loop

In the loop, if the time of flight sensor is triggered, then the servo moves to 90 degrees, and a randomized audio file from the `wavs` array is played through the speaker. While the audio is playing, the NeoPixels will pulse in either red or green. The `x` variable allows for switching between the two colors each time the time of flight sensor is triggered.

The `pause_clock` is used to avoid multiple triggers back to back in case someone is standing in front of the tombstone for a while. When the time of flight sensor is initially triggered, `pause` is set to `True`. It is not reset to `False` until the `pause_clock` is greater than the `pause_time` delay.

```python
vl53.clear_interrupt()

    if vl53.distance &lt; distance_trigger:
        if not pause:
            print("Distance: {} cm".format(vl53.distance))
            SERVO.angle = 90
            wave = open_audio(random.randint(0, wav_length))
            mixer.voice[0].play(wave)
            while mixer.playing:
                pulse.color = COLORS[x]
                pulse.animate()
                if ticks_diff(ticks_ms(), scroll_clock) &gt;= scroll_time:
                    scroll(line1)
                    display.refresh(minimum_frames_per_second=0)
                    scroll_clock = ticks_add(scroll_clock, scroll_time)
            x = (x + 1) % 2
            pause = True
            print("paused")
            pause_clock = ticks_add(pause_clock, pause_time)
        else:
            if ticks_diff(ticks_ms(), pause_clock) &gt;= pause_time:
                print("back to sensing")
                pause = False
            print("still paused")
```

The `scroll_clock` allows the matrix to scroll the text by one pixel without blocking the other aspects of the code. Every time the `scroll_time` passes, the `scroll` function is called and moves the text by one pixel to the left.

```python
if ticks_diff(ticks_ms(), scroll_clock) &gt;= scroll_time:
        print("Distance: {} cm".format(vl53.distance))
        scroll(line1)
        scroll_clock = ticks_add(scroll_clock, scroll_time)
```

The servo and NeoPixels are reset after being triggered by the time of flight sensor. The servo is moved back to 0 degrees, and the NeoPixel color is changed to `BLACK` or off.

```python
SERVO.angle = 0
pulse.color = COLORS[2]
pulse.animate()
```

# Tombstone Prop-Maker RP2040

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

![hacks_parts-3d.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/330/medium640/hacks_parts-3d.jpg?1694527375)

[Download STLs](https://www.thingiverse.com/thing:6214449)
## Slice with Settings for PLA material&nbsp;

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

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

![hacks_slice.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/331/medium640/hacks_slice.jpg?1694527345)

## Share, Make, Remix

This Halloween Crow was originally designed by [danman](https://www.thingiverse.com/danman) on [https://www.thingiverse.com/thing:1091364](https://www.thingiverse.com/thing:1091364)

The parts have been modified to fit all of the electronics and they are available to download.

# Tombstone Prop-Maker RP2040

## Assemble

## Remove Tape Cover

The Time of Flight breakout has a protective sticker over the sensor that will need to be removed.

![hacks_sensor-tape.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/306/medium640/hacks_sensor-tape.jpg?1694522402)

## Matrix Power Cable

Measure and shorten the included power cable to fit behind the Matrix Display.

![proximity_matrix-power-cable.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/346/medium640/proximity_matrix-power-cable.jpg?1694536909)

![proximity_matrix-power-attach.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/347/medium640/proximity_matrix-power-attach.jpg?1694536940)

## Assemble Matrix FeatherWing

Connect power cables to the Matrix Wing: red wire to the + terminal and black wire to the - terminal on the Matrix Wing.

The Matrix Wing is set up with headers for plugging onto the bottom of the RP2040 PropMaker Feather.

The two then plug into the HUB75 socket on the back of the RGB LED Matrix.

![hacks_board-headers.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/307/medium640/hacks_board-headers.jpg?1694522682)

![hacks_board-matrix-plug.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/309/medium640/hacks_board-matrix-plug.jpg?1694523184)

## Matrix Cutout

Cut a frame out of the foam to fit the Matrix display.

You can use the Template below to print out and trace.

Hot wire foam cutter is used to create the opening for the matrix display.

A piece of black acrylic is placed first to help diffuse the matrix display.

![hacks_acrylic-place.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/311/medium640/hacks_acrylic-place.jpg?1694523369)

![hacks_matrix-place.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/312/medium640/hacks_matrix-place.jpg?1694523440)

[64x32_Matrix_frame_cut-out.jpg.zip](https://cdn-learn.adafruit.com/assets/assets/000/124/333/original/64x32_Matrix_frame_cut-out.jpg.zip?1694527267)
## LEDs eyes

Two NeoPixel buttons are wired together for adding a glowing effect to the demon atop the tombstone.

Measure and cut extension cables to reach the LEDs and speaker.

Use socket and plug ends to help easily disconnect components.

![proximity_neopixel-solder-back.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/348/medium640/proximity_neopixel-solder-back.jpg?1694537260)

![proximity_cable-extensions.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/349/medium640/proximity_cable-extensions.jpg?1694537321)

## LED eye holes

The eyes are then carved out for LEDs to shine through.

![proximity_neopixel-eye-holes.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/352/medium640/proximity_neopixel-eye-holes.jpg?1694537951)

![proximity_eyes-glow-loop.gif](https://cdn-learn.adafruit.com/assets/assets/000/124/353/medium640thumb/proximity_eyes-glow-loop.jpg?1694537958)

## Component cutouts

A speaker is fitted into another recess with a press fit cover to keep it in place.

&nbsp;

![proximity_neopixel-eye-cutouts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/350/medium640/proximity_neopixel-eye-cutouts.jpg?1694537762)

![proximity_speaker-cover.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/351/medium640/proximity_speaker-cover.jpg?1694537820)

## Sensor cutout and covers

Similarly, the time of flight breakout has an opening for the sensor with an accompanying cover.

&nbsp;

![hacks_sensor-cutout.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/317/medium640/hacks_sensor-cutout.jpg?1694524094)

![hacks_sensor-cap.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/318/medium640/hacks_sensor-cap.jpg?1694524126)

## Servo horn

A piece of foam-core is secured to a servo horn that fits into the head of the 3D printed Raven.

Use foam core to build the servo horn. Trace the Raven neck and cut in half. Attach the foam cutout to the included servo horn.

![hacks_servo-horn.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/322/medium640/hacks_servo-horn.jpg?1694525367)

## Raven Assemble

Trace a piece of black foam core around the neck and attach to the bird's neck. Make cut outs for the LEDs and servo.

Route the LED and servo wires through the body.

![hacks_bird-led-place.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/319/medium640/hacks_bird-led-place.jpg?1694524342)

![hacks_bird-servo-placed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/321/medium640/hacks_bird-servo-placed.jpg?1694524554)

## Attach Raven head

Press fit the head to the foam cutout.

Route wires to the back of the bird.

![hacks_bird-wires.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/324/medium640/hacks_bird-wires.jpg?1694528549)

![hacks_bird-head-place.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/325/medium640/hacks_bird-head-place.jpg?1694527402)

## Cable Conduits&nbsp;

Bundle the LED and servo wires together with split loom tubing conduit.

![hacks_bird-conduit.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/326/medium640/hacks_bird-conduit.jpg?1694527632)

![hacks_bird-conduit-.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/327/medium640/hacks_bird-conduit-.jpg?1694527766)

## Terminal connections

Connect the speaker and LEDs to the Prop-Maker Feather terminals.&nbsp;

The Time of Flight Sensor connects to the Feather's on-board stemma QT port.

Everything gets powered by a 5V 4A switching power supply so it can run all night.

![hacks_terminals-connected.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/328/medium640/hacks_terminals-connected.jpg?1694527820)

![hacks_hero-indoor-wide.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/329/medium640/hacks_hero-indoor-wide.jpg?1694528020)


## 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 RGB Matrix Featherwing Kit

[Adafruit RGB Matrix Featherwing Kit](https://www.adafruit.com/product/3036)
Ahoy! It's time to create a dazzling light up project with our new **RGB Matrix FeatherWing**. Now you can quickly and easily create projects featuring your favorite 16 or 32-pixel tall matrix boards. Using our RGB Matrix library is easy and...

In Stock
[Buy Now](https://www.adafruit.com/product/3036)
[Related Guides to the Product](https://learn.adafruit.com/products/3036/guides)
### 64x32 RGB LED Matrix - 4mm pitch

[64x32 RGB LED Matrix - 4mm pitch](https://www.adafruit.com/product/2278)
Bring a little bit of Times Square into your home with this sweet 64 x 32 square RGB LED matrix panel. These panels are normally used to make video walls, here in New York we see them on the sides of busses and bus stops, to display animations or short video clips. We thought they looked...

In Stock
[Buy Now](https://www.adafruit.com/product/2278)
[Related Guides to the Product](https://learn.adafruit.com/products/2278/guides)
### Adafruit VL53L4CD Time of Flight Distance Sensor - ~1 to 1300mm

[Adafruit VL53L4CD Time of Flight Distance Sensor - ~1 to 1300mm](https://www.adafruit.com/product/5396)
The **Adafruit VL53L4CD Time of Flight Sensor** is another great _Time of Flight_&nbsp;distance sensor from ST in the VL5 series of chips, this one is great for shorter distances. The sensor contains a very tiny invisible laser source&nbsp;and a matching sensor. The...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5396)
[Related Guides to the Product](https://learn.adafruit.com/products/5396/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...

In Stock
[Buy Now](https://www.adafruit.com/product/3968)
[Related Guides to the Product](https://learn.adafruit.com/products/3968/guides)
### NeoPixel RGBW Mini Button PCB - Pack of 10

[NeoPixel RGBW Mini Button PCB - Pack of 10](https://www.adafruit.com/product/4776)
These are the smallest NeoPixel breakouts around! Tiny, bright RGB+White pixels to your project. These little PCBs are only 9.1mm x 9.1mm and have two sets of three pads on the back for soldering wires. These ultra-bright LEDs have a constant-current driver cooked right into the LED package!...

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

## Related Guides

- [Adafruit RGB Matrix FeatherWings](https://learn.adafruit.com/rgb-matrix-featherwing.md)
- [Adafruit VL53L4CD Time of Flight Distance Sensor](https://learn.adafruit.com/adafruit-vl53l4cd-time-of-flight-distance-sensor.md)
- [Adafruit RP2040 Prop-Maker Feather](https://learn.adafruit.com/adafruit-rp2040-prop-maker-feather.md)
- [Network Connected RGB Matrix Clock](https://learn.adafruit.com/network-connected-metro-rgb-matrix-clock.md)
- [ Faz-Wrench - Five Nights at Freddy's](https://learn.adafruit.com/faz-wrench.md)
- [Adafruit RGB Matrix + Real Time Clock HAT for Raspberry Pi](https://learn.adafruit.com/adafruit-rgb-matrix-plus-real-time-clock-hat-for-raspberry-pi.md)
- [Matrix Portal RGB Display Handbag](https://learn.adafruit.com/matrix-portal-rgb-display-handbag.md)
- [AdaBox 016](https://learn.adafruit.com/adabox016.md)
- [Color Sensing Music Player](https://learn.adafruit.com/color-sensing-music-player.md)
- [Adafruit PCA9548 8-Channel STEMMA QT / Qwiic I2C Multiplexer](https://learn.adafruit.com/adafruit-pca9548-8-channel-stemma-qt-qwiic-i2c-multiplexer.md)
- [Raspberry Pi Video Synth with Blinka and Processing](https://learn.adafruit.com/raspberry-pi-video-synth-with-blinka-and-processing.md)
- [RGB Matrix Automatic YouTube ON AIR Sign](https://learn.adafruit.com/rgb-matrix-automatic-youtube-on-air-sign.md)
- [Talking HAL 9000 with RP2040 Prop Maker Feather](https://learn.adafruit.com/hal-9000-rp2040-prop-maker.md)
- [Matrix Portal Sand Handles](https://learn.adafruit.com/matrix-portal-sand.md)
- [LED Masquerade Masks with n00ds](https://learn.adafruit.com/led-masquerade-masks-with-n00ds.md)
- [Close Encounters of the MIDI NeoPixel Visualizer Kind](https://learn.adafruit.com/midi-neopixel-visualizer.md)
- [Purple Air AQI Display](https://learn.adafruit.com/purple-air-aqi-display.md)
- [Stream Deck controlled RGB Message Panel using Adafruit IO](https://learn.adafruit.com/stream-deck-controlled-rgb-message-panel-using-adafruit-io.md)
