Arduino Leonardo Introduction:
Arduino Leonardo is a microcontroller board that uses ATmega32u4 (datasheet) as the main chip. Most of these include twenty digital I/O pins out of which seven can be used as PWM outputs and twelve can be used as analog inputs, sixteen mega Hertz crystal oscillators, micro USB connection, power jack interfaces, ICSP interfaces, and a reset button. It includes all the necessary components to aid the microcontroller; just plug it into a computer via a USB cable or power it up using an AC-to-DC adapter or battery to begin.
The main distinction of the Leonardo board is that the ATmega32u4 includes USB communication, removing the necessity for another processor. This enables the Leonardo to be recognized by a computer as both a mouse and keyboard, along with a virtual (CDC) serial/COM port. It additionally has further ramifications on the board’s conduct.
these are detailed on the Getting started with the Arduino Leonardo.
Related Boards
If you are interested in boards with similar functionality, at Arduino you can find:
- Arduino Leonardo without Headers
- Arduino Micro
Getting started
Find inspiration for your projects with Leonardo board from our tutorial platform Project Hub.
The page for Getting Started with the Arduino Leonardo has everything necessary for setting up your board, utilizing the Arduino Software (IDE), and beginning to experiment with coding and electronics.
From the Tutorials section you can find examples from libraries and built-in sketches as well other useful information to expand your knowledge of the Arduino hardware and software.
Need Help?
Check the Arduino Forum for questions about the Arduino Language, or how to make your own Projects with Arduino. Need any help with your board please get in touch with the official Arduino User Support as explained in our Contact Us page.
Warranty
You can find here your board warranty information.
Arduino Leonardo Pinout:
Arduino Leonardo Specifications:
Microcontroller | ATmega32u4 |
Operating Voltage | 5V |
Input Voltage (recommended) | 7-12V |
Input Voltage (limits) | 6-20V |
Digital I/O Pins | 20 |
PWM Channels | 7 |
Analog Input Channels | 12 |
DC Current per I/O Pin | 40 mA |
DC Current for 3.3V Pin | 50 mA |
Flash Memory | 32 KB (ATmega32u4) of which 4 KB used by bootloader |
SRAM | 2.5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Clock Speed | 16 MHz |
OSH: Schematics
The Arduino Leonardo is open-source hardware! You can build your own board using the following files:
Pinout Diagram
Download the full pinout diagram as PDF here.
Power
The Arduino Leonardo has flexible power options. It can receive power through either its micro USB port or an external power source, selecting the power automatically.
External power can be provided via an AC adapter or battery. An adapter can be used by connecting a 2.1mm center-positive plug to the board’s power jack. Alternatively, a battery’s leads can be inserted into the Gnd and Vin pin headers of the POWER connector. This allows the Leonardo to be powered portably without needing a USB connection. The power pins are as follows:
- VIN. The Arduino board receives a different input voltage when powered by an external source compared to the 5 volts from USB or another regulated power source. You have the option to provide voltage through this pin or retrieve it from this pin if the voltage is supplied through the power jack.
- 5V.The controlled power source is utilized for supplying power to the microcontroller and other components present on the circuit board. This can be sourced from either the vehicle identification number (VIN) through an on-board regulator or can come from a USB port or another regulated 5V power source.
- 3V3. A 3.3 volt supply is generated by the on-board regulator. Maximum current draw is 50 mA.
- GND. Ground pins.
- IOREF. The voltage at which the i/o pins of the board are operating (i.e. VCC for the board). This is 5V on the Leonardo.
Memory
The AVR chip ATmega32u4 has a memory of 32 KB of which there is 4 KB allocated for the Bootloader. It comes with 2. An include 5 kilobytes of SRAM and 1 kilobytes of EEPROM as well. (which can be read and written with the EEPROM library).
Input and Output
Each of the 20 digital i/o pins on the Leonardo can be used as an input or output, usingpinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions:
- Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using theATmega32U4 hardware serial capability. Note that on the Leonardo, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.
- TWI: 2 (SDA) and 3 (SCL). Support TWI communication using the Wire library.
- External Interrupts: 3 (interrupt 0), 2 (interrupt 1), 0 (interrupt 2), 1 (interrupt 3) and 7 (interrupt 4). These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.
- PWM: 3, 5, 6, 9, 10, 11, and 13. Provide 8-bit PWM output with the analogWrite() function.
- SPI: on the ICSP header. These pins support SPI communication using the SPI library. Note that the SPI pins are not connected to any of the digital I/O pins as they are on the Uno, They are only available on the ICSP connector. This means that if you have a shield that uses SPI, but does NOT have a 6-pin ICSP connector that connects to the Leonardo’s 6-pin ICSP header, the shield will not work.
- LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it’s off.
- Analog Inputs: A0-A5, A6 – A11 (on digital pins 4, 6, 8, 9, 10, and 12). The Leonardo has 12 analog inputs, labeled A0 through A11, all of which can also be used as digital i/o. Pins A0-A5 appear in the same locations as on the Uno; inputs A6-A11 are on digital i/o pins 4, 6, 8, 9, 10, and 12 respectively. Each analog input provide 10 bits of resolution (i.e. 1024 different values). By default the analog inputs measure from ground to 5 volts, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function.
There are a couple of other pins on the board:
- AREF. Reference voltage for the analog inputs. Used with analogReference().
- Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.
See also the mapping between Arduino pins and ATmega32u4 ports.
Communication
The Leonardo has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega32U4 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). The 32U4 also allows for serial (CDC) communication over USB and appears as a virtual com port to software on the computer. The chip also acts as a full speed USB 2.0 device, using standard USB COM drivers. On Windows, a .inf file is required. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB connection to the computer (but not for serial communication on pins 0 and 1). A SoftwareSerial library allows for serial communication on any of the Leonardo’s digital pins. The ATmega32U4 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus; see the documentation for details. For SPI communication, use the SPI library. The Leonardo appears as a generic keyboard and mouse, and can be programmed to control these input devices using the Keyboard and Mouse classes.
Programming
The Leonardo can be programmed with the Arduino software (download). Select “Arduino Leonardo from the Tools > Board menu (according to the microcontroller on your board). For details, see the reference and tutorials. The ATmega32U4 on the Arduino Leonardo comes preburned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the AVR109 protocol. You can also bypass the bootloader and program the microcontroller through the ICSP (In-Circuit Serial Programming) header using Arduino ISP or similar; see these instructions for details.
Automatic (Software) Reset and Bootloader Initiation
Rather than requiring a physical press of the reset button before an upload, the Leonardo is designed in a way that allows it to be reset by software running on a connected computer. The reset is triggered when the Leonardo’s virtual (CDC) serial / COM port is opened at 1200 baud and then closed. When this happens, the processor will reset, breaking the USB connection to the computer (meaning that the virtual serial / COM port will disappear). After the processor resets, the bootloader starts, remaining active for about 8 seconds. The bootloader can also be initiated by pressing the reset button on the Leonardo. Note that when the board first powers up, it will jump straight to the user sketch, if present, rather than initiating the bootloader.
Because of the way the Leonardo handles reset it’s best to let the Arduino software try to initiate the reset before uploading, especially if you are in the habit of pressing the reset button before uploading on other boards. If the software can’t reset the board you can always start the bootloader by pressing the reset button on the board.
USB Overcurrent Protection
The Leonardo is equipped with a resettable polyfuse which safeguards your computer’s USB ports from shorts and overcurrent. Even though computers have their internal protection, the fuse adds a layer of security. If the USB port receives more than 500 mA of current, the fuse will interrupt the connection until the short circuit or overload is fixed.
Physical Characteristics
The Leonardo PCB has a maximum length of 2.7 inches and a width of 2.1 inches, with the USB connector and power jack protruding beyond the length measurement. Four screw holes enable the board to be connected to a surface or case. Keep in mind that the gap between digital pins 7 and 8 measures 160 mil (0.16″), which is not a perfect multiple of the 100 mil spacing of the rest of the pins.
for more info visit: Arduino Leonardo