The Arduino Leonardo is a microcontroller board based on the ATmega32u4. It has 20 digital input/output pins (of which 7 can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator, a micro USB connection, a power jack, an ICSP header, and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started. The difference between Arduino Leonardo and Arduino Uno is Arduini Leonardo uses a software UART while Arduino Uno has a hardware UART. Uno should be used when an application requires a lot of USB/serial port communication. When little communication over the serial port is needed, Leonardo is fine. Sometimes software debugging requires additional serial port communication, so it can make sense to develop on Uno and use Leonardo in the final invention to save cost.