# 12mm LED Pixels

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/001/021/medium800/led_pixels_title.jpg?1396768160)

RGB Pixels are digitally-controllable lights you can set to any color, or animate. Each pixel contains an RGB LED and a controller chip molded into a 'dot' of silicone, with flanges so they can be pushed into holes in thin sheet material. The dots are waterproof and rugged — they're typically used to make outdoor signs.  

![](https://cdn-learn.adafruit.com/assets/assets/000/083/629/medium800/led_pixels_738-00.jpg?1572990308)

12mm RGB pixels come in two different shapes: “bullet” (thin) and “square” (flat). Both use the same type of LED, driver chip and data protocols…the main difference is how they can be mounted: bullets fit better into narrow spaces, while squares are better suited to shallow spaces.

![](https://cdn-learn.adafruit.com/assets/assets/000/083/630/medium800/led_pixels_322-00.jpg?1572990332)

Both types use an 8mm diffused RGB LED (“12mm” refers to the size of the mounting hole for installation)&nbsp;— diffused pixels mix colors nicer. At **5 volts** , they draw a maximum of **60 milliamps** per pixel: 20 mA each for red, green and blue.  
  
The LED pixels are spaced along a strand of ribbon cable, with about **3 inches (75mm)** between pixels. If additional distance is needed you can cut the ribbon cable and solder 4 wires to extend the gap to the desired length.

![](https://cdn-learn.adafruit.com/assets/assets/000/083/631/medium800/led_pixels_738-01.jpg?1572990390)

Each pixel contains a small microchip within the silicone dot. The WS2801 LED driver chip is custom designed for this purpose. We provide an Arduino library for communicating with the pixels (explained in subsequent pages), but if you want to write your own code for other microcontrollers, they’re very easy to communicate with using an SPI-like protocol. For each pixel, one “shifts out” 24 bits of color information — the first data out corresponds to the pixel closest to the microcontroller. To write colors to 10 LEDs, you would issue 240 bits (10 \* 24). Following the data, a 500 microsecond pause will then “latch” the data and display the new LED colors.

![](https://cdn-learn.adafruit.com/assets/assets/000/083/632/medium800/led_pixels_322-02.jpg?1572990409)

# 12mm LED Pixels

## Project Ideas

These pixels could be used for stuff like…  
  
An LED coffee table (this one was “hand made” some time ago…now you could simply use a long strand of our LED pixels and skip the complicated wiring and&nbsp;driver parts):

http://www.youtube.com/watch?v=Tj1j1-dIX6k&amp;feature=player_embedded

A trippy “light bar”:http://player.vimeo.com/video/16297109

Signs and displays:http://www.youtube.com/watch?v=EkrZbBEqcjo&amp;feature=player_embedded

A ball of LEDs:http://player.vimeo.com/video/16303734

# 12mm LED Pixels

## Power

When running a lot of LEDs, it’s important to keep track of power usage.&nbsp;Individual LEDs don't get very hot or use tons of power, but they add up fast!

Each single 12mm RGB LED pixel can draw up to 60mA from a 5V supply. That means a strand of 25 can use up to 1.5 Amps. That’s a peak rate, which assumes that all the LEDs are on at full brightness. If most of the LEDs are kept dim or off (as when animating patterns), the power usage can be 1/3 this or less.

As shown in the previous wiring diagram, connect ground to both your power supply and microcontroller. Then connect the 5V line from the power supply to the red wire on the LED strand.

Info: 

We suggest a nice switching supply for driving LED pixels:

Our [5 Volt,&nbsp;2 Amp power supply](http://adafruit.com/products/276) is ideal for one strand of pixels.

![led_pixels_5v2A_LRG.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/080/medium640/led_pixels_5v2A_LRG.jpg?1396768508)

For larger projects using multiple strands of pixels, our [5 Volt&nbsp;10 Amp power supply](http://adafruit.com/products/658) is good for up to 6 strands (150 pixels total).

![led_pixels_ID658_LRG.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/081/medium640/led_pixels_ID658_LRG.jpg?1396768513)

The&nbsp;[female DC power adapter](http://adafruit.com/products/368 "Link: http://adafruit.com/products/368")&nbsp;mates with either of the above power supplies. Screw terminals clamp down on the power leads at the end of an LED&nbsp;strand, so there’s&nbsp;no soldering required.  
  
Note the embossed polarity markings. Connect the **red wire** to the **+** terminal and the **blue wire** to the **-** terminal.  
  
Pixel strands have these power wires at _both_ ends. You can use _either_ side. But don’t leave the wires exposed at the opposite end! Insulate them with heat shrink or tape, or trim the exposed wire flush with the insulation.

![led_pixels_dc-jack.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/082/medium640/led_pixels_dc-jack.jpg?1396768520)

# Tips for powering pixel strands:

- When linking multiple strands together, power should be split and&nbsp;applied to _each_ strand. If you try to power too many LEDs from just one end of the strand, they’ll start to “brown out” the further they are from the power supply.
- Strands can be powered from _either_ end — “input” and “output” doesn’t apply to power, only the data signals from the microcontroller.
- If the 10 Amp power supply isn’t large enough for your project, a [slightly modified ATX computer power supply](http://www.instructables.com/pages/search/search.jsp?ie=ISO-8859-1&q=ATX) can provide 30 Amps to power upwards of 500 pixels!
- Generally speaking, you should not try to&nbsp;power an LED strand from the Arduino’s 5V line. This is okay if just a few pixels are lit, but is not adequate for driving a full strand.  
- For a standalone application (not USB connected to a computer), you can power the Arduino from the same regulated 5V supply as the LEDs — connect to the 5V pin on the Arduino,&nbsp;_not_&nbsp;Vin, and don’t use the DC jack on the Arduino.
- Remember to insulate or trim&nbsp;any unused, exposed power wires!

# 12mm LED Pixels

## Arduino Wiring

Danger: 

The “magic” of&nbsp;these pixels is that they're digitally controlled…even though there are only two control lines, you can have as many pixels as you’d like in a single long strand, yet each remains independently controllable.

Though it looks like the 4-conductor ribbon cable is continuous,&nbsp;_it isn't!_ The pixels have a distinct “in” and “out” side. Data from the microcontroller arrives on the input side, where it’s received by the driver chip. The output side then connects to the input of the next pixel, all the way down the line.

The way to tell input from output is different among the shape and version of the pixels you’re using:

For flat pixels, look for an embossed **arrow** on the side of the plastic capsule. This represents the **direction of&nbsp;data flow** …bits from the microcontroller should arrive at the “tail” of the arrow, _not_ the pointy head end.![led_pixels_flat-io.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/022/medium640/led_pixels_flat-io.jpg?1396768168)

For bullet pixels with a **green circuit board** inside, look for the rectangular black chip on one side of the board.&nbsp;With this chip facing you, the set of **wires in front&nbsp;are the input** — data arrives here — and the wires underneath are the output to the next pixel.

![led_pixels_bullet-io.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/023/medium640/led_pixels_bullet-io.jpg?1396768174)

For older bullet pixels with a **white circuit board** inside, look for the “ **INPUT** ” label printed on the board. With this side facing you, the set of **wires in front are the input** — data arrives here — and the wires underneath are the output to the next pixel.

![led_pixels_white-io.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/024/medium640/led_pixels_white-io.jpg?1396768177)

Our LED pixels now include plugs&nbsp;for joining multiple strands and to simplify connection to a microcontroller:

Your pixels will have one end with a plug - these tend to be the input side on **bullet** shaped pixels but we've found that isn't true 100% of the time so don't rely on this as a way of determine which end is the input

![led_pixels_bullet-conn.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/051/medium640/led_pixels_bullet-conn.jpg?1396768306)

Your pixels will have one end with a receptacle - these tend to be the input side on **flat** shaped pixels but we've found that isn't true 100% of the time so don't rely on this as a way of determine which end is the input

![led_pixels_square-conn.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/052/medium640/led_pixels_square-conn.jpg?1396768311)

Mating connectors for both are available in the Adafruit shop. These have a housing at one end and four tinned wires at the opposite end…the wires can be soldered directly to your circuit, or strip a little more insulation to press these into Arduino pin sockets.  
  
Luckily,[we have them as a pair](http://adafruit.com/products/578) so no matter what pixels you end up with, you'll have one for input and one for output

![led_pixels_plugs.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/053/medium640/led_pixels_plugs.jpg?1396768315)

There’s one more trick up our sleeve: if you don’t have a mating connector available, breadboarding jumper wires can be pressed into the connector - here we're **assuming that is the input side!**

![led_pixels_jam-wires.jpg](https://cdn-learn.adafruit.com/assets/assets/000/001/054/medium640/led_pixels_jam-wires.jpg?1396768323)

The extra red and blue wires (the exposed ones not inside a connector) are for power — we’ll explain that in the next section.

# Connecting to Arduino
To use our&nbsp;example code for Arduino, connect the **yellow** wire (serial data) to Arduino **pin 2** and the&nbsp; **green** wire (serial clock) to **pin 3**.&nbsp;The software can be configured to use other pins, but we recommend using this arrangement when starting out, so that everything is tested in a known configuration.&nbsp;The **blue** wire (ground) should be connected to any of the Arduino **GND** pins.  
### 

This is intentional, to avoid wiring mishaps. Although the two pixel types&nbsp;have the same electrical specifications and use the same data protocol, the order of the wires is different between the two. Joining them directly would mix signal and power wires improperly, potentially damaging the pixels.

- **Microcontroller GND&nbsp;** to **&nbsp;Blue Ground line**  
- **Microcontroller D3&nbsp;** to **Green Serial Clock line**
- **Microcontroller D2&nbsp;** to **Yellow Serial Data line**
- **5V Regulated Supply +5V** to **Red +5V Line**
- **5V Regulated Supply Ground** to **Blue Ground line**

![led_pixels_arduino-wiring_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/083/414/medium640/led_pixels_arduino-wiring_bb.jpg?1572655010)

[Download Fritzing Diagram](https://cdn-learn.adafruit.com/assets/assets/000/083/416/original/arduino-wiring.fzz?1572655029)
# 12mm LED Pixels

## Arduino Code

# Install Arduino Libraries

We have example code ready to go for use with the LEDs. It's written for Arduino, which should be portable to any microcontroller by adapting the C++ source.

Only one library need to be installed&nbsp;using the&nbsp; **Arduino Library Manager** …this is the preferred and modern way. From the Arduino “Sketch” menu, select “Include Library” then “Manage Libraries…”

![](https://cdn-learn.adafruit.com/assets/assets/000/083/624/medium800/led_pixels_arduino_compatibles_manage-libraries.png?1572989054)

Type “adafruit ws2801” in the search field to quickly find the library — **Adafruit WS2801 Library** :

![](https://cdn-learn.adafruit.com/assets/assets/000/083/627/medium800/led_pixels_adafruit_ws2801_library.png?1572989380)

After restarting the Arduino software, you should see a new&nbsp; **example&nbsp;** folder called&nbsp; **Adafruit WS2801 Library**** ,&nbsp; **and inside, an example called&nbsp;** strandtest**.

![](https://cdn-learn.adafruit.com/assets/assets/000/083/628/medium800/led_pixels_strandtest.png?1572989655)

# Example Code

Let's look through the **strandtest** example code. To use the library in an Arduino sketch, you'll first need to globally declare a WS2801 object to talk to the strip. It is invoked with three variables: the number of pixels and the data and clock pins:

```auto
int dataPin = 2;
int clockPin = 3;
 
// Set the first variable to the NUMBER of pixels. 25 = 25 pixels in a row
Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin);
```

Next, we initialize the strip in the&nbsp;setup()&nbsp;procedure:

```auto
void setup() {
 
  strip.begin();
 
  // Update LED contents, to start they are all 'off'
  strip.show();
}
```

`begin()`&nbsp;initializes the library, while&nbsp;`show()`&nbsp;refreshes the displayed colors of the LEDs. You'll need to call&nbsp;`show()` after changing any pixel colors to see this reflected in the LEDs. This way you can change the entire strip at one time (it takes the same amount of time to change one pixel as it does for an entire strip).

Let's look inside an example function,&nbsp;`colorWipe()`. This creates a 'chase' sequence that fills the strip&nbsp;with a color. It is basically a loop that increments through every pixel (which you can query with the&nbsp;`numPixels()`&nbsp;function) and sets the color of each (incremented with&nbsp;i) to the value passed (c&nbsp;— colors are expressed as a 32-bit variable type, though only the bottom 24 bits are used). The strip output is then updated with&nbsp;`show()`. Finally there is some delay (otherwise this would happen instantly).

Below that is a helper function that converts a color from separate 8-bit red, green and blue values into a combined 24-bit value (suitable for passing to&nbsp;`colorWipe()`). The brightness range is from 0 (off) to 255 (max brightness).

```auto
// fill the dots one after the other with said color
// good for testing purposes
void colorWipe(uint32_t c, uint8_t wait) {
  int i;
 
  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}
 
/* Helper functions */
// Create a 24 bit color value from R,G,B
uint32_t Color(byte r, byte g, byte b)
{
  uint32_t c;
  c = r;
  c <<= 8;
  c |= g;
  c <<= 8;
  c |= b;
  return c;
}
```

For example, in the&nbsp;`loop()`&nbsp;function we call `colorWipe(Color(255, 0, 0), 50)` which will fill the strand with full-brightness red light, pausing about 50 milliseconds between pixels.

```auto
  colorWipe(Color(255, 0, 0), 50);  // red fill
  colorWipe(Color(0, 255, 0), 50);  // green fill
  colorWipe(Color(0, 0, 255), 50);  // blue fill
```

# 12mm LED Pixels

## CircuitPython and Python Wiring

It's easy to use the 12mm LED pixels with CircuitPython and the&nbsp;[Adafruit CircuitPython WS2801](https://github.com/adafruit/Adafruit_CircuitPython_WS2801)&nbsp;module.&nbsp; This module allows you to easily write Python code to control the lights.

You can use these LEDs with any CircuitPython microcontroller board or with a computer that has GPIO.

## CircuitPython Wiring

You can wire up the WS2801 strand for CircuitPython and using any two GPIO pins. One will serve as the clock Pin and one as the Data Pin.

Danger: 

- **Microcontroller GND&nbsp;** to **&nbsp;Blue Ground line**  
- **Microcontroller D6&nbsp;** to **Green Serial Clock line**
- **Microcontroller D5&nbsp;** to **Yellow Serial Data line**
- **5V Regulated Supply +5V** to **Red +5V Line**
- **5V Regulated Supply Ground** to **Blue Ground line**

![led_pixels_circuitpython-software-wiring_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/083/362/medium640/led_pixels_circuitpython-software-wiring_bb.jpg?1572636541)

[Download Fritzing Diagram](https://cdn-learn.adafruit.com/assets/assets/000/083/361/original/circuitpython-software-wiring.fzz?1572636526)
## Python Wiring

Wiring for Python is pretty simple as well.

- **Microcontroller GND&nbsp;** to **&nbsp;Blue Ground line**  
- **Microcontroller D6&nbsp;** to **Green Serial Clock line**
- **Microcontroller D5&nbsp;** to **Yellow Serial Data line**
- **5V Regulated Supply +5V** to **Red +5V Line**
- **5V Regulated Supply Ground** to **Blue Ground line**

![led_pixels_python-software-wiring_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/848/medium640/led_pixels_python-software-wiring_bb.jpg?1600464173)

[Download Fritzing Diagram](https://cdn-learn.adafruit.com/assets/assets/000/094/852/original/python-software-wiring.fzz?1600464229)
### Hardware SPI Wiring on the Raspberry Pi

The Raspberry Pi seem to be an exception in that Hardware SPI seems to work pretty well on here.

- **Microcontroller GND&nbsp;** to **&nbsp;Blue Ground line**  
- **Microcontroller SCLK&nbsp;** to **Green Serial Clock line**
- **Microcontroller MOSI&nbsp;** to **Yellow Serial Data line**
- **5V Regulated Supply +5V** to **Red +5V Line**
- **5V Regulated Supply Ground** to **Blue Ground line**

![led_pixels_python-hardware-wiring_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/851/medium640/led_pixels_python-hardware-wiring_bb.jpg?1600464207)

[Download Fritzing Diagram](https://cdn-learn.adafruit.com/assets/assets/000/094/853/original/python-hardware-wiring.fzz?1600464247)
# 12mm LED Pixels

## CircuitPython and Python Setup

## CircuitPython Setup

To use the 12mm LED Pixels with your Adafruit CircuitPython board you'll need to install the [Adafruit CircuitPython WS2801](https://github.com/adafruit/Adafruit_CircuitPython_WS2801) module on your board.

First make sure you are running the&nbsp;[latest version of Adafruit CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)&nbsp;for your board.

Next you'll need to install the necessary libraries&nbsp;to use the hardware--carefully follow the steps to find and install these libraries from&nbsp;[Adafruit's CircuitPython library bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases).&nbsp; Our CircuitPython starter guide has [a great page on how to install the library bundle](https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries).

If you choose, you can manually install the libraries individually on your board:

- **adafruit\_ws2801**

Before continuing make sure your board's lib folder or root filesystem has the **adafruit\_ws2801****.mpy ****&nbsp;** file copied over. You should now be ready to go!

## Python Setup

You'll need to install the Adafruit\_Blinka library that provides the CircuitPython support in Python. This may also require enabling SPI on your platform and verifying you are running Python 3.&nbsp;[Since each platform is a little different, and Linux changes often, please visit the CircuitPython on Linux guide to get your computer ready](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux)!

### Python Installation of WS2801 Library

Once that's done, from your command line run the following command:

- `pip3 install adafruit-circuitpython-ws2801`

If your default Python is version 3 you may need to run 'pip' instead. Just make sure you aren't trying to use CircuitPython on Python 2.x, it isn't supported!

If that complains about pip3 not being installed, then run this first to install it:

- `sudo apt-get install python3-pip`

# 12mm LED Pixels

## CircuitPython and Python Usage

The 12mm LED pixels are really easy to use with CircuitPython and the&nbsp;[Adafruit CircuitPython WS2801](https://github.com/adafruit/Adafruit_CircuitPython_WS2801)&nbsp;module.

## Initialization

Whether you connected the LED Pixels to your microcontroller through the Hardware SPI or Software SPI, initialization is about the same.

```python
import board
import adafruit_ws2801

odata = board.D5
oclock = board.D6
numleds = 25
bright = 1.0
leds = adafruit_ws2801.WS2801(oclock, odata, numleds, brightness=bright, auto_write=False)
```

In this example, we are using `D5` and `D6`, which are for driving it through software. If we were driving it through hardware on the Raspberry Pi, we would use the following Pins:

```python
odata = board.MOSI
oclock = board.SCK
```

Danger: 

Make sure the number of LEDs corresponds to the actual number that you had. For instance, if you had two strands of 25 LEDs, that's 50 LEDs.

You can adjust the brightness by changing the number between 0 and 1.0. Setting it lower than one requires a little more processor power because to achieve that effect, they need to rapidly turned on and off.

If you didn't want to have to call `show()` in order to update the strand, you could either set `auto_write` to `True` or remove it from the initializer altogether.

## Showing Changes

If `auto_write` is set to False, you will need to call `show()` in order to show any changes you made to the lights:

```python
leds[0] = 0xff0000
leds.show()
```

## Filling All Lights At Once

You can fill all the lights at once with the `fill` command. The color can either be a tuple of Red, Green, and Blue as a number between 0-255 each, a hexadecimal number in the format of 0xRRGGBB:

```python
# Use an RGB Tuple
leds.fill((255, 0, 0))

# Use a Hexidecimal Value
leds.fill(0xff0000)
```

## Setting an individual LED

You can set the value of a single LED by passing a color value as a tuple or hexadecimal value to an index:

```python
leds[0] = (0, 0, 255)	# Set the first LED blue
leds[1] = 0x00ff00	# Set the second LED Green
```

## Setting Multiple Values

You can set multiple values at the same time using a slice. For instance, if you wanted to set the first three LEDs to Red, Green, and Blue, you could type the following:

```python
leds[0:3] = ((255, 0, 0),
             (0, 255, 0),
             (0, 0, 255))
```

## Getting a Value

Just like you can set the LEDs, you can also read the current value of the LEDs. The value will be returned as a Tuple:

```python
leds[0] = 0xff0000
leds[1] = 0x00ff00
leds[2] = 0x0000ff

my_color = leds[0] # Returns (255, 0, 0)

my_colors = leds[0:3] # Returns [(255, 0, 0), (0, 255, 0), (0, 0, 255)]
```

## Setting the Brightness

You can change the brightness of all the lights by changing the brightness property and setting it between 0 and 1.0:

```python
leds.brightness = 0.5    # Set to 50% Brightness
```

With just this handful of commands, you can do some cool effects and animations. Having the `auto_write` set to `False` makes adding cool effects even easier because you can change each light and then call `show()` to make all changes visible at once. You could do some cool animations this way. You could even get values and set other values up the chain for a shifting lights effect.

## Full Example Code
https://github.com/adafruit/Adafruit_CircuitPython_WS2801/blob/main/examples/ws2801_simpletest.py

# 12mm LED Pixels

## Troubleshooting

### 

It's pretty easy! Simply drill a 12mm hole into any material up to 1.5mm/0.06" thick. Then push the LED bulb first into the hole. It takes a little wiggling but there are four flanges molded in so that you can 'push' them thru and the flanges will keep the LED pixel in place

Many support issues arise&nbsp;from&nbsp;eager users getting ahead of themselves, changing the code and wiring before confirming that all the pieces work in the standard configuration.&nbsp;We recommend always starting out with the examples as shown. Use the pinouts and wiring exactly as in the tutorial, and run the stock, unmodified “strandtest” example sketch. Only then should you start switching things around.  
  
Here are the most common issues and solutions…

### 

- Double-check all wiring. Are the clock and data wires swapped? Is ground connected to the Arduino?
- Confirm the Arduino is connected to the <u>input</u> end of the strand.
- Check power supply polarity and voltage. Are + and – swapped? If you have a multimeter, confirm 5V DC output (±10%) from the power supply.
- Are the power wires at the opposite end of the strand insulated or trimmed? They should not be left exposed where they might make contact with metal, or each other.
- Is the correct board type&nbsp;selected in the Arduino Tools→Board menu?  

### 

The power supply is probably OK. Check for any of the following:

- Double-check all wiring. Are the clock and data wires swapped? Is ground connected to the Arduino?
- Confirm the Arduino is connected to the <u>input</u> end of the strand.
- Is the correct board type&nbsp;selected in the Arduino Tools→Board menu?  
- Did the strandtest code successfully compile and upload?

### 

- Confirm that the number of LEDs in the&nbsp;Adafruit\_WS2801() constructor match the number of LEDs in the strand (both will be 25 if using the strandtest example and a single strand of LEDs).
- Inside each pixel there’s a small circuit board. Give the first bad pixel (and the one immediately&nbsp;before it) a firm squeeze where the ribbon cable joins the board — it may simply be a dodgy connection. If that works, you can either cut out the offending pixel and join the two sub-strands, or arrange for a replacement strand if new.

### 

Are the clock and data wires swapped? Is ground connected to the Arduino?

### 

- This can happen when trying to power too long of a strand from one end. Voltage will drop along the length of the strand and the furthest pixels will “brown out.” Connect power to _every_ 25 pixel strand.

### 

- Confirm the library is <u>unzipped</u> prior to installation.
- Confirm the library is properly named and located. The folder should be called&nbsp;Adafruit\_WS2801, and placed inside your personal&nbsp;Documents/Arduino/Libraries folder — _not_ inside the Arduino application folder!
- After installation, the Arduino IDE needs to be restarted for new libraries to be used.  

# 12mm LED Pixels

## Dimensions

There’s a fair amount of variance between pixels due to the rubbery, waterproof coating.&nbsp;The figures given here are just guidelines, rounded up to the next whole millimeter (except for the mounting hole diameter). Allow yourself some extra&nbsp;“wiggle room” for spacing&nbsp;when planning an installation.  
  
For mounting holes, 11.5 millimeters is a good guideline, or might go as narrow as 11 mm for a really firm grip, though at that size&nbsp;pixels will be hard to remove and the mounting flange&nbsp;may take some abuse in the process.

# “Bullet” Pixels
![](https://cdn-learn.adafruit.com/assets/assets/000/001/434/medium800/led_pixels_bullet-profile.jpg?1396772053)

![](https://cdn-learn.adafruit.com/assets/assets/000/001/435/medium800/led_pixels_bullet-spacing.jpg?1396772057)

# “Square” Pixels
![](https://cdn-learn.adafruit.com/assets/assets/000/001/436/medium800/led_pixels_square-top.jpg?1396772063)

![](https://cdn-learn.adafruit.com/assets/assets/000/001/437/medium800/led_pixels_square-profile.jpg?1396772068)

![](https://cdn-learn.adafruit.com/assets/assets/000/001/438/medium800/led_pixels_square-spacing.jpg?1396772074)


## Related Guides

- [32x32 Square Pixel Art Animation Display](https://learn.adafruit.com/32x32-square-pixel-display.md)
- [LED Neon Selfie Spot](https://learn.adafruit.com/led-neon-selfie-spot.md)
- [DC, Servo, Stepper Motors and Solenoids with the Pico](https://learn.adafruit.com/use-dc-stepper-servo-motor-solenoid-rp2040-pico.md)
- [Adafruit IO Basics: Servo](https://learn.adafruit.com/adafruit-io-basics-servo.md)
- [LED Matrix Wall Arcade for Pico-8](https://learn.adafruit.com/led-matrix-wall-arcade.md)
- [Neopixel Crystal Chandelier with CircuitPython Animations and Speed Control](https://learn.adafruit.com/neopixel-crystal-chandelier-with-circuitpython-animations-and-speed-control.md)
- [reef-pi Guide 6: pH Monitoring](https://learn.adafruit.com/reef-pi-guide-7-ph-monitoring.md)
- [Adafruit RGB Matrix FeatherWings](https://learn.adafruit.com/rgb-matrix-featherwing.md)
- [Glowing Neopixel Resin River Table](https://learn.adafruit.com/glowing-neopixel-resin-river-table.md)
- [Thanksgiving Robotic Turkey Hand with Circuit Playground Express and Crickit](https://learn.adafruit.com/talking-turkey-hand.md)
- [Ambient Color Control Pad](https://learn.adafruit.com/ambient-color-controller.md)
- [Adafruit MatrixPortal M4](https://learn.adafruit.com/adafruit-matrixportal-m4.md)
- [Crickit Dancing Marionette Kit](https://learn.adafruit.com/universal-marionette-with-crickit.md)
- [Animating Animatronics](https://learn.adafruit.com/animating-animatronics.md)
- [Adafruit  PCA9685 16-Channel Servo Driver](https://learn.adafruit.com/16-channel-pwm-servo-driver.md)
