# NeoPixel Mini VU Meter

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/108/514/medium800thumb/led_strips_boomy-vumeter.jpg?1643658155)

https://youtu.be/9lymyZkPWMk

Build a mini VU meter inspired project using NeoPixels and CircuitPython! Powered by the QT Py RP2040, use a PDM microphone to turn audio data into a dazzling display with NeoPixels!

3D print a snap fit case to house the electronics with the mic exposed in the back cover. The grid isolates the 16x NeoPixels and a piece of Black LED acrylic diffuses the LEDs.

![led_strips_hand-vumeter.gif](https://cdn-learn.adafruit.com/assets/assets/000/108/515/medium640thumb/led_strips_hand-vumeter.jpg?1643658730)

## Parts
List of parts from the Adafruit shop.

- [QT Py RP2040](https://www.adafruit.com/product/4900)
- [PDM Mic](https://www.adafruit.com/product/4346)
- [Mini Skinny NeoPixel Strip 144/meter](https://www.adafruit.com/product/2969)
- [Black LED Acrylic - Sheet](https://www.adafruit.com/product/4594)
- [10-wire ribbon cable](https://www.adafruit.com/product/3890)
- [Stemma QT Cable](https://www.adafruit.com/product/4209)
- [M2.5 Hardware Kit](https://www.adafruit.com/product/3299)

![led_strips_parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/473/medium640/led_strips_parts.jpg?1643469302)

### Adafruit QT Py RP2040

[Adafruit QT Py RP2040](https://www.adafruit.com/product/4900)
What a cutie pie! Or is it... a QT Py?&nbsp;This diminutive dev board comes with one of our new favorite chip, the RP2040. It's been made famous in the new [Raspberry Pi Pico](https://www.adafruit.com/pico) _and_ our [Feather...](http://www.adafruit.com/product/4884)

Out of Stock
[Buy Now](https://www.adafruit.com/product/4900)
[Related Guides to the Product](https://learn.adafruit.com/products/4900/guides)
![Video of hand holding a QT Py PCB in their hand. An LED glows rainbow colors.](https://cdn-shop.adafruit.com/product-videos/640x480/4900-06.jpg)

### Adafruit PDM Microphone Breakout with JST SH Connector

[Adafruit PDM Microphone Breakout with JST SH Connector](https://www.adafruit.com/product/4346)
An exotic new microphone has arrived in the Adafruit shop, a **PDM MEMS Microphone**! PDM is the 'third' kind of microphone you can integrate with electronics, apart from analog or I2S. These microphones are very commonly used in products, but are rarely seen in maker...

In Stock
[Buy Now](https://www.adafruit.com/product/4346)
[Related Guides to the Product](https://learn.adafruit.com/products/4346/guides)
![A small, square-shaped, PDM Microphone breakout with a JST-SH connector.](https://cdn-shop.adafruit.com/640x480/4346-08.jpg)

### Black LED Diffusion Acrylic Panel 12" x 12" - 0.1" / 2.6mm thick

[Black LED Diffusion Acrylic Panel 12" x 12" - 0.1" / 2.6mm thick](https://www.adafruit.com/product/4594)
A nice whoppin' slab of some lovely black acrylic to add some extra diffusion to your LED Matrix project. This material is 2.6mm (0.1") thick and is made of special cast acrylic that makes it perfect for glowy projects, especially matricies or NeoPixels.

Unlike smoke or...

In Stock
[Buy Now](https://www.adafruit.com/product/4594)
[Related Guides to the Product](https://learn.adafruit.com/products/4594/guides)
![LED RGB matrix 12" x 12" with "Adafruit Industries LED Matrix" text showing, and LED acrylic slowly covering to make it nicely diffused](https://cdn-shop.adafruit.com/product-videos/640x480/4594-04.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/2969)
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/2969)
[Related Guides to the Product](https://learn.adafruit.com/products/2969/guides)
![Adafruit NeoPixel Digital RGB LED Strip with all the LEDs in a rainbow](https://cdn-shop.adafruit.com/product-videos/640x480/2969-04.jpg)

### Silicone Cover Stranded-Core Ribbon Cable - 10 Wire 1 Meter Long

[Silicone Cover Stranded-Core Ribbon Cable - 10 Wire 1 Meter Long](https://www.adafruit.com/product/3890)
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/3890)
[Related Guides to the Product](https://learn.adafruit.com/products/3890/guides)
![10 wire Silicone Cover Stranded-Core Ribbon Cable](https://cdn-shop.adafruit.com/640x480/3890-01.jpg)

### Part: STEMMA QT / Qwiic Cable
quantity: 1
JST SH 4-pin to Premium Male Headers Cable - 150mm Long
[STEMMA QT / Qwiic Cable](https://www.adafruit.com/product/4209)

### Part: Black Nylon Machine Screw and Stand-off Set
quantity: 1
M2.5 Thread
[Black Nylon Machine Screw and Stand-off Set](https://www.adafruit.com/product/3299)

# NeoPixel Mini VU Meter

## Circuit Diagram

The diagram below provides a visual reference for wiring of the components. This diagram was created using the software package [Fritzing](http://fritzing.org/download/).

## Adafruit Library for Fritzing

Use Adafruit's Fritzing parts library to create circuit diagrams for your projects. 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/108/362/medium800/led_strips_circuit-diagram.jpg?1643141278)

## Wiring Connections
NeoPixels

- NeoPixel **GND** to QT Py RP2040 **GND**
- NeoPixel **5V** to QT Py RP2040 **5V**
- NeoPixel **DIN** to QT Py RP2040 **A0**

PDM Mic

- PDM Mic **GND** to QT Py RP2040 **GND**
- PDM Mic **3V** to QT Py RP2040 **3V**
- PDM Mic **CLK** to QT Py RP2040 **TX**
- PDM Mic **DAT** to QT Py RP2040 **A1**

# NeoPixel Mini VU Meter

## 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_qtpy_rp2040/)
 **Click the link above to download the latest CircuitPython UF2 file.**

Save it wherever is convenient for you.

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

![](https://cdn-learn.adafruit.com/assets/assets/000/101/680/medium800/adafruit_products_QTRP_buttons.jpg?1618956837)

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)
# NeoPixel Mini VU Meter

## Coding the NeoPixel Mini VU Meter

![](https://cdn-learn.adafruit.com/assets/assets/000/108/532/medium800/led_strips_code-laptop-wide.jpg?1643733217)

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

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

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

## Upload the Code and Libraries to the QT Py RP2040
After downloading the Project Bundle, plug your QT Py RP2040 into the computer's USB port. 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 QT Py RP2040's&nbsp; **CIRCUITPY** &nbsp;drive.&nbsp;

- **lib** &nbsp;folder
- **code.py**

Your QT Py RP2040&nbsp; **CIRCUITPY&nbsp;** drive should look like this after copying the&nbsp; **lib** &nbsp;folder and the&nbsp; **code.py&nbsp;** file.

![](https://cdn-learn.adafruit.com/assets/assets/000/108/452/medium800/led_strips_neopixelVU.jpg?1643383283)

## How the CircuitPython Code Works
First, the strip of 16 NeoPixels are setup.

```python
#  neopixel setup
pixel_pin = board.A0

pixel_num = 16

pixels = neopixel.NeoPixel(pixel_pin, pixel_num, brightness=0.1, auto_write=False)
```

## PDM Mic Setup
Then the PDM mic is setup, along with two functions that assist with returning usable data from the PDM mic.

```python
#  function to average mic levels
def mean(values):
    return sum(values) / len(values)

#  function to return mic level
def normalized_rms(values):
    minbuf = int(mean(values))
    samples_sum = sum(
        float(sample - minbuf) * (sample - minbuf)
        for sample in values
    )

    return math.sqrt(samples_sum / len(values))

#  mic setup
mic = audiobusio.PDMIn(board.TX,
                       board.A1, sample_rate=16000, bit_depth=16)
samples = array.array('H', [0] * 160)
```

## Defining the NeoPixel Colors
Four colors for the NeoPixels are setup. The `colors` array holds the colors in the order that they will appear on the VU meter.

```python
#  neopixel colors
GREEN = (0, 127, 0)
RED = (127, 0, 0)
YELLOW = (127, 127, 0)
OFF = (0, 0, 0)

#  array of colors for VU meter
colors = [GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN,
          GREEN, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, RED, RED]

#  begin with pixels off
pixels.fill(OFF)
pixels.show()
```

## The Loop
In the loop, data is received by the PDM mic and is held in the variable `magnitude`. `magnitude` is scaled to fit into the range of `0` to `16` using `map_range()`. This allows the 16 NeoPixels to represent the range of data coming from the PDM mic.

```python
#  take in audio
    mic.record(samples, len(samples))
    #  magnitude holds the value of the mic level
    magnitude = normalized_rms(samples)
    #  uncomment to see the levels in the REPL
    #  print((magnitude,))

    #  mapping the volume range (125-500) to the 16 neopixels
    #  volume range is optimized for music. you may want to adjust the range
    #  based on the type of audio that you're trying to show
    mapped_value = simpleio.map_range(magnitude, 125, 500, 0, 16)
    #  converting the mapped range to an integer
    input_val = int(mapped_value)
```

## Updating the NeoPixels
The NeoPixels are updated if the data from the PDM mic changes. This is checked by comparing `last_input` and `input_val`.

A `for` statement is used to iterate through the range of the current input data from the PDM mic. The index, represented with `i`, is used to turn on the correct number of pixels and the defined colors from the `colors` array.

```python
#  if the mic input has changed from the last input value...
    if last_input != input_val:
        for i in range(input_val):
            #  if the level is lower...
            if last_input &gt; input_val:
                for z in range(last_input):
                    #  turn those pixels off
                    pixels[z] = (OFF)
            #  turn on pixels using the colors array
            pixels[i] = (colors[i])
            pixels.show()
            #  update last_input
            last_input = input_val

    time.sleep(0.01)
```

![](https://cdn-learn.adafruit.com/assets/assets/000/108/533/medium800/led_strips_code-demo.jpg?1643733233)

![](https://cdn-learn.adafruit.com/assets/assets/000/108/534/medium800/led_strips_code-mu.jpg?1643733255)

# NeoPixel Mini VU Meter

## CAD files

## CAD 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:

- case
- grid
- strip-cover
- back-cover

![led_strips_3d-parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/520/medium640/led_strips_3d-parts.jpg?1643665385)

[Download CAD source](https://cdn-learn.adafruit.com/assets/assets/000/108/525/original/CAD_source.zip?1643729392)
[Download STLs.zip](https://cdn-learn.adafruit.com/assets/assets/000/108/524/original/STLs.zip?1643729375)
## Build Volume

The parts require a 3D printer with a minimum build volume.

- 120mm (X) x 30mm (Y) x 50mm (Z)

![led_strips_slice-grid.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/526/medium640/led_strips_slice-grid.jpg?1643730751)

## Acrylic Template

Use the template to cut out the piece of black LED acrylic. The dimensions are listed in the template. Print the PDF and do not scale.

Cut inside the purple outline. The light gray color resembles the actual piece of acrylic needed.&nbsp;

![led_strips_acrylic-template-pdf.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/522/medium640/led_strips_acrylic-template-pdf.jpg?1643724213)

[acrylic-template.pdf](https://cdn-learn.adafruit.com/assets/assets/000/108/535/original/acrylic-template.pdf?1643735951)
## SVG File for Laser cutter or CNC Mill
[acrylic-piece.svg](https://cdn-learn.adafruit.com/assets/assets/000/108/536/original/acrylic-piece.svg?1643736043)
## CAD Assembly

The QT Py snap fits into the built-in holder on the strip-cover. The PDM mic is secured to the strip cover using M2.5 screws and hex nuts. The NeoPixel strip is placed over the grip into the recess. The piece of black LED acrylic is press fitted into the case. The grid is fitted into the case. The strip cover is press fitted into the case.

![led_strips_cad-explode.gif](https://cdn-learn.adafruit.com/assets/assets/000/108/523/medium640thumb/led_strips_cad-explode.jpg?1643729097)

## Design Source Files

The project assembly was designed in Fusion 360. This can be downloaded in different formats like STEP, STL and more. Electronic components like Adafruit's board, displays, connectors and more can be downloaded from the&nbsp;[Adafruit CAD parts GitHub Repo](https://github.com/adafruit/Adafruit_CAD_Parts).

![led_strips_4900_QTPY-RP2040.gif](https://cdn-learn.adafruit.com/assets/assets/000/108/527/medium640thumb/led_strips_4900_QTPY-RP2040.jpg?1643730899)

# NeoPixel Mini VU Meter

## Wiring

## 4-pin Cable

Use the 4-pin cable to connect the PDM mic to the QT Py. This cable features header pins that are not needed.

![led_strips_cable-pdm-qtpy.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/474/medium640/led_strips_cable-pdm-qtpy.jpg?1643476261)

## Wire Mic Cable to QT Py

Cut the header pins from the wires so the cable has a length of about 114mm (4.5in).

Using wire stripper, remove a bit of insulation from the tips of each wire. Tin the tips of the wires by adding a bit of solder. This helps prevent the strands of wire from fraying.

![led_strips_cable-qtpy-ready.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/475/medium640/led_strips_cable-qtpy-ready.jpg?1643476295)

## Connect Mic Wires to QT Py

Solder the four wires from the cable to the pins on the QT Py. Follow the list to reference which wires go where.

- Red Wire – 3V pin on QT Py
- Black Wire – GND pin on QT Py
- Yellow Wire – TX pin on QT Py
- Blue Wire – A1 pin on QT Py

![led_strips_cable-qtpy-soldering.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/476/medium640/led_strips_cable-qtpy-soldering.jpg?1643476338)

## Connect & Check Wiring

Plug in the JST connector from the cable to the JST port on the PDM mic. Double check the wires are properly soldered to the pins on the QT Py.&nbsp;

![led_strips_qtpy-pdm-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/477/medium640/led_strips_qtpy-pdm-wired.jpg?1643486609)

## Cut NeoPixel Strip

Locate the end of the strip with the Data In arrow marking.

Count 16 LEDs from the Mini Skinny NeoPixel strip and cut in between the marked pads.

Double check the strip has the correct number of NeoPixels.

![led_strips_neopixel-strip-16x.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/529/medium640/led_strips_neopixel-strip-16x.jpg?1643732052)

## Wire for NeoPixel Strip

Use the 10-wire ribbon cable to create a 3-wire cable for connecting the NeoPixel strip to the QT Py.

Measure and cut a piece of ribbon cable so it's about the length of the strip of NeoPixels.

Using wire stripper, remove a bit of insulation from the tips of each wire. Tin the tips of the wires by adding a bit of solder.

![led_strips_cable-neopixel.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/478/medium640/led_strips_cable-neopixel.jpg?1643486660)

## Solder Cable to NeoPixel Strip

Locate the end of the NeoPixel strip with the DATA IN pad.

Solder the wires from the cable to the three pads on the back of the NeoPixel flexible PCB.

Reference the labels for soldering the wires to the correct pads.

![led_strips_neopixel-bot-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/479/medium640/led_strips_neopixel-bot-wiring.jpg?1643486902)

![led_strips_neopixel-top-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/512/medium640/led_strips_neopixel-top-wiring.jpg?1643657883)

## Wired NeoPixel Strip

Double check the cable has been properly soldered to the pads on the NeoPixel strip.

Get the QT PY ready to solder the NeoPixel three wired connections.

![led_strips_neopixel-qtpy-prewire.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/482/medium640/led_strips_neopixel-qtpy-prewire.jpg?1643486998)

## Connect NeoPixel to QT Py

Solder the three wires from the NeoPixel strip to the pins on the QT Py.

- 5V from NeoPixel – 5V on QT Py
- GND from NeoPixel – GND on QT Py
- DIN from NeoPixel – A0 on QT Py

![led_strips_neopixel-qtpy-soldering.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/483/medium640/led_strips_neopixel-qtpy-soldering.jpg?1643487016)

## Final Wire Check

Double check the wires from the NeoPixel strip has been properly soldered to the QT Py.

Test the circuit by plugging a USB cable to a 5V power source.

![led_strips_neopixel-qtpy-connected.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/484/medium640/led_strips_neopixel-qtpy-connected.jpg?1643487031)

# NeoPixel Mini VU Meter

## Assembly

## Hardware for PDM Mic

Use the following hardware to secure the PDM mic to the 3d printed strip cover.

- 2x M2.5 x 6mm screws
- 2x M2.5 hex nuts

![led_strips_mic-hardware.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/485/medium640/led_strips_mic-hardware.jpg?1643487138)

## Secure PDM mic

Insert the M2.5&nbsp; screws through the two holes on the strip cover. Place the PDM mic over so the screws fit through the two mounting holes. Insert and fasten the two hex nuts to secure the PDM mic to the strip cover.

![led_strips_mic-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/486/medium640/led_strips_mic-secured.jpg?1643487193)

## Connect PDM Mic Cable

Ensure the 4-pin cable is connected to the PDM microphone.

![led_strips_mic-cable-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/487/medium640/led_strips_mic-cable-connect.jpg?1643487280)

## Installing QT Py

Get the QT Py ready to install onto the strip cover. Orient the strip cover so the built-in holder is lined up with the USB port on the QT Py.

![led_strips_qtpy-preinstall.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/488/medium640/led_strips_qtpy-preinstall.jpg?1643487341)

## Install QT Py

Insert the QT Py into the built-in holder at an angle with the corners of the PCB fitting under the clips.

Double check the USB-C port is facing the correct orientation.

Slightly flex the strip cover to allow the QT Py PCB to fit into the corners of the built-in holder.

![led_strips_qtpy-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/489/medium640/led_strips_qtpy-installing.jpg?1643487441)

![led_strips_qtpy-installed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/492/medium640/led_strips_qtpy-installed.jpg?1643487797)

## Install LED Acrylic to Case

The black LED acrylic is press fitted into the case with the shinny side facing up and the matte side facing down.

Press the acrylic so it's flush with the bottom surface of the case.

![led_strips_acrylic-preinstall.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/491/medium640/led_strips_acrylic-preinstall.jpg?1643487718)

![led_strips_acrylic-install-cover.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/530/medium640/led_strips_acrylic-install-cover.jpg?1643732520)

## Install Grid into Case

Place the grid into the case with the closed bottom frame going in first and the recesses facing up.&nbsp;

Firmly press the grid into the case so it sits flush with the LED acrylic.

&nbsp;

![led_strips_grid-preinstall.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/494/medium640/led_strips_grid-preinstall.jpg?1643488776)

![led_strips_grid-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/495/medium640/led_strips_grid-install.jpg?1643488122)

## Prep NeoPixel Strip

Place the NeoPixel strip over the back of the strip cover.

The cable should be tucked under the PDM mic for a nice installation.

&nbsp;

![led_strips_neopixel-cover-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/496/medium640/led_strips_neopixel-cover-install.jpg?1643488225)

## Install NeoPixel Strip

Begin to lay the NeoPixel strip over the recesses on the grid.

The NeoPixel strip should be placed with the LEDs fitting into the slots.

The strip cover will be placed over the NeoPixel strip and press fits into the case.

![led_strips_neopixel-grid-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/497/medium640/led_strips_neopixel-grid-install.jpg?1643488354)

## Install Strip Cover to Case

Double check the USB C port from the QT Py is orientated correctly with the case.

Firmly press the strip cover into the case with the QT Py and PDM mic facing up.

![led_strips_qtpy-cover-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/499/medium640/led_strips_qtpy-cover-install.jpg?1643489128)

## Install Back Cover

Get the back cover ready to install over the case.

Orient the back cover so the notch end is lined up with the USB C port on the QT Py.

Firmly press fit the back cover over the case and snap fit to close it shut.

![led_strips_back-cover-preinstall.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/500/medium640/led_strips_back-cover-preinstall.jpg?1643488761)

## USB C Port

Double check the USB C Port from the QT Py is accessible.

![led_strips_case-usbc.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/502/medium640/led_strips_case-usbc.jpg?1643489169)

## Final Build

Congratulations on your build! It's ready for some audio input.

Use a USB cable and a 5V power source to power the VU meter.

![led_strips_final-build.jpg](https://cdn-learn.adafruit.com/assets/assets/000/108/503/medium640/led_strips_final-build.jpg?1643489117)


## Featured Products

### Adafruit QT Py RP2040

[Adafruit QT Py RP2040](https://www.adafruit.com/product/4900)
What a cutie pie! Or is it... a QT Py?&nbsp;This diminutive dev board comes with one of our new favorite chip, the RP2040. It's been made famous in the new [Raspberry Pi Pico](https://www.adafruit.com/pico) _and_ our [Feather...](http://www.adafruit.com/product/4884)

Out of Stock
[Buy Now](https://www.adafruit.com/product/4900)
[Related Guides to the Product](https://learn.adafruit.com/products/4900/guides)
### Adafruit PDM Microphone Breakout with JST SH Connector

[Adafruit PDM Microphone Breakout with JST SH Connector](https://www.adafruit.com/product/4346)
An exotic new microphone has arrived in the Adafruit shop, a **PDM MEMS Microphone**! PDM is the 'third' kind of microphone you can integrate with electronics, apart from analog or I2S. These microphones are very commonly used in products, but are rarely seen in maker...

In Stock
[Buy Now](https://www.adafruit.com/product/4346)
[Related Guides to the Product](https://learn.adafruit.com/products/4346/guides)
### Black LED Diffusion Acrylic Panel 12" x 12" - 0.1" / 2.6mm thick

[Black LED Diffusion Acrylic Panel 12" x 12" - 0.1" / 2.6mm thick](https://www.adafruit.com/product/4594)
A nice whoppin' slab of some lovely black acrylic to add some extra diffusion to your LED Matrix project. This material is 2.6mm (0.1") thick and is made of special cast acrylic that makes it perfect for glowy projects, especially matricies or NeoPixels.

Unlike smoke or...

In Stock
[Buy Now](https://www.adafruit.com/product/4594)
[Related Guides to the Product](https://learn.adafruit.com/products/4594/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/2969)
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/2969)
[Related Guides to the Product](https://learn.adafruit.com/products/2969/guides)
### Silicone Cover Stranded-Core Ribbon Cable - 10 Wire 1 Meter Long

[Silicone Cover Stranded-Core Ribbon Cable - 10 Wire 1 Meter Long](https://www.adafruit.com/product/3890)
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/3890)
[Related Guides to the Product](https://learn.adafruit.com/products/3890/guides)
### Black Nylon Machine Screw and Stand-off Set – M2.5 Thread

[Black Nylon Machine Screw and Stand-off Set – M2.5 Thread](https://www.adafruit.com/product/3299)
Totaling 380 pieces, this **M2.5 Screw Set** &nbsp;is a must-have for your workstation.&nbsp;You'll have enough screws, nuts, and hex standoffs to fuel your maker tendencies&nbsp;for days on end! M2.5 size screws fit almost all of the Adafruit breakout/dev board mounting holes...

In Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
### STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable

[STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable](https://www.adafruit.com/product/4209)
This 4-wire cable is a little over 150mm / 6" long and fitted with JST-SH female 4-pin connectors on one end and premium Dupont male headers on the other. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert...

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

## Related Guides

- [Adafruit QT Py RP2040](https://learn.adafruit.com/adafruit-qt-py-2040.md)
- [3D Printed Frame for Adafruit IS31FL3741 LED Glasses](https://learn.adafruit.com/3d-printed-frame-for-led-glasses-is31fl3741.md)
- [Qualia S3 Compass](https://learn.adafruit.com/qualia-s3-compass.md)
- [Raspberry Pi Pico and LED Arcade Button MIDI Controller](https://learn.adafruit.com/raspberry-pi-pico-led-arcade-button-midi-controller-fighter.md)
- [Light Up Prop with Prop-Maker](https://learn.adafruit.com/prop-maker-light-wand.md)
- [Raspberry Pi Halloween Costume Detector](https://learn.adafruit.com/raspberry-pi-halloween-costume-detector.md)
- [reef-pi Guide 4: Water Level Controller](https://learn.adafruit.com/reef-pi-water-level-controller.md)
- [How to Choose a Microcontroller](https://learn.adafruit.com/how-to-choose-a-microcontroller.md)
- [Ambient Video Lighting with HyperHDR](https://learn.adafruit.com/ambient-video-lighting-with-hyperhdr.md)
- [Spinning Disc Step Sequencer](https://learn.adafruit.com/spinning-disc-step-sequencer.md)
- [PlayStation Spinner Controller](https://learn.adafruit.com/playstation-spinner-controller.md)
- [PyPortal Air Quality Display](https://learn.adafruit.com/pyportal-air-quality-display.md)
- [ESP32-S3 BLE iOS Media Controller](https://learn.adafruit.com/esp32-s3-ble-ios-media-controller.md)
- [Wireless ESP32-S2 Touch Screen Controller for Pure Data](https://learn.adafruit.com/wireless-esp32-s2-controller-for-pure-data.md)
- [MIDI Laser Harp with Time of Flight Distance Sensors](https://learn.adafruit.com/midi-laser-harp-time-of-flight-sensors.md)
- [Lemon Mechanical Keypad](https://learn.adafruit.com/qtpy-lemon-mechanical-keypad-macropad.md)
