# Stained Glass Lamp

## Overview

https://youtu.be/pmcELECJo5E

![](https://cdn-learn.adafruit.com/assets/assets/000/142/410/medium800thumb/light_tap-loop.jpg?1771267785 )

Build a stained glass inspired lamp with tap and Bluetooth controls.

Use translucent filament to give the shades a stained glass effect.

This project features light meter mode, audio reactivity and colors and animations.&nbsp;

Tap detect is used to cycle through color modes, or use the Adafruit Bluefruit Connect app to adjust the brightness.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/385/medium640/light_complete.jpg?1771264349)

The Circuit Playground Bluefruit has many built-in sensors including light, temperature, accelerometer and microphone.&nbsp;

In light meter mode, as the light levels decrease, the lamp brightness to a red color. When light levels rise, the lamp switches to daylight colors.

The PDM microphone is used for the audio reaction mode to display sound levels.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/441/medium800/light_watch-palette.jpg?1771271567 )

## Parts
Featured
### Circuit Playground Bluefruit - Bluetooth® Low Energy

[Circuit Playground Bluefruit - Bluetooth® Low Energy](https://www.adafruit.com/product/4333)
 **Circuit Playground Bluefruit** is our third board in the Circuit Playground series, another step towards a perfect introduction to electronics and programming. We've taken the popular Circuit Playground Express and made it even better! Now the main chip is an nRF52840...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4333)
[Related Guides to the Product](https://learn.adafruit.com/products/4333/guides)
![shot of a Black woman's neon-green manicured hand holding up a Circuit Playground Bluefruit glowing rainbow LEDs.](https://cdn-shop.adafruit.com/640x480/4333-11.jpg)

Featured
### Right Angle USB cable - A/MicroB

[Right Angle USB cable - A/MicroB](https://www.adafruit.com/product/1318)
This here is your standard A to micro-B USB cable, for USB 1.1 or 2.0, but with a twist! Literally! Instead of the cable coming straight out from the connector, there's a right angle bend. We thought this might make a good pair for a Raspberry Pi **Model A or B** as the cable...

Out of Stock
[Buy Now](https://www.adafruit.com/product/1318)
[Related Guides to the Product](https://learn.adafruit.com/products/1318/guides)
![USB cable with Type A and Right Angle Micro B end](https://cdn-shop.adafruit.com/640x480/1318-05.jpg)

Featured
### 5V 2A Switching Power Supply w/ USB-A Connector

[5V 2A Switching Power Supply w/ USB-A Connector](https://www.adafruit.com/product/1994)
Our 5V 2A USB power adapter is the perfect choice for powering single-board computers like Raspberry Pi, BeagleBone, or anything else that's power-hungry!

This adapter was specifically designed to provide 5.25V, not 5V, but we still call it a 5V USB adapter. We did this on purpose to...

In Stock
[Buy Now](https://www.adafruit.com/product/1994)
[Related Guides to the Product](https://learn.adafruit.com/products/1994/guides)
![5V 2A Switching Power Supply with  USB-A Connector](https://cdn-shop.adafruit.com/640x480/1994-01.jpg)

### Part: M3X6mm Screws
quantity: 7
M3X6mm Screws

### Part: M3 nuts
quantity: 3
M3 nuts

### Part: M3x5mm screws
quantity: 1
M3x5mm screws

### Part: M2x6mm screws
quantity: 8
M2x6mm screws

# Stained Glass Lamp

## 3D Parts

## 3D Printed Parts

3MF files for 3D printing are oriented and ready to print on FDM machines using PLA filament. Original design source files may be downloaded using the links below.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/372/medium640/light_parts-3d-1.jpg?1771262649)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/373/medium640/light_parts-3d-2.jpg?1771262714)

[stained-lamp.3mf](https://cdn-learn.adafruit.com/assets/assets/000/142/505/original/stained-lamp.3mf?1771600485)
[CPB Stained Lamp Design](https://a360.co/4anWVo4)
Info: The dropdown on the Fusion 360 site allows you to pick your preferred 3D file format like STEP, STL, etc.

### Slice with settings for PLA material

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

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

![](https://cdn-learn.adafruit.com/assets/assets/000/142/378/medium640/light_slice2.jpg?1771263604)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/379/medium640/light_slice1.jpg?1771263621)

## Design Source Files

The project assembly was designed in Fusion 360. Once opened in Fusion 360, It can be exported in different formats like STEP, STL and more.

Electronic components like Adafruit's boards, displays, connectors and more can be downloaded from the&nbsp;[Adafruit CAD parts GitHub Repo](https://github.com/adafruit/Adafruit_CAD_Parts/)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/374/medium640/light_cad.jpg?1771263238)

# Stained Glass Lamp

## CircuitPython on Circuit Playground Bluefruit

# Install or Update CircuitPython

Follow this quick step-by-step to install or update CircuitPython on your Circuit Playground Bluefruit.

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

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

![adafruit_products_CPB_Download_UF2.png](https://cdn-learn.adafruit.com/assets/assets/000/080/530/medium640/adafruit_products_CPB_Download_UF2.png?1567715178)

Plug your Circuit Playground Bluefruit into your computer using a known-good data-capable 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 small **Reset** button in the middle of the CPB (indicated by the red arrow in the image). The ten NeoPixel LEDs will all turn red, and then will all turn green. If they turn all red and stay red, check the USB cable, try another USB port, etc. The little red LED next to the USB connector will pulse red - this is ok!

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

(If double-clicking doesn't do it, try a single-click!)

![adafruit_products_CPB_Front_Reset_Button_Arrow.jpg](https://cdn-learn.adafruit.com/assets/assets/000/080/532/medium640/adafruit_products_CPB_Front_Reset_Button_Arrow.jpg?1567715535)

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

&nbsp;

&nbsp;

&nbsp;

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

![adafruit_products_CPB_CPLAYBTBOOT.png](https://cdn-learn.adafruit.com/assets/assets/000/080/533/medium640/adafruit_products_CPB_CPLAYBTBOOT.png?1567715858)

![adafruit_products_CBP_drag_UF2.png](https://cdn-learn.adafruit.com/assets/assets/000/080/534/medium640/adafruit_products_CBP_drag_UF2.png?1567715871)

The LEDs will turn red. Then, the **CPLAYBTBOOT** drive will disappear and a new disk drive called **CIRCUITPY** will appear.

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

![adafruit_products_CBP_CIRCUITPY.png](https://cdn-learn.adafruit.com/assets/assets/000/080/535/medium640/adafruit_products_CBP_CIRCUITPY.png?1567716034)

# Stained Glass Lamp

## Code

## Code the Lamp

Once you've finished setting up your Circuit Playground Bluefruit 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://cdn-learn.adafruit.com/assets/assets/000/142/411/medium640/light_cp-hero.jpg?1771268267)

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

## Upload the Code and Libraries

After downloading the Project Bundle, plug your Circuit Playground Bluefruit 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 Circuit Playground Bluefruit's&nbsp; **CIRCUITPY** drive.

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

Your Circuit Playground Bluefruit **CIRCUITPY** drive should look like this after copying the **lib** folder&nbsp;and **code.py** file:

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

## How the CircuitPython Code Works

At the top of the code, the NeoPixels and colors are set up for the Circuit Playground Bluefruit's 10 onboard NeoPixels.

```python
# setup pixels
pixels = neopixel.NeoPixel(board.NEOPIXEL, 10, brightness=1, auto_write=True)

# name colors so you don't need to refer to numbers
RED = (255, 0, 0)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
PURPLE = (100, 0, 255)
BLUE = (0, 0, 255)
```

You can edit the RGB color values to change the breathing color options. Each value ranges from `0` to `255`. For example, to add an orange option, you could change `RED` to `(255, 100, 0)` or add a new color variable and include it in the `COLOR_LIST`later in the code.

### Rainbow Palette

A six-color rainbow palette is defined using `adafruit_fancyled`. These colors cycle smoothly across the NeoPixels when rainbow mode is active.

```python
PALETTE_RAINBOW = [fancy.CRGB(1.0, 0.0, 0.0), # Red
           fancy.CRGB(0.5, 0.5, 0.0), # Yellow
           fancy.CRGB(0.0, 1.0, 0.0), # Green
           fancy.CRGB(0.0, 0.5, 0.5), # Cyan
           fancy.CRGB(0.0, 0.0, 1.0), # Blue
           fancy.CRGB(0.5, 0.0, 0.5)] # Magenta
```

You can edit these `CRGB` values (which use `0.0` to `1.0` instead of `0` to `255`) to change the palette colors, or add more entries to create a smoother or wider gradient.

### Rainbow Animation Speed

The `update_palette()` function advances the rainbow animation one frame at a time. The `offset` variable controls how fast the colors scroll across the LEDs, and the `brightness` controls the palette intensity.

```python
def update_palette():
    """Advance one frame of the active palette animation."""
    global offset
    if active_palette is None:
        return
    for i in range(NUM_LEDS):
        color = fancy.palette_lookup(active_palette, offset + i / NUM_LEDS)
        color = fancy.gamma_adjust(color, brightness=0.25)
        pixels[i] = color.pack()
    pixels.show()
    offset += 0.05
```

You can adjust the animation speed and brightness:

- `offset += 0.05` — Controls how fast the rainbow scrolls. Increase to `0.1` for faster animation, decrease to `0.02` for slower.
- `brightness=0.25` — Controls the overall brightness of the rainbow palette. Increase up to `1.0` for brighter colors or decrease for dimmer.

### Color Breathing Speed

When a solid color mode is active (Purple, Green, Red or Blue), the LEDs gently pulse using a sine wave. The `update_breathing()` function controls this effect.

```python
def update_breathing():
    """Slowly breathe the active solid color between brightness 0.2 and 0.5."""
    if active_color is None:
        return
    # Sine wave oscillates 0-1, scale to 0.2-0.5 range
    brightness = 0.35 + 0.15 * math.sin(time.monotonic() * 1.5)
    r = int(active_color[0] * brightness)
    g = int(active_color[1] * brightness)
    b = int(active_color[2] * brightness)
    pixels.fill((r, g, b))
```

You can adjust the breathing effect:

- `time.monotonic() * 1.5` — The `1.5` multiplier controls the breathing speed. Increase to `3.0` for faster pulsing, decrease to `0.5` for very slow breathing.
- `0.35` — The center brightness of the breathing range. Increase for a brighter baseline.
- `0.15` — How far above and below the center the brightness oscillates. Increase for more dramatic pulsing, decrease for a subtler effect. The brightness will range from `0.35 - 0.15` (0.2) to `0.35 + 0.15` (0.5).

### Audio Reactive VU Meter

The VU meter uses the onboard PDM microphone to light up the NeoPixels based on sound level. First, the microphone and audio processing are set up.

```python
mic = audiobusio.PDMIn(
    board.MICROPHONE_CLOCK, board.MICROPHONE_DATA,
    sample_rate=16000, bit_depth=16)
samples = array.array('H', [0] * 320)

CURVE = 2
SCALE_EXPONENT = math.pow(10, CURVE * -0.1)
```

The `CURVE` variable controls the logarithmic scaling of the audio input. A higher value makes the meter less sensitive to quiet sounds and more responsive to loud ones. A lower value makes the response more linear.

The VU meter colors are mapped to the 10 NeoPixels, with green on the left, yellow in the middle, and red on the right — like a classic audio level meter.

```python
VU_GREEN = (0, 127, 0)
VU_YELLOW = (127, 127, 0)
VU_RED = (127, 0, 0)
VU_OFF = (0, 0, 0)
vu_colors = [VU_GREEN, VU_GREEN, VU_GREEN, VU_GREEN,
             VU_YELLOW, VU_YELLOW, VU_YELLOW,
             VU_RED, VU_RED, VU_RED]
```

You can edit the RGB values for `VU_GREEN`, `VU_YELLOW`, and `VU_RED` to change the meter colors. You can also rearrange the `vu_colors` list to change how many LEDs use each color.

### Audio Sensitivity

The `update_vu()` function reads the microphone and updates the LEDs. The smoothing values control how quickly the meter rises and falls.

```python
# Smooth: rise slowly, fall even slower
    if target > vu_level:
        vu_level = vu_level + (target - vu_level) * 0.4  # rise speed
    else:
        vu_level = vu_level + (target - vu_level) * 0.15  # fall speed
```

You can adjust the meter behavior:

- `0.4` — Rise speed. Increase toward `1.0` for instant response to loud sounds, decrease toward `0.1` for a sluggish rise.
- `0.15` — Fall speed. Increase for a quicker drop-off when sound stops, decrease for a slow "decay" effect that holds the level longer.

### Audio Calibration

When the code first starts and each time VU meter mode is activated, it calibrates the noise floor to the current ambient sound level. The `input_floor` is the baseline silence level and `input_ceiling` sets the top of the dynamic range.

```python
# Calibrate: record initial sample to get ambient noise floor
mic.record(samples, len(samples))
input_floor = normalized_rms(samples) + 2
input_ceiling = input_floor + .5
```

You can adjust the audio sensitivity:

- `+ 2` — The margin above the measured ambient noise before any LEDs light up. Increase to `10` or higher to ignore more background noise, decrease if you want the meter to pick up very quiet sounds.
- `+ .5` — The dynamic range between silence and full-scale (all 10 LEDs lit). This is the most important sensitivity control. Increase to `5.0` or `15.0` to require much louder sounds to fill the meter. Decrease for a more sensitive meter that reacts to quieter sounds.

### Light Sensor

The light sensor mode uses the onboard light sensor to blend all 10 LEDs between two warm colors based on ambient light.

```python
light = analogio.AnalogIn(board.LIGHT)

# Light meter warm colors
LIGHT_DIM = (52, 5, 1)
LIGHT_BRIGHT = (9, 5, 4)
```

You can edit the colors:

- `LIGHT_DIM = (52, 5, 1)` — The color shown in a dark room. This is a warm amber glow.
- `LIGHT_BRIGHT = (9, 5, 4)` — The color shown in bright light. This is a soft warm white.

### Light Sensor Sensitivity

The `update_light()` function reads the sensor and smoothly transitions between the two colors.

```python
raw = light.value
target = max(0.0, min(1.0, (raw - 1000) / 1000.0))
# Smooth: very gentle transitions
if target > light_level:
	light_level = light_level + (target - light_level) * 0.02
else:
    light_level = light_level + (target - light_level) * 0.015
```

You can adjust the light meter behavior:

- `(raw - 1000) / 1000.0` — The first `1000` is the dark threshold (sensor values below this are treated as full dark). The second `1000.0` is the range. Decrease the range to `500.0` for a meter that reaches full brightness in dimmer environments. Increase to `2000.0` to require very bright light.
- `0.02` — How fast the LEDs brighten when light increases. Increase to `0.1` for quicker response, decrease for slower.
- `0.015` — How fast the LEDs dim when light decreases. Increase for quicker dimming, decrease for a slower fade.

### Tap Detection

The onboard LIS3DH accelerometer is configured for single-tap detection, which cycles through all available modes.

```python
accelo_i2c = busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA)
accelo = adafruit_lis3dh.LIS3DH_I2C(accelo_i2c, address=0x19)
accelo.set_tap(1, 100)  # single tap, threshold 100 (medium tap)
```

You can adjust the tap sensitivity:

- The first argument `1` sets single-tap detection. Change to `2` for double-tap detection.
- The second argument `100` is the tap threshold. Decrease to `60` for more sensitive detection (lighter taps register), increase to `150` for less sensitive detection (requires harder taps).

### Mode Lists

The mode cycling lists control what each input method cycles through.

```python
COLOR_LIST = [PURPLE, GREEN, RED, BLUE, LIGHT_METER]
PALETTE_LIST = [PALETTE_RAINBOW, VU_METER]
ALL_MODES = [PURPLE, GREEN, RED, BLUE, LIGHT_METER,
             PALETTE_RAINBOW, VU_METER]
```

- `COLOR_LIST` — Cycled by **Button A** on the board. Add or remove color entries to customize.
- `PALETTE_LIST` — Cycled by **Button B** on the board.
- `ALL_MODES` — Cycled by **tapping** the board and by the **Left/Right** BLE buttons. This is the master list of every mode.

### Brightness Control

Touch pads A1 and A2 control brightness, and the step size determines how much each touch changes it.

```python
BRIGHTNESS_STEP = 0.1
```

You can change `0.1` to a smaller value like `0.05` for finer brightness adjustments, or a larger value like `0.2` for bigger jumps. Brightness is clamped between `0.05` and `1.0`.

### BLE Button Mapping

When connected via the Adafruit Bluefruit app's Control Pad, the numbered buttons and D-pad are mapped to specific modes.

```python
if packet.button == ButtonPacket.BUTTON_1: # Rainbow palette
    apply_mode(PALETTE_RAINBOW)
if packet.button == ButtonPacket.BUTTON_2: # VU Meter
    apply_mode(VU_METER)
if packet.button == ButtonPacket.BUTTON_3: # Light Meter
    apply_mode(LIGHT_METER)
if packet.button == ButtonPacket.BUTTON_4: # Light Meter
    apply_mode(LIGHT_METER)
if packet.button == ButtonPacket.UP: # Brighten
    pixels.brightness = min(1.0, pixels.brightness + BRIGHTNESS_STEP)
if packet.button == ButtonPacket.DOWN: # Dim
    pixels.brightness = max(0.05, pixels.brightness - BRIGHTNESS_STEP)
if packet.button == ButtonPacket.LEFT: # Cycle modes backward
    all_modes_index = (all_modes_index - 1) % len(ALL_MODES)
    apply_mode(ALL_MODES[all_modes_index])
if packet.button == ButtonPacket.RIGHT: # Cycle modes forward
    apply_mode(ALL_MODES[all_modes_index])
    all_modes_index = (all_modes_index + 1) % len(ALL_MODES)
```

You can remap any button to any mode by changing the `apply_mode()` call. For example, to make Button 3 activate Purple instead of Light Meter, change `apply_mode(LIGHT_METER)` to `apply_mode(PURPLE)`. The color picker in the Bluefruit app can also be used to send any custom color directly to the LEDs.

# Stained Glass Lamp

## Assembly

## Assemble lamp shade

Lay the diffuser with the channels facing up.

Align the corner of each panel to the corner of the channel.

Insert each panel at a 15 degree angle to press fit each panel into the diffuser.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/413/medium640/light_panel-insert.jpg?1771268874)

## Cable tube

Place M3 nuts into the "cable-tube" part.&nbsp;

Align the screws holes to the three matching screws mounts on the "case-btm" part.

Use M3x6mm screws to combine the parts.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/414/medium640/light_cable-tube-nuts.jpg?1771269113)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/416/medium640/light_cable-tube-fastened.jpg?1771269344)

## Mount Circuit Playground

Place the Circuit Playground with the USB port aligned to the cutout on the "case-btm" part.

Align the "Case-top" part to the microphone and light meter cutouts.

The board is mounted to the "case-btm" part with M3x6mm screws.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/418/medium640/light_board-place-cover.jpg?1771269431)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/421/medium640/light_board-fasten?1771269616)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/445/medium640/light_case-assembled.jpg?1771271705)

## Attach shade

Pre-fasten M2x6mm screws to the panels.

Align each screw to the screw mounts on the sides of the "case-btm" part.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/422/medium640/light_panel-screws.jpg?1771269696)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/423/medium640/light_panel-fasten.jpg?1771269786)

## USB Cable

Plug the USB cable into the port.

Route the cable into the cutout on the "cable-tube" part.

Pass the USB cable through cutout on the "tube-coupler".

Align the screw holes on both parts and use an M3x5mm screw to join the coupler to the "cable-tube" part.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/424/medium640/light_usb-cable-route.jpg?1771269876)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/425/medium640/light_coupler-place.jpg?1771269991)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/426/medium640/light_coupler-fasten.jpg?1771270179)

## Thread pipes and base

Twist the threads on the pipes and base together until the channels all align.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/427/medium640/light_pipe-thread.jpg?1771270262)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/428/medium640/light_pipe-base.jpg?1771270312)

## Link chain

Combine the chain links by passing them through the center cuts.

Press fit the USB cable into the pipe channel down to the base.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/435/medium640/light_chain-connect.jpg?1771271157)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/436/medium640/light_cable-channle.jpg?1771271238)

## Complete
![](https://cdn-learn.adafruit.com/assets/assets/000/142/437/medium800/light_complete.jpg?1771271311 )

# Stained Glass Lamp

## Usage

The **Bluefruit LE Connect** app provides iOS devices with a variety of tools to communicate with Bluefruit LE devices, such as the **Circuit Playground Bluefruit**! These tools cover basic communication and info reporting as well as more project specific uses such as remote button control and a NeoPixel color picker.

The iOS app is a&nbsp;[free download from Apple's App Store](https://itunes.apple.com/us/app/adafruit-bluefruit-le-connect/id830125974?mt=8 "Bluefruit LE Connect")

&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/142/463/medium640/light_adafruit_products_bleiosstore.png?1771364474)

## Connect&nbsp;

Find the Circuit Playground Bluefruit to connect.

The name should start with CIRCUITPYXXX&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/142/464/medium640/light_connect.jpg?1771364526)

## Controller and Modules&nbsp;

Tap on the controller option and then either the color picker or control pad module.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/465/medium640/light_controller.jpg?1771364625)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/466/medium640/light_mods.jpg?1771364720)

## Controller module&nbsp;

In the controller module:

The UP arrow increases the brightness of the LEDs

The DOWN arrow decreases the brightness of the LEDs

Buttons 1 is the Rainbow Animation

Button 2 is the Audio Reaction mode

Button 3 is a Purple Color

Button 4 is the Light Meter mode

![](https://cdn-learn.adafruit.com/assets/assets/000/142/467/medium640/light_control-pad.jpg?1771364818)

## Color Picker

Select a color and tap on send to set the lamp color.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/468/medium640/light_color-picker.jpg?1771365038)

## Watch app

The IOS version also incudes a companion watch app.

Once connected a Circuit Playground Bluefruit device using a iPhone or iPad, launch the watch Bluefruit app.

Select the controller option on the iPhone or iPad and then the watch will show the color picker and control pad modules.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/469/medium640/light_watch-mods.jpg?1771365132)

## Control pad

In the control pad module, swipe left or right to access the arrows or the 1-4 buttons.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/470/medium640/light_watch-control-pad-swipe.jpg?1771365330)

## Color Picker

The color picker has a nice palette of colors to select from or use the RGB method to really dial in a color!

![](https://cdn-learn.adafruit.com/assets/assets/000/142/471/medium640/light_watch-color-picker.jpg?1771365433)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/472/medium640/light_watch-color-palette.jpg?1771365537)


## Guide Products

### Circuit Playground Bluefruit - Bluetooth® Low Energy

[Circuit Playground Bluefruit - Bluetooth® Low Energy](https://www.adafruit.com/product/4333)
 **Circuit Playground Bluefruit** is our third board in the Circuit Playground series, another step towards a perfect introduction to electronics and programming. We've taken the popular Circuit Playground Express and made it even better! Now the main chip is an nRF52840...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4333)
[Related Guides to the Product](https://learn.adafruit.com/products/4333/guides)
### Right Angle USB cable - A/MicroB

[Right Angle USB cable - A/MicroB](https://www.adafruit.com/product/1318)
This here is your standard A to micro-B USB cable, for USB 1.1 or 2.0, but with a twist! Literally! Instead of the cable coming straight out from the connector, there's a right angle bend. We thought this might make a good pair for a Raspberry Pi **Model A or B** as the cable...

Out of Stock
[Buy Now](https://www.adafruit.com/product/1318)
[Related Guides to the Product](https://learn.adafruit.com/products/1318/guides)
### 5V 2A Switching Power Supply w/ USB-A Connector

[5V 2A Switching Power Supply w/ USB-A Connector](https://www.adafruit.com/product/1994)
Our 5V 2A USB power adapter is the perfect choice for powering single-board computers like Raspberry Pi, BeagleBone, or anything else that's power-hungry!

This adapter was specifically designed to provide 5.25V, not 5V, but we still call it a 5V USB adapter. We did this on purpose to...

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

## Related Guides

- [Adafruit Circuit Playground Bluefruit](https://learn.adafruit.com/adafruit-circuit-playground-bluefruit.md)
- [WiFi Jellyfish Lantern with WLED](https://learn.adafruit.com/wifi-jellyfish-lantern-with-wled.md)
- [TensorFlow Lite for Circuit Playground Bluefruit Quickstart](https://learn.adafruit.com/tensorflow-lite-for-circuit-playground-bluefruit-quickstart.md)
- [Adafruit Circuit Playground Tri-Color E-Ink Gizmo](https://learn.adafruit.com/adafruit-circuit-playground-tri-color-e-ink-gizmo.md)
- [CLUE Metal Detector in CircuitPython](https://learn.adafruit.com/clue-metal-detector-circuitpython.md)
- [Bluefruit Playground App](https://learn.adafruit.com/bluefruit-playground-app.md)
- [Pico Bootloader Retro Console](https://learn.adafruit.com/pico-bootloader-retro-console.md)
- [Easy No-Soldering Bluetooth Controlled Room Lights](https://learn.adafruit.com/easy-no-solder-bluetooth-controlled-room-lights.md)
- [Glowing Bottle Castle and Capacitive Touch Piano](https://learn.adafruit.com/glowing-bottle-castle-and-capacitive-touch-piano.md)
- [Cyberpunk Santa Eye](https://learn.adafruit.com/cyberpunk-santa-eye.md)
- [Bluefruit TFT Gizmo ANCS Notifier for iOS](https://learn.adafruit.com/ancs-gizmo.md)
- [Circuit Playground Bluetooth Cauldron](https://learn.adafruit.com/cpx-cauldron.md)
- [PyPortal NeoPixel Color Picker](https://learn.adafruit.com/pyportal-neopixel-color-picker.md)
- [MagTag Google Calendar Event Display](https://learn.adafruit.com/magtag-google-calendar-event-display.md)
- [Weather Wise Wifi Umbrella Stand](https://learn.adafruit.com/weather-wise-wifi-umbrella-stand.md)
- [No-Code Room Occupancy Status ](https://learn.adafruit.com/no-code-room-occupancy-status.md)
