MakerLab Reference: The LilyPad Arduino
A washable, sewable microcontroller board designed for wearable electronics and soft circuitry.

The LilyPad Arduino is a unique microcontroller board developed by Leah Buechley and the Arduino team, specifically for wearable technology and e-textiles. Unlike traditional rigid PCBs, the LilyPad features a small, round, and flexible circuit board that can be easily sewn into fabric using conductive thread. This design makes it ideal for projects where flexibility, comfort, and integration with textiles are paramount, such as interactive clothing, smart accessories, and soft robotic applications.
At its heart, the LilyPad Arduino is powered by the same microcontroller found in the original Arduino Uno: the ATmega168. This 8-bit AVR RISC microcontroller offers a good balance of processing power and low power consumption, making it suitable for a wide range of embedded tasks. It features 16KB of Flash memory for program storage, 1KB of SRAM for data, and 512 bytes of EEPROM for persistent data storage. The ATmega168 operates at a clock speed of 16 MHz, providing sufficient performance for many interactive projects.
Released around 2007, the LilyPad Arduino predates many of the more specialized microcontroller boards available today, carving out a niche for itself in the burgeoning field of e-textiles. Its design philosophy emphasizes integration with fabric, allowing makers to create truly seamless electronic garments. While it shares the ATmega168 microcontroller with the classic Arduino Uno, its physical form factor and intended applications are distinct, making it a go-to choice for anyone looking to embed intelligence into textiles without the bulk of traditional boards.
The LilyPad Arduino is best suited for makers, students, and designers interested in wearable computing, interactive art, and e-textiles. Its sewable nature simplifies the process of integrating electronics into clothing and accessories, making it accessible even to those with limited soldering experience. For beginners, it offers a gentle introduction to microcontrollers within a creative and fashion-oriented context, while experienced engineers can leverage its unique form factor for innovative product development.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Atmel ATmega168 |
| Architecture | 8-bit AVR RISC |
| Clock speed | 16 MHz |
| Flash / Storage | 16 KB (of which 2 KB used by bootloader) |
| RAM / SRAM | 1 KB |
| Operating voltage | 3.3V |
| Digital I/O pins | 14 (of which 6 can be used as PWM outputs) |
| Analog / ADC | 6 (10-bit resolution) |
| PWM | 6 pins (3, 5, 6, 9, 10, 11) |
| Connectivity | โ |
| USB | โ (Requires external USB-to-serial adapter for programming) |
| Power input | Recommended 3.7V LiPo battery, or 5V via FTDI adapter |
| Dimensions | ~50mm diameter |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3.3V | Power output (regulated) |
| GND | Ground |
| A0 | Analog Input / Digital I/O |
| A1 | Analog Input / Digital I/O |
| A2 | Analog Input / Digital I/O |
| A3 | Analog Input / Digital I/O |
| A4 | Analog Input / Digital I/O (SDA) |
| A5 | Analog Input / Digital I/O (SCL) |
| D9 | Digital I/O, PWM |
| D10 | Digital I/O, PWM, SS (SPI Slave Select) |
| D11 | Digital I/O, PWM, MOSI (SPI Master Out Slave In) |
| D12 | Digital I/O, MISO (SPI Master In Slave Out) |
| D13 | Digital I/O, SCK (SPI Clock) |
| D8 | Digital I/O |
| D7 | Digital I/O |
| D6 | Digital I/O, PWM |
| D5 | Digital I/O, PWM |
| D4 | Digital I/O |
| D3 | Digital I/O, PWM |
| D2 | Digital I/O |
| D1 | Digital I/O, RX (UART Receive) |
| D0 | Digital I/O, TX (UART Transmit) |
| RESET | Reset pin (active low) |
| VCC | Power input (unregulated, typically LiPo battery) |
Wiring & circuit basics
Powering the LilyPad Arduino requires careful consideration, especially given its wearable nature. The board is designed to run at 3.3V, and its VCC pin accepts an unregulated input, typically from a single-cell LiPo battery (around 3.7V nominal). The onboard voltage regulator will then provide a stable 3.3V to the microcontroller and other components. Avoid applying more than 5V to the VCC pin, as this can damage the regulator and the board. For programming or testing without a battery, a 5V supply can be connected via an FTDI-compatible USB-to-serial adapter connected to the TX, RX, and GND pins, with the adapter's 5V output connected to the LilyPad's VCC pin.
When connecting external components, always respect the LilyPad's 3.3V logic level. Connecting 5V logic devices directly to the LilyPad's input pins might damage the ATmega168. Conversely, connecting 3.3V outputs from the LilyPad to 5V-tolerant inputs of other devices is generally safe, but it's good practice to use level shifters if unsure. For example, to light an LED, connect a digital output pin (e.g., D5) through a current-limiting resistor (typically 220-470 ohms for standard LEDs) to the LED's anode, with the LED's cathode connected to a GND pin on the LilyPad. Ensure the resistor value is appropriate for 3.3V operation.
For more complex sensors, like an I2C device (e.g., an MPU-6050 accelerometer/gyroscope), you would connect the sensor's VCC to the LilyPad's 3.3V pin, GND to GND, SDA to A4, and SCL to A5. Remember to check the sensor's datasheet for its operating voltage and logic levels; if it's a 5V device, a level shifter will be necessary between the LilyPad and the sensor's data lines.
Programming & getting started
The LilyPad Arduino is programmed using the Arduino IDE, the same familiar environment used for most Arduino boards. Connect the LilyPad to your computer using an FTDI-compatible USB-to-serial adapter (e.g., FTDI232RL or similar). Connect the adapter's TX pin to the LilyPad's RX (D1), the adapter's RX pin to the LilyPad's TX (D0), and the adapter's GND to the LilyPad's GND. Power the LilyPad by connecting the adapter's 5V output to the LilyPad's VCC pin. Select 'LilyPad Arduino USB' or 'Arduino Uno' as the board in the Arduino IDE, choose the correct serial port, and upload your sketch. For automatic reset, you may need to manually press the LilyPad's reset button when the IDE indicates it's compiling.
For your first program, you can upload the classic 'Blink' sketch. Modify the pin number in the `pinMode()` and `digitalWrite()` functions to one of the digital pins, such as D13 (which is often connected to an onboard LED on many Arduino variants, though not explicitly on the LilyPad itself, so you'd connect an external LED here). Ensure the LED is wired correctly with a current-limiting resistor. Once uploaded, the LED should blink, confirming your setup and programming workflow are functional.