Lilypad: all about the small Arduino board

Arduino Lilypad

There are several “flavors” of Arduino, so to speak. Besides Arduino UNO and his big brother Arduino Mega, there are more of these boards. Some of them have very specific characteristics to satisfy all possible needs of the makers. This way they will adapt to all kind of DIY projects. A different one from the above mentioned is Lilypad.

Lilypad is a small open source development board and with some features similar to the board Arduino UNO base, but whose size has been reduced considerably so that it can be adapted to embedded projects, low power consumption, small devices where reducing size is important, and even for home wearables .

What is Lilypad?


One of the small devices that have been imposed on the DIY community are ‘wearables’. In other words, in English they would be the ‘wearable’ devices, although it doesn’t sound too good. As you can imagine, in case you don’t know yet, they are devices that can be used as clothes or accessories. Surely you have seen some wearables like smart watches, t-shirts, caps, etc., that have some electronic element to show messages, emit some kind of signal, etc.

Well, for this type of devices it is not practical to use an Arduino UNO, Mega, etc., since they are boards of a considerable size, which together with the type of power supply that these boards usually need, would make impossible the task of building wearables discrete. That’s why boards like Lilypad have been created, another key piece within the Arduino ecosystem.

Therefore, Lilypad Flora are only development boards that provide the same capacity to the makers as with other boards, but with a smaller size and the possibility of integrating a power supply also discreet, as it is a small button type battery.

In this article I will deal with both LilyPad and Flora, since both projects are very interesting to create ‘interactive clothes’ or small accessories such as hats with lights, your own smart watch (Fitbit style, Appel iWatch, Samsung Galaxy Gear…), T-shirts that react to Twitter events, shoes that react to steps, or whatever you can imagine.

In addition, you should know that the community and other manufacturers have developed all kinds of complementary projects that you can use and many extra devices (sensors, LEDs, actuators, …) that work together with these boards to expand their capabilities beyond those of the base.

Technical features of LilyPad / Flora

This LilyPad / Flora board is specially designed for garments and textiles, a wearable version of Arduino as I said. It was developed by Leah Buechley and SparkFun Electronics. It is true that the features are not as powerful as other Arduino boards, but it is more flexible and reduced, qualities that the other boards do not have.


The LilyPad board is powered by an Atmel ATmega328P low power microcontroller. An MCU chip that only demands between 0.75μA to 0.2mA, depending on the mode, and with supply voltages of 2.7 to 5.5v. This MCU is 8-bit, working on a clock frequency of 8 MHz.

Despite its small size, this board has 23 GPIO pins so you can program them. But only 9 of them are accessible, all as digital pins. They are numbered like this: 5, 6, 9, 10, 11, A2, A3, A4, and A5. Of all of them, the ones without an A can be used as PWM. In addition, the I2C protocol can be used by the A4 (SDA) and A5 (SCL) pins. Of course, there will also be a GND pin as ground (marked with the – symbol) and a 3v3 power pin (marked as +).

Remember, if you feed it 5v, that’s the voltage for the digital pins. If you use a 3.7v battery instead, then they will work at 3.3v.

The Lilypad has a JST connector to connect the LiPo battery on the back, but the USB-serial adapter is not included in the basic kit (you would have to buy ). What it does include is an integrated MCP73831 chip to charge the battery through the USB, a button for reset, several integrated LEDs, one of them to know if the board is on and another for debugging accessible by pin 13.

The complete technical features of LilyPad are

  • 8Mhz Atmel ATmega328P microcontroller.
    • 8-bit
    • SRAM 2KB
    • EEPROM 1KB
    • Flash memory 32KB
  • Supply voltage from 2.7v to 5v5.
  • Consumption between 0.75 microamps to 0.2mA.
  • Digital pins 23, only 9 available. With 5 PWM (5,6,9,10,11).
  • Four analog pins A2, A3, A4, A5. Of which A4 (SDA) and A5 (SCL) are for I2C.
  • Power pins: 1 of 3v3, 1 of GND.
  • Maximum pin intensity: 40mA.
  • Dimensions of 55mm diameter and 8mm thickness.
  • Price: about 6 or 7 Euros ()



In the case of Flora, it’s a slightly more expensive Adafruit board than the previous one, but also cheap. There are several revisions of this board, with the v3. It is compatible with Arduino, and designed by Adafruit founder Limor Fried, known in the community as Ladyada, and as an alternative to LilyPad.

It has some interesting advantages over LilyPad, even though they seem almost identical. This board does integrate the microUSB for connection, so it is an extra point. In addition, Flora is 45mm and 7mm in size, which makes it somewhat smaller, but almost the same in this case.

Another advantage of Flora is ‘Strong’, the functions it implements in comparison to Lilypad. In addition, if you want to go further they also sell complete development kits.

For Flora, the characteristics would be these others:

  • Atmel ATmega32U4 16 Mhz microcontroller.
    • 8-bit
    • 2.5KB SRAM
    • 32KB Flash
    • 1KB EEPROM
  • Supply voltage 3.5v to 16v.
  • Maximum consumption of 8mA to 20mA.
  • Available digital pins are reduced by 1, that is, you have 8 at your disposal. They are 0, 1, 2, 3, 6, 9, 10 and 12. As PWM are 4 of them, the numbered as 3, 6, 9 and 10.
  • Integrated Neopixel accessible from pin 8.
  • You have 4 analog pins: A7, A9, A10 and A11.
  • Add 2 pins of 3v3 voltage and 3 pins of GND type. Also, add a VBATT output. This last pin gives the voltage of the battery used to power, so it can be used as one more power pin, like for NeoPixel (always up to 150mA maximum load, but be careful because it increases the consumption).
  • Dimensions of 45mmx7mm.
  • Price from 16-30 ? ()


The boards differ in their origin. While Flora is from Adafruit, Lilypad is from Arduino and Sparkfun. But both are designed for wearables, and with similar dimensions and characteristics as you can see.

Starting to program with Arduino IDE

Screenshot of Arduino IDE

To program Flora and LilyPad is the same as doing Arduino UNO, etc. The same programming language and development environment is used, i.e. Arduino IDE. The only difference that you must take into account is that you must select the type of board to program in the menu of the IDE, since by default it will be ONE.

To properly select the board in Arduino IDE:

  • LilyPad: Go to the Arduino IDE, then to Tools, then to the Boards section and there select the LilyPad board. With the FTDI module connected and the cable from the PC to the microUSB, you can pass the sketch to leave it programmed.
  • Flora: go to Arduino IDE, then File, then Preferences. In the Settings tab, look for “Additional URLs for boards manager” and there paste this link. By the way, if you already had another URL in that field, use a comma to separate this new URL you are adding and do not delete the previous one, or click the icon next to the text box and add the new URL below the other one in the new window that appears. Once you’re done, click OK and you’re done. Now go to Tools, Board, Card Manager, and select Contribution from the Type drop-down menu, search for “Adafruit AVR” without quotes and once it is located Install. Once done, you can return to the Tools menu, LilyPad Arduino Board and inside you can select Adafruit Flora that will appear after installing this add-on.  Here you directly connect the USB to microUSB cable of the board, without the need for separate module.

The rest of the procedure would be the same as for any other Arduino board, taking into account the hardware resources available, which will be more reduced… For example, to make an LED that you connect to pin 6 of LilyPad / Flora blink, you can use the following example code:

const byte pinLed6 = 6;

void setup() {
  // Pin mode as output
  pinMode(pinLed6, OUTPUT);


void loop() {
  // We flash the LED every 3 seconds
  digitalWrite(pinLed6, HIGH);
  digitalWrite(pinLed6, LOW);
  digitalWrite(pinLed6, HIGH);
  digitalWrite(pinLed6, LOW);

Leave a Comment