Arduino® is a popular electronics platform for hobbyists and professionals. The hardware, known as Arduino® boards, comes in several varieties and can be extended with additional components known as Arduino® shields. Similarly, the functionality of the software can be expanded by adding Arduino® libraries. Essentially, these libraries speed up the process of programming an Arduino® project by providing purpose written code to the programmer, saving him or her the time and effort of solving tricky problems that other programmers have already solved.
All standard elements of the Arduino® platform are open source, including all standard hardware and software components. This means that the libraries can be freely modified, copied, and redistributed. Arduino® libraries are released under the General Public license (GPL), meaning that commercial software can legally be added to the Arduino® platform but arduino® libraries cannot be incorporated into software that is not released under the GPL or a compatible open-source license.
The two main types of Arduino® libraries are standard and user contributed. Standard libraries are included with the default Arduino® software. These libraries are included because they provide basic functionality that will be used by many programmers. Standard libraries have also undergone review and testing to ensure quality and reliability. User contributed libraries are not included with the default package because either their functionality is more obscure or they have not undergone extensive testing.
User contributed libraries can be downloaded from the Internet. The Arduino® project provides a repository of some of the more common libraries, and other libraries can be found elsewhere on the Internet. Installing a user contributed library is as simple as unzipping a file and placing it in the libraries folder.
Standard libraries include SD, LiquidCrystal, Ethernet, Servo, and several others. An SD library provides the software capability to read and write to SD cards, providing that an SD reader has been attached to the Arduino® project. LiquidCrystal provides software for controlling LCD monitors, which can be useful for displaying images or output. The Ethernet library adds software support for the Ethernet Arduino® shield. Servo provides support for servo motors, which are useful for robotics projects.
User contributed libraries include DateTime and Webduino. DateTime is a simple library which helps Arduino® software keep track of dates and times. Webduino provides a web server, allowing devices to be remotely accessed using the Internet.