# AS5600 Super Smooth Rotary Encoder

## Overview

![the encoder controlling the volume on an ipad in the apple music app](https://cdn-learn.adafruit.com/assets/assets/000/139/537/medium800thumb/sensors_ipadVolume.jpg?1757088473 )

Build the path of least resistance with this super smooth rotary encoder. This project uses an AS5600 magnetic angle sensor with a QT Py RP2040 running CircuitPython code to measure the change in magnetic field from a magnet that is being rotated directly above the sensor. When the magnet is rotated, the QT Py RP2040 sends out USB HID commands to raise or lower the volume on a connected device.

The secret sauce for the project is a print in place bearing. This piece attaches to the encoder knob and seats the magnet. This allows you to turn the magnet directly over the AS5600 when you rotate the knob.

![the print in place bearing being spun](https://cdn-learn.adafruit.com/assets/assets/000/139/543/medium640thumb/sensors_spinning.jpg?1757091131)

## Magnet

You'll need a **diametrically polarized magnet** for this project, like [this one on DigiKey](https://www.digikey.com/en/products/detail/radial-magnets-inc/9050/6030787). This means that the magnet is polarized across the diameter. This allows the AS5600 to sense the rotating magnetic field above it.

### Part: Diametrically Polarized Magnet
quantity: 1
0.315" Dia x 0.098" H (8.00mm x 2.50mm)
[Diametrically Polarized Magnet](https://www.digikey.com/en/products/detail/radial-magnets-inc/9050/6030787)

## Parts
### Adafruit AS5600 Magnetic Angle Sensor

[Adafruit AS5600 Magnetic Angle Sensor](https://www.adafruit.com/product/6357)
Add rotational sensing - without a mechanical connection -&nbsp;with&nbsp;the&nbsp; **Adafruit AS5600 Magnetic Angle Sensor**. Featuring the classic&nbsp;[ams AS5600](https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor), this board...

In Stock
[Buy Now](https://www.adafruit.com/product/6357)
[Related Guides to the Product](https://learn.adafruit.com/products/6357/guides)
![Demo Video of a hand turning a magnet behind the sensor board and getting a reading to appear on the display screen connected to the board.](https://cdn-shop.adafruit.com/product-videos/640x480/6357-05.jpg)

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

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

### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. 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 and remove.

<a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)
![Angled shot of STEMMA QT / Qwiic JST SH 4-pin Cable.](https://cdn-shop.adafruit.com/640x480/4210-00.jpg)

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

Out of Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
![Black Nylon Screw and Stand-off Set with M2.5 Threads, kit box](https://cdn-shop.adafruit.com/640x480/3299-00.jpg)

### Pink and Purple Woven USB A to USB C Cable - 1 meter long

[Pink and Purple Woven USB A to USB C Cable - 1 meter long](https://www.adafruit.com/product/5153)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers, and more.&nbsp;&nbsp;[If you want something just like it but for Micro B, we...](https://www.adafruit.com/product/4111)

Out of Stock
[Buy Now](https://www.adafruit.com/product/5153)
[Related Guides to the Product](https://learn.adafruit.com/products/5153/guides)
![Angled shot of coiled pink and purple USB cable with USB A and USB C connectors.](https://cdn-shop.adafruit.com/640x480/5153-02.jpg)

### Part: 8 mm M3 screw
quantity: 1
8 mm long M3 screw
[8 mm M3 screw](https://www.mcmaster.com/92000A118/)

### Part: 25 mm M3 screws
quantity: 4
25 mm long M3 screws
[25 mm M3 screws](https://www.mcmaster.com/92000A130/)

# AS5600 Super Smooth Rotary Encoder

## Circuit Diagram

![fritzing diagram with the qt py rp2040 and as5600 connected with a stemma qt cable](https://cdn-learn.adafruit.com/assets/assets/000/139/538/medium800/sensors_encFritz_bb.png?1757089176 )

Plug the AS5600 breakout into the STEMMA QT port on the QT Py RP2040 with a STEMMA QT cable.

# AS5600 Super Smooth Rotary Encoder

## 3D Printing

![the 3d printed parts laid out](https://cdn-learn.adafruit.com/assets/assets/000/139/540/medium800/sensors_edited_P1480063.jpg?1757089240 )

You can 3D print all of the parts for this project. They are designed to be connected together with M3 screws.

The STL files can be downloaded directly below or from Printables.

[as5600_rotary_encoder_CAD.zip](https://cdn-learn.adafruit.com/assets/assets/000/139/557/original/as5600_rotary_encoder_CAD.zip?1757093869)
[Printables Download](https://www.printables.com/model/1406062-as5600-super-smooth-rotary-encoder)
The star of the enclosure is a print in place bearing. The magnet is seated in the cutout of the center of the bearing. This allows it to rotate over the AS5600 sensor.

![the 3D printed bearing spinning](https://cdn-learn.adafruit.com/assets/assets/000/139/541/medium640thumb/sensors_freeSpin.jpg?1757090904)

All of the parts print well with standard slicer settings. However, the bearing needs some special settings so that it doesn't fuse:

- 0.12mm layer height
- 4 top shell layers
- 4 bottom shell layers
- 10% infill

![slicer settings for printing the bearing .12 layer height, 4 bottom and top shells, 10% infill](https://cdn-learn.adafruit.com/assets/assets/000/139/542/medium640/sensors_Screenshot_2025-09-04_104536.png?1757090994)

# AS5600 Super Smooth Rotary Encoder

## Install CircuitPython

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

## CircuitPython Quickstart

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

[Download the latest version of CircuitPython for this board via circuitpython.org](https://circuitpython.org/board/adafruit_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)
# AS5600 Super Smooth Rotary Encoder

## Code the Encoder

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 **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/AS5600_Magnetic_Encoder/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 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 QT Py RP2040's **CIRCUITPY** drive.

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

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

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

## How the Code Works

At the top of the code, the AS5600 is instantiated over I2C. `enc_inc` and `enc_dec` are setup to send the Consumer Control message for volume increase and volume decrease. `cc` is setup as a Consumer Control USB HID device.

```python
i2c = board.STEMMA_I2C()
sensor = adafruit_as5600.AS5600(i2c)
enc_inc = ConsumerControlCode.VOLUME_INCREMENT
enc_dec = ConsumerControlCode.VOLUME_DECREMENT
cc = ConsumerControl(usb_hid.devices)
```

## Variables

A few variables are created before the loop.&nbsp;`last_val` will hold the last sensor angle reading. `THRESHOLD` takes the maximum angle of the AS5600 (`4095`) and divides it by `2` with `//`. `MIN_CHANGE` is a user defined value that affects the sensitivity of the encoder. You can increase the value to make the encoder less sensitive or decrease the value to make it more sensitive.

```python
last_val = sensor.angle

THRESHOLD = sensor.max_angle // 2 # default max_angle is 4095
# you can change the max_angle. ex: sensor.max_angle = 1000

MIN_CHANGE = 25  # minimum change to register as movement
# increase to make less sensitive, decrease to make more sensitive
```

## The Loop

In the loop, the angle is measured with the sensor. If the angle compared to the last measurement is greater than the value of `MIN_CHANGE` or `THRESHOLD`, then a volume increase or volume decrease Consumer Control message is sent depending on the direction of the rotation.

The logic used takes wraparound into account, since the measured angle could, for example, jump from `0` to `359` degrees or vice versa when being rotated. The code is setup to pay attention to the direction of the rotation and base the sent Consumer Control message on that value.

```python
while True:
    enc_val = sensor.angle
    if abs(enc_val - last_val) &gt;= MIN_CHANGE or abs(enc_val - last_val) &gt; THRESHOLD:
        # Calculate the difference
        diff = enc_val - last_val
        # Check for wraparound
        if diff &gt; THRESHOLD:
            # Wrapped from ~4095 to ~0 (actually turning backwards)
            cc.send(enc_dec)
        elif diff &lt; -THRESHOLD:
            # Wrapped from ~0 to ~4095 (actually turning forwards)
            cc.send(enc_inc)
        elif diff &gt; 0:
            # Normal forward rotation
            cc.send(enc_inc)
        else:
            # Normal backward rotation (diff &lt; 0)
            cc.send(enc_dec)
        last_val = enc_val
```

# AS5600 Super Smooth Rotary Encoder

## Assembly

![all of the 3d printed parts and electronic components knolled](https://cdn-learn.adafruit.com/assets/assets/000/139/544/medium800/sensors_edited_P1480071.jpg?1757091240 )

## Magnet and Bearing
Attach the bearing to the knob with an [8 mm long M3 screw](https://www.mcmaster.com/92000A118/).

![the bearing attached to the knob with an m3 screw](https://cdn-learn.adafruit.com/assets/assets/000/139/545/medium640/sensors_edited_P1480085.jpg?1757091260)

Insert the [diametrically polarized magnet](https://www.digikey.com/en/products/detail/radial-magnets-inc/9050/6030787) into the center cutout over the screw in the bearing. The magnet will fit snugly into the cutout and stick to the stainless steel M3 screw.

![the magnet inserted into the bearing](https://cdn-learn.adafruit.com/assets/assets/000/139/546/medium640/sensors_edited_P1480090.jpg?1757091294)

## Electronics
Attach the AS5600 to the sensor mount with four M2.5 screws and nuts. The front AS5600 text label on the board silk should be facing away from the two mounting hole standoffs that are slightly taller.

![the as5600 attached to the sensor mount with m2.5 screws](https://cdn-learn.adafruit.com/assets/assets/000/139/547/medium640/sensors_edited_P1480097.jpg?1757091327)

![the back view of the as5600 attached to the sensor mount](https://cdn-learn.adafruit.com/assets/assets/000/139/548/medium640/sensors_edited_P1480099.jpg?1757091347)

Insert the QT Py RP2040 into the QT Py mount.

![the qt py inserted into the qt py mount](https://cdn-learn.adafruit.com/assets/assets/000/139/549/medium640/sensors_edited_P1480100.jpg?1757091472)

Connect the AS5600 to the QT Py RP2040 with a STEMMA QT cable.

![the as5600 connected to the qt py with a stemma qt cable](https://cdn-learn.adafruit.com/assets/assets/000/139/550/medium640/sensors_edited_P1480106.jpg?1757091519)

## Component Sandwich
Now you'll stack the components together inside the enclosure with [four 25 mm M3 screws](https://www.mcmaster.com/92000A130/) securing everything.

![the semi-assembled encoder with four m3 screws](https://cdn-learn.adafruit.com/assets/assets/000/139/551/medium640/sensors_edited_P1480109.jpg?1757091568)

Start by threading the M3 screws into the bottom enclosure. Insert the QT Py holder with the mounting holes aligned with the USB port facing towards the cut out in the enclosure.

![four m3 screws threaded about one quarter way into the enclosure](https://cdn-learn.adafruit.com/assets/assets/000/139/552/medium640/sensors_edited_P1480111.jpg?1757091641)

Insert the sensor mount by aligning the screw holes with the enclosure and QT Py mounting holes. There is a longer set of stand-offs on the mount. Those should be opposite of the USB cutout so that the AS5600 silkscreen text is facing towards the USB cutout.

Continue to thread the M3 screws into the sensor mount standoffs.&nbsp;

![the sensor mount screwed into the enclosure](https://cdn-learn.adafruit.com/assets/assets/000/139/553/medium640/sensors_edited_P1480112.jpg?1757091721)

Line up the bearing mounting holes with the sensor mounting holes. Continue to thread the M3 screws.

![the bearing mounting holes aligned with the sensor mount](https://cdn-learn.adafruit.com/assets/assets/000/139/554/medium640/sensors_edited_P1480117.jpg?1757091861)

Once the M3 screws are fully threaded into the enclosure, the assembly is complete!

If you are concerned about screws on your desk surface, you can [add some bumpers](https://www.adafruit.com/product/550) to the bottom of the case.

![the m3 screws fully threaded into the enclosure](https://cdn-learn.adafruit.com/assets/assets/000/139/555/medium640/sensors_edited_P1480120.jpg?1757091911)

# AS5600 Super Smooth Rotary Encoder

## Use

![the encoder adjusting the volume on an ipad with the youtube app open](https://cdn-learn.adafruit.com/assets/assets/000/139/556/medium800thumb/sensors_aaeVolume.jpg?1757092039 )

Plug the encoder assembly into a known good data USB C cable. Plug the other end of the cable into a computer or tablet. When you turn the encoder, you'll be able to adjust the volume on the device.

## Going Further

The code is meant as a simple example. You could change it to send different HID inputs, maybe for a video game, or change out the QT Py RP2040 for an ESP32-S2 or S3 to try sending commands over Bluetooth instead of USB. If you do build on this, consider documenting it as an [Adafruit Playground](https://adafruit-playground.com/) note!


## Featured Products

### Adafruit AS5600 Magnetic Angle Sensor

[Adafruit AS5600 Magnetic Angle Sensor](https://www.adafruit.com/product/6357)
Add rotational sensing - without a mechanical connection -&nbsp;with&nbsp;the&nbsp; **Adafruit AS5600 Magnetic Angle Sensor**. Featuring the classic&nbsp;[ams AS5600](https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor), this board...

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

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

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. 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 and remove.

<a...></a...>

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

Out of Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
### Black Nylon Machine Screw and Stand-off Set – M3 Thread

[Black Nylon Machine Screw and Stand-off Set – M3 Thread](https://www.adafruit.com/product/4685)
Totaling **420 pieces** , this **M3 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! M3 size screws fit a number of&nbsp;Adafruit breakout/dev board...

In Stock
[Buy Now](https://www.adafruit.com/product/4685)
[Related Guides to the Product](https://learn.adafruit.com/products/4685/guides)
### Snap-on Mount for Adafruit QT Py

[Snap-on Mount for Adafruit QT Py](https://www.adafruit.com/product/6183)
Here is a cute, minimal snap-on mount for your [QT Py](https://www.adafruit.com/category/595)&nbsp;to keep it safe during use and transport. It has been custom-designed and 3D printed to accommodate the USB-C connector, along with four M3 mounting holes. No screws or glue are...

In Stock
[Buy Now](https://www.adafruit.com/product/6183)
[Related Guides to the Product](https://learn.adafruit.com/products/6183/guides)
### Pink and Purple Woven USB A to USB C Cable - 1 meter long

[Pink and Purple Woven USB A to USB C Cable - 1 meter long](https://www.adafruit.com/product/5153)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers, and more.&nbsp;&nbsp;[If you want something just like it but for Micro B, we...](https://www.adafruit.com/product/4111)

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

## Related Guides

- [Adafruit QT Py RP2040](https://learn.adafruit.com/adafruit-qt-py-2040.md)
- [Adafruit AS5600 Magnetic Angle Sensor](https://learn.adafruit.com/adafruit-as5600-magnetic-angle-sensor.md)
- [MIDI Laser Harp with Time of Flight Distance Sensors](https://learn.adafruit.com/midi-laser-harp-time-of-flight-sensors.md)
- [Party Parrot Zoetrope](https://learn.adafruit.com/party-parrot-zoetrope.md)
- [LED Noodle Lantern](https://learn.adafruit.com/led-noodle-lantern.md)
- [Pip-Boy 2040 Wrist-Mounted Prop](https://learn.adafruit.com/pip-boy-2040.md)
- [USB Rotary Media Dial](https://learn.adafruit.com/usb-rotary-media-dial.md)
- [Light Up your Costume with Noods](https://learn.adafruit.com/light-up-your-costume-with-noods.md)
- [Animating Animatronics](https://learn.adafruit.com/animating-animatronics.md)
- [Raspberry Pi HQ Camera Case](https://learn.adafruit.com/raspberry-pi-hq-camera-case.md)
- [Adabot Toy Robot Friend](https://learn.adafruit.com/adabot-rp2040.md)
- [PyPortal Guitar Tuner](https://learn.adafruit.com/pyportal-guitar-tuner.md)
- [NeoPixel Mini VU Meter](https://learn.adafruit.com/neopixel-mini-vu-meter.md)
- [Faderwave Synthesizer](https://learn.adafruit.com/faderwave-synthesizer.md)
- [Remote Control Candy Dispenser Ghost](https://learn.adafruit.com/ble-claw.md)
- [Solderless Robot Toy Xylophone](https://learn.adafruit.com/solderless-robot-toy-xylophone.md)
- [CircuitPython OctoPrint Controller and Monitor](https://learn.adafruit.com/circuitpython-octoprint-controller-and-monitor.md)
