# USB HID Crank Controller

## Overview

## A USB Crank Device
https://twitter.com/ecken/status/1136711911196827649

Ever wonder what it's like to control things with a crank? This project explores the use of a crank&nbsp; mechanism that attaches to a rotary encoder. With the Adafruit ItsyBitsy M0 and CircuitPython, we can simulate a USB Human Interface Device (HID) device (like computer keyboards, mice, and gamepads) to trigger commands, macros and key presses. This idea was inspired by the [Play Date](https://play.date) device by Panic.

![gaming_crankbox-3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/720/medium640/gaming_crankbox-3.jpg?1560195430)

## Hinged Crank Mechanism

Have you ever cranked a rotary encoder? With the right application, this actually feels intuitive and fun. This design features a hinged&nbsp;arm and free-rotating handle. It pops out of the case and hinges out making a crank. The mechanism is a 3D print-in-place design. It press fits over any flat nose rotary encoder.

![gaming_crank-box.gif](https://cdn-learn.adafruit.com/assets/assets/000/076/911/medium640thumb/gaming_crank-box.jpg?1560354394)

## Turbo Mode

The rotary encode simulates key presses each time a pulse is produced. By turning the encoder, rapid key presses are generated – This is similar to the "Turbo" button prominently featured on USB gamepads. We've come up with some use cases for this.

- Turn up/down volume or screen brightness
- Play MakeCode Arcade games
- Scroll webpages
- Rotate 3D models in CURA Slicer

## DIY USB HID

This project uses the USB HID CircuitPython library. It's designed for creating custom USB input devices for creative and assistive applications. The library supports most US keypresses, multimedia and gamepad controls.&nbsp;

![gaming_itsybitsy-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/684/medium640/gaming_itsybitsy-rotary.jpg?1560184278)

## Parts List
A copy and paste friendly list of parts linked to products page.

- [Adafruit ItsyBitsy M0](https://adafru.it/3727)
- [Rotary Encoder](https://adafru.it/377)
- [USB microB Cable – Fully reversible](https://adafru.it/4111)
- [10-wire silicone cover ribbon cable](https://www.adafruit.com/product/3890)
- [3D Printer – Inventor II](https://adafru.it/3897)
- [Filament for 3D Printers](https://adafru.it/2080)

![gaming_case-open.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/686/medium640/gaming_case-open.jpg?1560184961)

Featured
### Adafruit ItsyBitsy M0 Express - for CircuitPython & Arduino IDE

[Adafruit ItsyBitsy M0 Express - for CircuitPython & Arduino IDE](https://www.adafruit.com/product/3727)
What's smaller than a Feather but larger than a Trinket? It's an **Adafruit ItsyBitsy M0 Express**! Small, powerful, with a rockin' ATSAMD21 Cortex M0 processor running at 48 MHz - this microcontroller board is perfect when you want something very compact, but still...

In Stock
[Buy Now](https://www.adafruit.com/product/3727)
[Related Guides to the Product](https://learn.adafruit.com/products/3727/guides)
![Angled shot of Adafruit ItsyBitsy M0 Express - for CircuitPython & Arduino IDE.](https://cdn-shop.adafruit.com/640x480/3727-06.jpg)

Featured
### Rotary Encoder + Extras

[Rotary Encoder + Extras](https://www.adafruit.com/product/377)
This rotary encoder is the best of the best, it's a high-quality 24-pulse encoder, with detents and a nice feel. It is panel mountable for placement in a box, or you can plug it into a breadboard (just cut/bend the two mechanical side tabs.) We also include a nice soft-touch knob with an...

In Stock
[Buy Now](https://www.adafruit.com/product/377)
[Related Guides to the Product](https://learn.adafruit.com/products/377/guides)
![Rotary Encoder with rubbery knob](https://cdn-shop.adafruit.com/640x480/377-02.jpg)

Featured
### Fully Reversible Pink/Purple USB A to micro B Cable - 1m long

[Fully Reversible Pink/Purple USB A to micro B Cable - 1m long](https://www.adafruit.com/product/4111)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also fully reversible! That's right, you will save _seconds_ a day by not having to flip the cable around.

First let's talk about the cover and over-molding. We got these...

In Stock
[Buy Now](https://www.adafruit.com/product/4111)
[Related Guides to the Product](https://learn.adafruit.com/products/4111/guides)
![Fully Reversible Pink/Purple USB A to micro B Cable](https://cdn-shop.adafruit.com/640x480/4111-02.jpg)

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

Featured
### Filament for 3D Printers in Various Colors and Types

[Filament for 3D Printers in Various Colors and Types](https://www.adafruit.com/product/2080)
Having a 3D printer without filament is sort of like having a regular printer without paper or ink. &nbsp;And while a lot of printers come with some filament there's a good chance you've been printing up a storm and need something new. &nbsp;That's why we've started carrying a...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2080)
[Related Guides to the Product](https://learn.adafruit.com/products/2080/guides)
![Filament for 3D printers in various colors and types stacked together.](https://cdn-shop.adafruit.com/640x480/2080-07.jpg)

## Prerequisite Guides

If you're new to soldering and&nbsp;CircuitPython, we suggest you walk through the following guides to get the basics.&nbsp;

- [Collin's Lab –&nbsp;Soldering](https://learn.adafruit.com/collins-lab-soldering/learn-more?view=all)
- [Welcome to CircuitPython!](https://learn.adafruit.com/welcome-to-the-community/welcome-to-the-community)
- [Adafruit ItsyBitsy M0 Guide](https://learn.adafruit.com/introducing-itsy-bitsy-m0)

![](https://cdn-learn.adafruit.com/assets/assets/000/076/722/medium800/gaming_box-hand.jpg?1560194641)

# USB HID Crank Controller

## Circuit Diagram

## Circuit&nbsp;Diagram

This provides a visual reference for wiring of the components. They aren't true to scale, just meant to be used as reference. This diagrams was created using [Fritzing software](http://fritzing.org/download/).

## Adafruit Library for Fritzing

Use our Fritzing parts library to create circuit diagrams for your projects. Download the library or just grab the individual parts. Get 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/076/563/medium800/gaming_circuit_diagram.png?1560001008)

## Wired Connections

The rotary encoder connects to the Adafruit ItsyBitsy M0 with five wired connections. Ground from the switch and rotary can be shared on the ground pin or ground pad (on the back of the PCB).

- Ground from switch on rotary encoder to Ground on ItsyBitsy M0
- Pin from switch on rotary encoder to pin 9 on ItsyBitsy M0
- Right pin on rotary encoder to pin 10 on ItsyBitsy M0
- Left pin on rotary encoder to pin 11 on ItsyBitsy M0
- Middle pin on rotary encoder to ground on ItsyBitsy M0

## Powering

The Adafruit ItsyBitsy M0 can be powered via 5V via a USB connection to another device such as a computer.

# USB HID Crank Controller

## Software

## Install Circuit Python for ItsyBitsy M0

Download the latest version of CircuitPython for the Adafruit ItsyBitsy M0. Click the green button to launch the page and click on the purple download button for the latest stable release.

&nbsp;

[Download Circuit Python for ItsyBitsy M0](https://circuitpython.org/board/itsybitsy_m0_express/)
![](https://cdn-learn.adafruit.com/assets/assets/000/076/804/medium800/gaming_circuitpy-code.jpg?1560210889)

 **Quick Start**

- Connect the ItsyBitsy board to a computer (PC, mac, Linux) via a known good USB and double press the reset button.
- Download&nbsp; **circuitpython UF2** &nbsp;and upload to the&nbsp; **ITSYBOOT** &nbsp;flash drive.
- Open the&nbsp; **CIRCUITPY** &nbsp;drive and upload the required libraries (listed below) and the code for this project in a file named&nbsp; **code.py** in the root directory of **CIRCUITPY.**

## Adafruit Circuit Python Libraries

Download the CircuitPython library bundle and unzip the folder. Create a new folder in the&nbsp; **CIRCUITPY&nbsp;** drive and name it " **lib**". The following libraries are required to run the code properly. Double check to ensure all of the files and folders are inside the&nbsp; **lib** &nbsp;folder on the&nbsp; **CIRCUITPY** &nbsp;drive.

- **adafruit\_hid** &nbsp;(directory)
- **neopixel.mpy**

[Download Circuit Python Library Bundle](https://circuitpython.org/libraries)
## Upload code.py

You can click Download and download the file. Insure it saves to a file named **code.py** (if you select Download Zip you'll need to unzip the file to see **code.py**. Upload the&nbsp; **code.py file** &nbsp;to the&nbsp; **CIRCUITPY** &nbsp;drive.

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

## Modify Key Codes

You can customize the key codes to form custom commands, which can be multiple keys, or have it execute just single keyboard characters.

The rotary encoder can execute up to 3 different commands based on features. Pressing the knob and turning the knob left or right. These are commented in the code and can be changed by adjusting the key code value.

## List of USB HID Keycodes

The long list of available keyboard characters are listed in the webpage linked below. Most of the characters are for US keyboard only. Function keys and modifiers can be used but some special characters are not currently supported.

[Adafruit HID Keycodes](http://circuitpython.readthedocs.io/projects/hid/en/latest/api.html#adafruit-hid-keycode-keycode)
Starting with the first command, turning the knob to the right will execute the ctrl+up arrow keys. These are two different keyboard characters that are separated with commas. This will essentially press the two keys simultaneously. The values inside the parentheses kbd.press( **keycode.THISKEY** ) are the ones you want to change. For example, the block of code below is executed when turning the knob to the right.

`# Check if rotary encoder went upif encoder_direction == 1:kbd.press(Keycode.CONTROL, Keycode.UP_ARROW)kbd.release_all()`

For more information and troubleshooting, please check out the CircuitPython library guide, linked below.&nbsp;

[Welcome to CircuitPython Libraries](https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries)
# USB HID Crank Controller

## 3D Printing

![](https://cdn-learn.adafruit.com/assets/assets/000/076/685/medium800/gaming_3d-parts.jpg?1560184763)

## 3D Printed Parts

The parts in this kit are designed to be 3D printed with FDM based machines. STL files are oriented to print "as is". Parts require tight tolerances that might need adjustment of slice settings. Reference the suggested settings below.

[Download on Thingiverse](https://www.thingiverse.com/thing:3685130)
## DIY 3D Printed Crank for Rotary Encoders

Need a crank for a rotary encoder? Here's a print-in-place model that features a hinged arm and free-rotating handle. The pieces can not be disassembled. It's just one part that prints in about 20 minutes. Press fits over any flat nose rotary encoder, for those times where you need a cranky crank!

![gaming_rotary-cranks.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/726/medium640/gaming_rotary-cranks.jpg?1560195573)

Fusion 360 model included with accompanying STEP file. User parameters are setup for tolerances, length, shaft diameter etc. Gap is set to 0.4mm in STL file. Check out the source for your own tweaks!

## CURA Slicing

Parts were sliced using Ultimaker's CURA software and tested with an Ultimaker 3 and Flashforge Inventor II. The kit requires a minimum build volume of 150mm cubed. No support material is necessary for any of the parts. Double check parts are&nbsp;positioned in the center of the build plate before printing.&nbsp;

## Settings

Use these settings as reference. Values listed were used in&nbsp;[Ultimaker's CURA](https://ultimaker.com/en/products/ultimaker-cura-software)&nbsp;slicing software.

- 0.2mm Layer Height / 0.4mm nozzle
- 0.38mm Line Width (inner & outer widths)
- 40mm/s printing speed
- 20% infill
- Supports: No

## Designing Things

The fusion 360 source file is included and features original sketches and feature timeline along with easily editable user parameters. The parts can further be separated into small pieces for fitting on printers with smaller build volumes. Note: STEP file is included for other 3D surface modeling programs such as Onshape, Solidworks and Rhino.

## Layer by Layer

Interested in CAD tutorials? Check out my&nbsp;[playlist on YouTube](https://www.youtube.com/playlist?list=PLjF7R1fz_OOVsMp6nKnpjsXSQ45nxfORb)&nbsp;– There's over 100 of them! My personal favorite is the snap fit tutorial for cases and enclosures.&nbsp;

# USB HID Crank Controller

## Wiring

## Connect Rotary Encode to ItsyBisty

We'll need to solder wires to connect the rotary encoder to the Adafruit ItsyBitsy M0.&nbsp;

![gaming_itsybitsy-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/730/medium640/gaming_itsybitsy-rotary.jpg?1560196504)

## Silicone Cover Ribbon Cable

To keep the wiring neat and tidy, we'll use a 10-wire silicon cover ribbon cable – We only need five wires, so peel off a set. Measure out a piece to about 8 cm in length. Peel apart individual wires, on both ends, about 1 cm in length. Use a pair of wire strippers to remove a bit of insulation from the tips. Tin the exposed wire by adding a bit of solder – This will help prevent the wires from fraying.

![gaming_isty-rotary-wire.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/735/medium640/gaming_isty-rotary-wire.jpg?1560197415)

## Wire ItsyBitsy

Solder the wires to the following pins on the bottom of the Adafruit ItsyBitsy M0.

- Ground pin
- Ground pad
- Pin 10
- Pin 11
- Pin 9

![gaming_itsy-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/731/medium640/gaming_itsy-wiring.jpg?1560196596)

## Wire Rotary Encoder

Solder the wires to the following pins on the rotary encoder. Polarity on the left and right pins don't matter as long as they match pins on the ItsyBitsy. Double check and make sure the connections match.&nbsp;

- ItsyBitsy **ground**  **pin** to **center pin** on rotary encoder
- ItsyBitsy **pin 10** to **left pin** on rotary encoder
- ItsyBitsy **pin 11** to **right pin** on rotary encoder

![gaming_rotary-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/732/medium640/gaming_rotary-wiring.jpg?1560196711)

## Wire Switch on Rotary Encoder

Solder wires to the switch on the rotary encoder.

- ItsyBitsy **ground pin** to **left pin** on rotary encoder switch
- ItsyBitsy **pin 9** to **right pin** on rotary encoder switch

![gaming_rotary-sw-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/733/medium640/gaming_rotary-sw-wiring.jpg?1560196902)

## Wired Rotary Encoder

And now we have a nice and neatly wired rotary encoder! Double check the wiring and make sure the connections match.

![gaming_wired-itsy-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/734/medium640/gaming_wired-itsy-rotary.jpg?1560197031)

# USB HID Crank Controller

## Assembly

## Install ItsyBitsy M0

Place the ItsyBitsy PCB over the two standoffs on the bottom part of the enclosure. Line up the microUSB so with the notch on the side of the case. Insert the PCB at an angle so it's under the clip. Press the edges of the PCB down to snap fit the PCB into place.

![gaming_install-itsy-box.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/736/medium640/gaming_install-itsy-box.jpg?1560197981)

## Insert Rotary Encoder

Insert the shaft of the rotary encoder into the circular mounting tab on the inside of the case.&nbsp;

![gaming_insert-rotary-box.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/737/medium640/gaming_insert-rotary-box.jpg?1560198164)

## Install Rotary Encoder

Push the body of the rotary encoder up against the mounting tab.

![gaming_press-rotary-box.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/739/medium640/gaming_press-rotary-box.jpg?1560198250)

## Install Hex Nut

Pull the rotary encoder back and place the hex nut over the top of the shaft. There should be enough clearance to get the nut over the shaft.

![gaming_insert-nut-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/743/medium640/gaming_insert-nut-rotary.jpg?1560198464)

## Fasten Nut

Use fingers to fasten the hex nut onto the threading. Rotate the rotary encoder to tighten or loosen the nut. Optionally use a pair of needle nose pliers to grab hold of the nut.&nbsp; &nbsp;

![gaming_fasten-nut-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/744/medium640/gaming_fasten-nut-rotary.jpg?1560200393)

## Installed Rotary Encoder + ItsyBitsy

Take note of the rotary encoders orientation – The two metal prongs are right side up. This allows the space for the pins and wires.

Looks like there's a good amount of free space, eh? Maybe try adding some extra buttons!

![gaming_installed-rotary-box.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/747/medium640/gaming_installed-rotary-box.jpg?1560202283)

## Install Crank

Place the cap end of the crank onto the tip of the rotary encoder.

![gaming_insert-crank-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/745/medium640/gaming_insert-crank-rotary.jpg?1560201917)

Firmly press the crank onto shaft of the rotary encoder until it's fully seated.

![gaming_press-crank-rotary.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/746/medium640/gaming_press-crank-rotary.jpg?1560202248)

## Handle Holster

The case features a spot for holding the handle of the crank. There's a little dimple that clips into a small grove near the end of the handle. When the two halves of the enclosure are closed, the handle can "click" and hide inside the case.

![gaming_handle-dimple.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/749/medium640/gaming_handle-dimple.jpg?1560202539)

## Set Handle&nbsp;

Place the handle of the crank over the dimple.

![gaming_handle-inside.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/750/medium640/gaming_handle-inside.jpg?1560203219)

## Closing Case

Grab the top half of the enclosure and orient the halves so the features are matching.

![gaming_box-top-bottom.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/751/medium640/gaming_box-top-bottom.jpg?1560203373)

## Close Case

Place the top half over the bottom half. Make sure the cutouts are lined up and matching.

![gaming_case-closing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/752/medium640/gaming_case-closing.jpg?1560203637)

## Snap Fit Shut

The case has snap fit features&nbsp;that keep the halves secured and closed shut.&nbsp;

![gaming_case-closing-2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/753/medium640/gaming_case-closing-2.jpg?1560203976)

To open the case back up, place fingernail in between the indentations on the side. Pull apart to separate the two halves.

![gaming_case-snaps.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/754/medium640/gaming_case-snaps.jpg?1560204164)

## Case Closed

Plug it into a computer and try it out!

![gaming_case-closed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/076/755/medium640/gaming_case-closed.jpg?1560204495)


## Guide Products

### Adafruit ItsyBitsy M0 Express - for CircuitPython & Arduino IDE

[Adafruit ItsyBitsy M0 Express - for CircuitPython & Arduino IDE](https://www.adafruit.com/product/3727)
What's smaller than a Feather but larger than a Trinket? It's an **Adafruit ItsyBitsy M0 Express**! Small, powerful, with a rockin' ATSAMD21 Cortex M0 processor running at 48 MHz - this microcontroller board is perfect when you want something very compact, but still...

In Stock
[Buy Now](https://www.adafruit.com/product/3727)
[Related Guides to the Product](https://learn.adafruit.com/products/3727/guides)
### Rotary Encoder + Extras

[Rotary Encoder + Extras](https://www.adafruit.com/product/377)
This rotary encoder is the best of the best, it's a high-quality 24-pulse encoder, with detents and a nice feel. It is panel mountable for placement in a box, or you can plug it into a breadboard (just cut/bend the two mechanical side tabs.) We also include a nice soft-touch knob with an...

In Stock
[Buy Now](https://www.adafruit.com/product/377)
[Related Guides to the Product](https://learn.adafruit.com/products/377/guides)
### Fully Reversible Pink/Purple USB A to micro B Cable - 1m long

[Fully Reversible Pink/Purple USB A to micro B Cable - 1m long](https://www.adafruit.com/product/4111)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also fully reversible! That's right, you will save _seconds_ a day by not having to flip the cable around.

First let's talk about the cover and over-molding. We got these...

In Stock
[Buy Now](https://www.adafruit.com/product/4111)
[Related Guides to the Product](https://learn.adafruit.com/products/4111/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)
### Monoprice Inventor II 3D Printer with Touchscreen and WiFi

[Monoprice Inventor II 3D Printer with Touchscreen and WiFi](https://www.adafruit.com/product/3897)
The **Monoprice Inventor II 3D Printer Touchscreen with WiFi** is a perfect entry-level 3D printer with small footprint and reliable performance. It comes equipped with WiFi so you don't need a cable tether and a lovely 3.5" color touchscreen for settings & feedback....

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/3897)
[Related Guides to the Product](https://learn.adafruit.com/products/3897/guides)
### Filament for 3D Printers in Various Colors and Types

[Filament for 3D Printers in Various Colors and Types](https://www.adafruit.com/product/2080)
Having a 3D printer without filament is sort of like having a regular printer without paper or ink. &nbsp;And while a lot of printers come with some filament there's a good chance you've been printing up a storm and need something new. &nbsp;That's why we've started carrying a...

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

## Related Guides

- [Introducing ItsyBitsy M0 Express](https://learn.adafruit.com/introducing-itsy-bitsy-m0.md)
- [Raspberry Pi Pico and LED Arcade Button MIDI Controller](https://learn.adafruit.com/raspberry-pi-pico-led-arcade-button-midi-controller-fighter.md)
- [Circuit Cookie Roller](https://learn.adafruit.com/circuit-cookie-roller.md)
- [CLUE Step Counter](https://learn.adafruit.com/clue-step-counter-st-lsm6ds33.md)
- [Cappy Monster M4sk with Animated Eyes](https://learn.adafruit.com/cappy-monster-m4sk.md)
- [Monster M4SK Antenna Eyes](https://learn.adafruit.com/antenna-eyes.md)
- [MIDI Foot Pedal](https://learn.adafruit.com/midi-foot-pedal.md)
- [BLE Vibration Bracelet](https://learn.adafruit.com/ble-vibration-bracelet.md)
- [Lego Neon NeoPixel Sign with CircuitPython](https://learn.adafruit.com/lego-neon-sign.md)
- [Motorized Camera Slider 2-Axis](https://learn.adafruit.com/motorized-camera-slider-2-axis.md)
- [PyPortal 2FA TOTP Authentication Friend](https://learn.adafruit.com/pyportal-2fa-totp-authentication-friend.md)
- [Soundboard Speaker for Bikes & Scooters](https://learn.adafruit.com/soundboard-speaker-for-bikes-scooters.md)
- [LED Reactive Light-Up Hockey Puck in MakeCode](https://learn.adafruit.com/led-hockey-puck.md)
- [Bass MIDI Stomp Box](https://learn.adafruit.com/midi-bass-synth-stomp-box.md)
- [PyPortal Calculator using the Displayio UI Elements](https://learn.adafruit.com/pyportal-calculator-using-the-displayio-ui-elements.md)
- [Retroreflective Greenscreen Light Ring QT Py Controller ](https://learn.adafruit.com/retroreflective-green-screen-light-ring-controller.md)
