# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## Overview

https://www.youtube.com/watch?v=PSCtYgsI-Kw

A keyboard and a mouse are great tools for navigating your computer, but they require you to stay near your computer. In this project, you can build a wireless BLE controller with common shortcuts programmed for controlling your streaming apps _and yes it can even play Doom_!

The rotary encoder / scroll wheel controller is housed in a 3D printed case. The case has holes at the top so that it can be used as a pendant. This way, you won't lose it, you can access it quickly and you can show off your fashion sense by showcasing the aesthetically pleasing ANO Directional Navigation and Scroll Wheel Rotary Encoder.

![](https://cdn-learn.adafruit.com/assets/assets/000/110/700/medium800/feather_edited_P1320849.png?1649788799)

The brain of the project is a Feather nRF52840 running CircuitPython. This board has BLE so you can connect to your computer wirelessly.

![feather_edited_P1320834.png](https://cdn-learn.adafruit.com/assets/assets/000/110/697/medium640/feather_edited_P1320834.png?1649788685)

The control interface is an ANO Directional Navigation and Scroll Wheel Rotary Encoder. This lets you have a lot of interface options in a small and ergonomic footprint.

![feather_edited_P1320850.png](https://cdn-learn.adafruit.com/assets/assets/000/110/698/medium640/feather_edited_P1320850.png?1649788720)

There are two switches in the circuit. The switch on the bottom is an on/off switch. The switch on the side is a mode switch to select between streaming mode or Doom mode. Each mode has different keyboard shortcuts that are assigned to the rotary encoder's buttons and scroll wheel.

![feather_edited_P1320846.png](https://cdn-learn.adafruit.com/assets/assets/000/110/699/medium640/feather_edited_P1320846.png?1649788769)

## Prerequisite Guides
[Introducing the Adafruit nRF52840 Feather](https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather)
[ANO Directional Navigation and Scroll Wheel Rotary Encoder and Breakout](https://learn.adafruit.com/ano-rotary-encoder)
[BLE HID Keyboard Buttons with CircuitPython](https://learn.adafruit.com/ble-hid-keyboard-buttons-with-circuitpython)
## Parts
### Adafruit Feather nRF52840 Express

[Adafruit Feather nRF52840 Express](https://www.adafruit.com/product/4062)
The **Adafruit Feather nRF52840 Express** is the new Feather family member with Bluetooth® Low Energy and _native USB support_ featuring the nRF52840!&nbsp; It's our take on an 'all-in-one' Arduino-compatible + Bluetooth® Low Energy with built-in USB...

In Stock
[Buy Now](https://www.adafruit.com/product/4062)
[Related Guides to the Product](https://learn.adafruit.com/products/4062/guides)
![Angled shot of a Adafruit Feather nRF52840 Express. ](https://cdn-shop.adafruit.com/640x480/4062-02.jpg)

### ANO Directional Navigation and Scroll Wheel Rotary Encoder

[ANO Directional Navigation and Scroll Wheel Rotary Encoder](https://www.adafruit.com/product/5001)
This funky user interface element is reminiscent of the [original clicking scroll wheel interface on the first iPods](https://gizmodo.com/a-visual-history-of-the-ipod-click-wheel-r-i-p-1632640054). It's a fancy mechanical kit but has an intuitiveness that is hard to argue with -...

In Stock
[Buy Now](https://www.adafruit.com/product/5001)
[Related Guides to the Product](https://learn.adafruit.com/products/5001/guides)
![Angled shot of ANM rotary encoder.](https://cdn-shop.adafruit.com/640x480/5001-00.jpg)

### Adafruit ANO Rotary Navigation Encoder Breakout PCB

[Adafruit ANO Rotary Navigation Encoder Breakout PCB](https://www.adafruit.com/product/5221)
The ANO rotary encoder wheel is a funky user interface element is reminiscent of the [original clicking scroll wheel interface on the first iPods](https://gizmodo.com/a-visual-history-of-the-ipod-click-wheel-r-i-p-1632640054). It's a nifty kit, but the pin-out is a little...

In Stock
[Buy Now](https://www.adafruit.com/product/5221)
[Related Guides to the Product](https://learn.adafruit.com/products/5221/guides)
![Video of Rotary Navigation Encoder Breakout soldered and assembled on a breadboard with a NeoPixel ring and Feather M4. A white hand touches the rotary knob, lighting up NeoPixel LEDs.](https://cdn-shop.adafruit.com/product-videos/640x480/5221-00.jpg)

### Breadboard-friendly SPDT Slide Switch

[Breadboard-friendly SPDT Slide Switch](https://www.adafruit.com/product/805)
These nice switches are perfect for use with breadboard and perfboard projects. They have 0.1" spacing and snap in nicely into a solderless breadboard. They're easy to switch no matter what size fingers you have, but not so easy that they'll get flipped by accident. Work great as...

In Stock
[Buy Now](https://www.adafruit.com/product/805)
[Related Guides to the Product](https://learn.adafruit.com/products/805/guides)
![Small, black, SPDT slide switch.](https://cdn-shop.adafruit.com/640x480/805-03.jpg)

### Lithium Ion Polymer Battery - 3.7v 500mAh

[Lithium Ion Polymer Battery - 3.7v 500mAh](https://www.adafruit.com/product/1578)
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This battery has a capacity of 500mAh for a total of about 1.9 Wh. If you need a larger (or smaller!) battery, <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/1578)
[Related Guides to the Product](https://learn.adafruit.com/products/1578/guides)
![Angled shot of a Lithium Ion Polymer Battery 3.7V 500mAh with JST-PH connector.](https://cdn-shop.adafruit.com/640x480/1578-03.jpg)

### Header Kit for Feather - 12-pin and 16-pin Female Header Set

[Header Kit for Feather - 12-pin and 16-pin Female Header Set](https://www.adafruit.com/product/2886)
These two&nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[Feather](https://www.adafruit.com/categories/777)&nbsp;boards and you're in business!

What do they do? They get soldered on either side of the Feather...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2886)
[Related Guides to the Product](https://learn.adafruit.com/products/2886/guides)
![Angled shot of a Header Kit for Feather - 12-pin and 16-pin Female Header Set. ](https://cdn-shop.adafruit.com/640x480/2886-00.jpg)

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

### Part: Silicone Cover Stranded-Core Wire - 30AWG in Various Colors
quantity: 3
30AWG wire
[Silicone Cover Stranded-Core Wire - 30AWG in Various Colors](https://www.adafruit.com/product/2051)

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## Circuit Diagram

![](https://cdn-learn.adafruit.com/assets/assets/000/110/641/medium800/feather_bleEncoderFritzing_bb.png?1649439427)

## Wiring

- **ANO Directional Navigation and Scroll Wheel Rotary Encoder**
  - **ENCA** to **board**  **SDA**
  - **ENCB** to **board SCL**
  - **COMA** to **board pin 5**
  - **SW1** to **board pin 6**
  - **SW2** to **board pin 9**
  - **SW3** to **board pin 10**
  - **SW4** to **board pin 11**
  - **SW5** to **board pin 12**
  - **COMB** to **board pin 13**

- **Mode Slide Switch**
  - **Switch pin 1** to **board GND**
  - **Switch pin 2** to **board pin A1**

- **Power Slide Switch**
  - **Switch pin 1** to **board GND**
  - **Switch pin 2** to **board EN**

The rotary encoder has the perfect number of pins to slot into socket headers on the Feather nRF52840. The two slide switches are each soldered to the Feather nRF52840 with two pieces of wire.

![](https://cdn-learn.adafruit.com/assets/assets/000/110/702/medium800/feather_edited_P1320811.png?1649788910)

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## 3D Printing

![](https://cdn-learn.adafruit.com/assets/assets/000/110/679/medium800/feather_edited_P1320815.png?1649775886)

The controller may be housed in a 3D printed case, described below. The case consists of three parts: a mounting bracket, a top lid and a main body. All parts print with no supports.

The STL files can be downloaded directly here or from Thingiverse.

[Thingiverse download](https://www.thingiverse.com/thing:5349949)
[bleRotaryControllerSTL.zip](https://cdn-learn.adafruit.com/assets/assets/000/110/688/original/bleRotaryControllerSTL.zip?1649776674)
The rotary encoder's breakout PCB and Feather nRF52840 attach to the mounting bracket. The mounting bracket attaches to the mounting holes in the case's lid.

The lid snap fits onto the main body of the case.&nbsp;

![feather_edited_P1320823.png](https://cdn-learn.adafruit.com/assets/assets/000/110/680/medium640/feather_edited_P1320823.png?1649775920)

The main body of the case has cutouts for the two switches. There is enough room to fit a LiPo battery. Additionally, it has holes to run a chain or string through it to wear it as a pendant.

![feather_edited_P1320819.png](https://cdn-learn.adafruit.com/assets/assets/000/110/681/medium640/feather_edited_P1320819.png?1649775951)

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## CircuitPython for Feather nRF52840

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

The following instructions will show you how to install CircuitPython. If you've already installed CircuitPython but are looking to update it or reinstall it, the same steps work for that as well!

## Set up CircuitPython Quick Start!

Follow this quick step-by-step for super-fast Python power :)

[Download the latest version of CircuitPython for this board via CircuitPython.org](https://circuitpython.org/board/feather_nrf52840_express/)
 **Click the link above to download the latest UF2 file.**

&nbsp;

Download and save it to your desktop (or wherever is handy).

![circuitpython_nRF52840_UF2.png](https://cdn-learn.adafruit.com/assets/assets/000/070/318/medium640/circuitpython_nRF52840_UF2.png?1548963877)

Plug your Feather nRF52840 into your computer using a known-good USB cable.

**A lot of people end up using charge-only USB cables and it is very frustrating! So make sure you have a USB cable you know is good for data sync.**

Double-click the **Reset** button next to the USB connector on your board, and you will see the NeoPixel RGB LED turn green (identified by the arrow in the image). If it turns red, check the USB cable, try another USB port, etc. **Note:** The little red LED next to the USB connector will pulse red. That's ok!

If double-clicking doesn't work the first time, try again. Sometimes it can take a few tries to get the rhythm right!

![circuitpython_FeathernRF52840_Top_Product_Image.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/319/medium640/circuitpython_FeathernRF52840_Top_Product_Image.jpg?1548963972)

You will see a new disk drive appear called **FTHR840BOOT**.

&nbsp;

&nbsp;

&nbsp;

Drag the **adafruit\_circuitpython\_etc.uf2** file to **FTHR840BOOT****.**

![circuitpython_FTHR840BOOT.png](https://cdn-learn.adafruit.com/assets/assets/000/070/320/medium640/circuitpython_FTHR840BOOT.png?1548964488)

![circuitpython_Drag_nRF52840_UF2.png](https://cdn-learn.adafruit.com/assets/assets/000/070/321/medium640/circuitpython_Drag_nRF52840_UF2.png?1548964497)

The LED will flash. Then, the&nbsp; **FTHR840BOOT** drive will disappear and a new disk drive called **CIRCUITPY** will appear.

&nbsp;

That's it, you're done! :)

![circuitpython_nRF52840_CIRCUITPY.png](https://cdn-learn.adafruit.com/assets/assets/000/070/322/medium640/circuitpython_nRF52840_CIRCUITPY.png?1548964511)

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## Coding the Wireless BLE Encoder Remote

Once you've finished setting up your Feather nRF52840 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/BLE_ANO_Rotary_Encoder_Remote/code.py

## Upload the Code and Libraries to the Feather nRF52840

After downloading the Project Bundle, plug your Feather nRF52840 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&nbsp; **CIRCUITPY**. Unzip the folder and copy the following items to the Feather nRF52840's&nbsp; **CIRCUITPY** &nbsp;drive.&nbsp;

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

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

![cp](https://adafruit.github.io/Adafruit_Learning_System_Guides/BLE_ANO_Rotary_Encoder_Remote.png)

## How the CircuitPython Code Works
The rotary encoder's five buttons are setup as inputs using the `Button` class of the `adafruit_debouncer` library. The `adafruit_debouncer` library is being used so that the `long_press` property can be used in the loop.

```python
#  encoder button pins
enc_buttons = (
    CENTER,
    UP,
    LEFT,
    DOWN,
    RIGHT,
)

#  array for the encoder buttons
inputs = []

#  setting the encoder buttons as inputs
for enc in enc_buttons:
    enc_button = DigitalInOut(enc)
    enc_button.pull = Pull.UP
	#  adding to the inputs array with the Button Class of the Debouncer lib
    inputs.append(Button(enc_button))
```

### Keycodes

There are two sets of keycodes depending on the mode of the remote. The keycodes in `CHILL_CODES` are for streaming media, such as Netflix or YouTube. The keycodes in `DOOM_CODES` are for playing classic Doom. The keycode indexes align with the encoder buttons array's indexes. For example, the `CENTER` button will send the `SPACE` or `CONTROL` keycode, depending on the mode.

```python
#  streaming mode keycodes
CHILL_CODES = (
    Keycode.SPACE,
    Keycode.F,
    Keycode.LEFT_ARROW,
    Keycode.M,
    Keycode.RIGHT_ARROW,
)

#  doom mode keycodes
DOOM_CODES = (
    Keycode.CONTROL,
    Keycode.UP_ARROW,
    Keycode.LEFT_ARROW,
    Keycode.DOWN_ARROW,
    Keycode.RIGHT_ARROW,
)
```

### The Loop

Once a BLE connection has been established, the loop checks the value of `SWITCH` to determine the mode of the controller.

```python
while ble.connected:
		#  mode switch
		#  selects whether to be in streaming mode or doom mode
		#  affects the keycodes assigned to the encoder's inputs
        if not SWITCH.value:
            chill = False
            doom = True
        if SWITCH.value:
            chill = True
            doom = False
```

### Encoder Position

The encoder also sends a keycode depending on the mode. The loop checks to see if the encoder is turning to the left or right. Depending on the direction, a keycode will be sent.&nbsp;

In streaming mode, the encoder controls volume. In Doom, it controls left and right strafe.

```python
#  rotary encoder position tracking
        position = encoder.position
		#  if the encoder is turned to the right
        if position > last_position:
			#  if in streaming mode
            if chill:
				#  send UP arrow for volume
                kbd.send(Keycode.UP_ARROW)
			#  if in doom mode
            if doom:
				#  send period for right strafe
                kbd.send(Keycode.PERIOD)
			#  reset encoder position
            last_position = position
		#  if the encoder is turned to the left
        if position < last_position:
            #  if in streaming mode
            if chill:
				#  send DOWN arrow for volume
                kbd.send(Keycode.DOWN_ARROW)
			#  if in doom mode
            if doom:
				#  send comma for left strafe
                kbd.send(Keycode.COMMA)
			#  reset encoder position
            last_position = position
```

### Sending Keycodes

The `adafruit_debouncer` library checks the status of the button inputs using `update()`. A `for` statement is used to iterate through all five buttons. If the center button receives a `long_press`, then the `SPACE` keycode is sent. This is used in Doom for the use/open control.

Otherwise, the `for` statement checks to see if a button has been `pressed` or `released`. If a button is `pressed`, then the corresponding keycode is pressed depending on the mode. If a button is `released`, then the corresponding keycode is released depending on the mode.

```python
#  for loop for keycodes
        for i in range(5):
			#  update state of the buttons
            inputs[i].update()
			#  if you press the center button for a long press
            if inputs[0].long_press:
				#  sends space key
				#  used in Doom for use/open
                kbd.send(Keycode.SPACE)
			#  if a press is detected...
            if inputs[i].pressed:
				#  if in streaming mode
                if chill:
					#  send the streaming keycodes
                    kbd.press(CHILL_CODES[i])
				#  if in doom mode
                if doom:
					#  send the doom keycodes
                    kbd.press(DOOM_CODES[i])
			#  if a button is released...
            if inputs[i].released:
				#  if in streaming mode
                if chill:
					#  release the streaming keycodes
                    kbd.release(CHILL_CODES[i])
				#  if in doom mode
                if doom:
					#  release the doom keycodes
                    kbd.release(DOOM_CODES[i])
```

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## Wiring

![](https://cdn-learn.adafruit.com/assets/assets/000/110/657/medium800/feather_edited_P1320759.png?1649702912)

## Rotary Encoder and Breakout Board
Soldering the rotary encoder to the breakout PCB. Then, solder nine pin headers to the breakout PCB's pins.

![feather_edited_P1320761.png](https://cdn-learn.adafruit.com/assets/assets/000/110/656/medium640/feather_edited_P1320761.png?1649702823)

## Feather Socket Headers
Trim a row of socket headers to nine sockets. These will be used to plug the rotary encoder into the Feather nRF52840.

![feather_edited_P1320764.png](https://cdn-learn.adafruit.com/assets/assets/000/110/658/medium640/feather_edited_P1320764.png?1649702960)

![feather_edited_P1320768.png](https://cdn-learn.adafruit.com/assets/assets/000/110/659/medium640/feather_edited_P1320768.png?1649703046)

![feather_edited_P1320769.png](https://cdn-learn.adafruit.com/assets/assets/000/110/660/medium640/feather_edited_P1320769.png?1649703080)

Solder the trimmed socket header to the Feather nRF52840, beginning with pin **13**. Pins **Bat** , **EN** and **USB** should remain unsoldered. After soldering, the rotary encoder's breakout can plug directly into the Feather.

![feather_edited_P1320771.png](https://cdn-learn.adafruit.com/assets/assets/000/110/661/medium640/feather_edited_P1320771.png?1649703177)

![feather_edited_P1320776.png](https://cdn-learn.adafruit.com/assets/assets/000/110/662/medium640/feather_edited_P1320776.png?1649703216)

![feather_edited_P1320777.png](https://cdn-learn.adafruit.com/assets/assets/000/110/663/medium640/feather_edited_P1320777.png?1649703247)

## Wire Connections
Cut and strip four pieces of wire. Use three different colors to differentiate the connections.

- Two pieces in color 1 (black): **GND** connections
- One in piece in color 2 (blue): pin **A1**
- One piece in color 3 (yellow): pin **EN**

![feather_edited_P1320780.png](https://cdn-learn.adafruit.com/assets/assets/000/110/664/medium640/feather_edited_P1320780.png?1649703407)

Twist two pieces of wire together for the **GND** connection. Solder the wires into the **GND** pin on the Feather nRF52840.

![feather_edited_P1320785.png](https://cdn-learn.adafruit.com/assets/assets/000/110/665/medium640/feather_edited_P1320785.png?1649703448)

![feather_edited_P1320786.png](https://cdn-learn.adafruit.com/assets/assets/000/110/666/medium640/feather_edited_P1320786.png?1649703516)

![feather_edited_P1320787.png](https://cdn-learn.adafruit.com/assets/assets/000/110/667/medium640/feather_edited_P1320787.png?1649703552)

Solder the blue wire to pin **A1**. This will be the input for the mode switch.

Solder the yellow wire to pin **EN**. This will be the on/off switch connection.

![feather_edited_P1320790.png](https://cdn-learn.adafruit.com/assets/assets/000/110/668/medium640/feather_edited_P1320790.png?1649703604)

Tin the ends of each piece of wire with solder.

![feather_edited_P1320792.png](https://cdn-learn.adafruit.com/assets/assets/000/110/669/medium640/feather_edited_P1320792.png?1649703850)

Cut four pieces of heat shrink. Place one piece onto each wire.

![feather_edited_P1320794.png](https://cdn-learn.adafruit.com/assets/assets/000/110/670/medium640/feather_edited_P1320794.png?1649703904)

![feather_edited_P1320798.png](https://cdn-learn.adafruit.com/assets/assets/000/110/671/medium640/feather_edited_P1320798.png?1649703935)

## Switches
Solder a **GND** wire to pin 1 on the on/off switch. Solder the yellow wire to the center pin on the on/off switch. The on/off switch should be connected to pin **EN**.

![feather_edited_P1320799.png](https://cdn-learn.adafruit.com/assets/assets/000/110/672/medium640/feather_edited_P1320799.png?1649704003)

Solder a **GND** wire to pin 1 on the mode switch. Solder the blue wire to the center pin on the mode switch. The mode switch should be connected to pin **A1**.

![feather_edited_P1320802.png](https://cdn-learn.adafruit.com/assets/assets/000/110/673/medium640/feather_edited_P1320802.png?1649704083)

Apply the heat shrink to the switches' pins to prevent any shorts.

![feather_edited_P1320807.png](https://cdn-learn.adafruit.com/assets/assets/000/110/674/medium640/feather_edited_P1320807.png?1649704182)

That completes the soldering for this project!

![](https://cdn-learn.adafruit.com/assets/assets/000/110/675/medium800/feather_edited_P1320811.png?1649704236)

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## Assembly

![](https://cdn-learn.adafruit.com/assets/assets/000/110/687/medium800/feather_edited_P1320824.png?1649776398)

## Mounting Bracket
Attach three M2.5 stand-offs with M2.5 nuts in three of the Feather nRF52840's mounting holes. The mounting hole at the back of the board next to the headers should remain empty.

![feather_edited_P1320825.png](https://cdn-learn.adafruit.com/assets/assets/000/110/682/medium640/feather_edited_P1320825.png?1649776024)

Attach the Feather nRF52840 to the mounting bracket using three M2.5 screws.

![feather_edited_P1320830.png](https://cdn-learn.adafruit.com/assets/assets/000/110/683/medium640/feather_edited_P1320830.png?1649776106)

Plug the rotary encoder into the Feather nRF52840's headers. The rotary encoder breakout board's mounting holes should line-up with the mounting bracket's mounting holes.

![feather_edited_P1320831.png](https://cdn-learn.adafruit.com/assets/assets/000/110/684/medium640/feather_edited_P1320831.png?1649776165)

## Case Lid
Attach the case's lid to the mounting bracket with four M2.5 screws. The screws will go through the mounting holes on the lid, rotary encoder breakout board and the mounting bracket.

![feather_edited_P1320833.png](https://cdn-learn.adafruit.com/assets/assets/000/110/685/medium640/feather_edited_P1320833.png?1649776275)

Secure the lid to the mounting bracket with four M2.5 nuts.

![feather_edited_P1320834.png](https://cdn-learn.adafruit.com/assets/assets/000/110/686/medium640/feather_edited_P1320834.png?1649776360)

## Case Body
Plug a LiPo battery into the Feather nRF52840.

![feather_edited_P1320838.png](https://cdn-learn.adafruit.com/assets/assets/000/110/703/medium640/feather_edited_P1320838.png?1649788991)

Insert the mode switch into the cut-out on the side of the case.

![feather_edited_P1320839.png](https://cdn-learn.adafruit.com/assets/assets/000/110/704/medium640/feather_edited_P1320839.png?1649789062)

![feather_edited_P1320844.png](https://cdn-learn.adafruit.com/assets/assets/000/110/705/medium640/feather_edited_P1320844.png?1649789115)

Insert the on/off switch into the cut-out on the bottom of the case.

![feather_edited_P1320841.png](https://cdn-learn.adafruit.com/assets/assets/000/110/706/medium640/feather_edited_P1320841.png?1649789185)

![feather_edited_P1320843.png](https://cdn-learn.adafruit.com/assets/assets/000/110/707/medium640/feather_edited_P1320843.png?1649789214)

Close the case with the lid and you're ready to use your new BLE remote!

![feather_edited_P1320846.png](https://cdn-learn.adafruit.com/assets/assets/000/110/708/medium640/feather_edited_P1320846.png?1649789301)

# Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote

## Usage

![](https://cdn-learn.adafruit.com/assets/assets/000/110/715/medium800thumb/feather_streamDemo.jpg?1649791382)

After powering up the remote and connecting it to your computer via BLE, open your favorite streaming app (Netflix, YouTube, etc). You'll be able to control the following parameters:

- Full screen: Up Button
- Skip ahead: Right Button
- Rewind: Left Button
- Mute audio: Down Button
- Increase volume: Scroll forward
- Decrease volume: Scroll backward
- Play/pause: Center button

To switch to Doom mode, flip the switch on the side of the controller. You can access [classic Doom on the Internet Archive](https://archive.org/details/msdos_DOOM_1993).

![feather_switchMode.gif](https://cdn-learn.adafruit.com/assets/assets/000/110/716/medium640thumb/feather_switchMode.jpg?1649791848)

![](https://cdn-learn.adafruit.com/assets/assets/000/110/721/medium800thumb/feather_doomDemo.jpg?1649791505)

In Doom mode, you'll be able to control the following parameters:

- Move forward: Up button
- Move right: Right button
- Move left: Left button
- Move backward: Down button
- Strafe right: Scroll forward
- Strafe left: Scroll background
- Fire: Center button (short press)
- Use/open: Center button (long press)

## Going Further
![](https://cdn-learn.adafruit.com/assets/assets/000/110/709/medium800/feather_edited_P1320848.png?1649789374)

You can switch modes as often as you like. You could also change the keyboard shortcuts in the CircuitPython code for other apps or games.&nbsp;

If you'd like to test the keyboard inputs, you can use this [keyboard event viewer](https://w3c.github.io/uievents/tools/key-event-viewer.html) in your browser.


## Featured Products

### Adafruit Feather nRF52840 Express

[Adafruit Feather nRF52840 Express](https://www.adafruit.com/product/4062)
The **Adafruit Feather nRF52840 Express** is the new Feather family member with Bluetooth® Low Energy and _native USB support_ featuring the nRF52840!&nbsp; It's our take on an 'all-in-one' Arduino-compatible + Bluetooth® Low Energy with built-in USB...

In Stock
[Buy Now](https://www.adafruit.com/product/4062)
[Related Guides to the Product](https://learn.adafruit.com/products/4062/guides)
### ANO Directional Navigation and Scroll Wheel Rotary Encoder

[ANO Directional Navigation and Scroll Wheel Rotary Encoder](https://www.adafruit.com/product/5001)
This funky user interface element is reminiscent of the [original clicking scroll wheel interface on the first iPods](https://gizmodo.com/a-visual-history-of-the-ipod-click-wheel-r-i-p-1632640054). It's a fancy mechanical kit but has an intuitiveness that is hard to argue with -...

In Stock
[Buy Now](https://www.adafruit.com/product/5001)
[Related Guides to the Product](https://learn.adafruit.com/products/5001/guides)
### Adafruit ANO Rotary Navigation Encoder Breakout PCB

[Adafruit ANO Rotary Navigation Encoder Breakout PCB](https://www.adafruit.com/product/5221)
The ANO rotary encoder wheel is a funky user interface element is reminiscent of the [original clicking scroll wheel interface on the first iPods](https://gizmodo.com/a-visual-history-of-the-ipod-click-wheel-r-i-p-1632640054). It's a nifty kit, but the pin-out is a little...

In Stock
[Buy Now](https://www.adafruit.com/product/5221)
[Related Guides to the Product](https://learn.adafruit.com/products/5221/guides)
### Breadboard-friendly SPDT Slide Switch

[Breadboard-friendly SPDT Slide Switch](https://www.adafruit.com/product/805)
These nice switches are perfect for use with breadboard and perfboard projects. They have 0.1" spacing and snap in nicely into a solderless breadboard. They're easy to switch no matter what size fingers you have, but not so easy that they'll get flipped by accident. Work great as...

In Stock
[Buy Now](https://www.adafruit.com/product/805)
[Related Guides to the Product](https://learn.adafruit.com/products/805/guides)
### Lithium Ion Polymer Battery Ideal For Feathers - 3.7V 400mAh

[Lithium Ion Polymer Battery Ideal For Feathers - 3.7V 400mAh](https://www.adafruit.com/product/3898)
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This battery has a capacity of **400mAh** for a total of about 1.9 Wh. If you need a larger (or smaller!)...

In Stock
[Buy Now](https://www.adafruit.com/product/3898)
[Related Guides to the Product](https://learn.adafruit.com/products/3898/guides)
### Header Kit for Feather - 12-pin and 16-pin Female Header Set

[Header Kit for Feather - 12-pin and 16-pin Female Header Set](https://www.adafruit.com/product/2886)
These two&nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[Feather](https://www.adafruit.com/categories/777)&nbsp;boards and you're in business!

What do they do? They get soldered on either side of the Feather...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2886)
[Related Guides to the Product](https://learn.adafruit.com/products/2886/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)
### Silicone Cover Stranded-Core Wire - 30AWG in Various Colors

[Silicone Cover Stranded-Core Wire - 30AWG in Various Colors](https://www.adafruit.com/product/2051)
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire for being extremely supple and flexible, so it is great for wearables or projects where the wire-harness has to...

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

## Related Guides

- [Introducing the Adafruit nRF52840 Feather](https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather.md)
- [ANO Directional Navigation and Scroll Wheel Rotary Encoder and Breakout](https://learn.adafruit.com/ano-rotary-encoder.md)
- [CircuitPython OLED Watch Clock](https://learn.adafruit.com/circuitpython-oled-watch.md)
- [Personal and Portable ESP32-S2 Web Server](https://learn.adafruit.com/wordle-personal-esp32-s2-web-server.md)
- [Kitty Toe Bean Keypad with Color TFT](https://learn.adafruit.com/kitty-toe-bean-paw-keypad-color-tct.md)
- [Feather Scorpio Snap Fit Case](https://learn.adafruit.com/feather-scorpio-snap-fit-case.md)
- [Compost Friend!](https://learn.adafruit.com/compost-optimization-machine.md)
- [Magic Band Reader](https://learn.adafruit.com/magic-band-reader.md)
- [NeoPixel Badge Lanyard with Bluetooth LE](https://learn.adafruit.com/bluetooth-neopixel-badge-lanyard.md)
- [reef-pi Guide 4: Water Level Controller](https://learn.adafruit.com/reef-pi-water-level-controller.md)
- [3D Printed Frame for Adafruit IS31FL3741 LED Glasses](https://learn.adafruit.com/3d-printed-frame-for-led-glasses-is31fl3741.md)
- [Raspberry Pi Zero Stand](https://learn.adafruit.com/raspberry-pi-zero-stand.md)
- [Computer Space Mini Arcade](https://learn.adafruit.com/computer-space-mini-arcade.md)
- [Bluetooth Restroom Key Proximity Tracker](https://learn.adafruit.com/bluetooth-restroom-key-proximity-tracker.md)
- [NeoTrellis Feather Case Assembly](https://learn.adafruit.com/neotrellis-feather-case-assembly.md)
- [Adafruit Swirly Aluminum Mounting Grid for 0.1" Spaced PCBs](https://learn.adafruit.com/swirly-grid.md)
- [Metro Minimalist Clock](https://learn.adafruit.com/metro-minimalist-clock.md)
