Libraries for Arduino
A collection of contributed libraries. You can add your own libraries here. The standard library page is located here.
- SimpleSDAudio Play audio files with your Arduino in decent quality from SD card, only very few additional hardware required, easy to use library. Mono, stereo and even 16-bit.
- toneAC library - Twice the volume of the standard tone library (AC push/pull). Also higher/lower frequencies, smaller compiled size, bug fixes, volume setting, and uses timer 1 which may free up conflicts.
- Mozzi sound synthesis library with familiar audio and control rate synthesis units like oscillators, delays, filters and envelopes. Includes documentation and example sketches. Open source and extendable.
- SID Emulator Library - MOS 6581 SID sound chip emulator library
- SMARTWAV - Library for the SmartWAV Audio Processor board.
- LPM11162 - Library for use of LPM11162 audio module.
- VS1053 Audio Codec Chip- Ogg Vorbis/MP3/AAC/WMA/FLAC/MIDI
- µSpeech libray - Speech recognition library for arduino. For people behind Chinese firewall use this link.
- PCM/WAV Audio Library - Standards compliant WAV audio library for playback and recording of computer friendly audio files using only timer pins. Supports info tags, dual track playback, wireless streaming and more. Arduino Due not supported yet.
- Arduino DUE I2S Driver - Configures the Arduino DUE's SSC controller to operate in I2S mode for interfacing with external CODECs. Receive and playback are supported.
- Arduino FFT - frequency analysis of audio or other analog signals.
- Advanced Tone - produce square-wave of the specified frequency (and 50% duty cycle) on any Arduino pin.
- PCM2705 Library - Library for controlling playback on a PCM2705 USB DAC .
- Exosite send and receive data to/from the cloud by using Exosite's Cloud Data Platform.
Libraries that simplify implementing a menu.
The Arduino sends a (human-readable)
list of option (typically to a 2-line text LCD or the serial monitor),
and allowing a human to select one of those options
(typically using buttons UP, DOWN, and SELECT near the LCD).
- ArduinoJsonParser - An efficient JSON parser for Arduino
- RestClient - RestClient makes RESTful HTTP requests simple from the arduino using the EthernetShield.
- Lifegraph - Lifegraph connects your Arduino to Facebook or any other JSON API on the web, built on the WiFlyHQ library.
- Arduino ICSC - Link multiple Arduino boards together with serial or RS-485. Simple packet messaging protocol between two nodes with RS-232 or hundreds of nodes with RS-485.
- arduiNode - arduinode is a protocol for a wireless sensor network (WSN). Communication is handled in the background, neighbor nodes find each others and span the net. Some of its core features are: multi hop packet routing, dynamic id allocation, collision avoidance and rebroadcasting of lost messages.
- Conceptinetics DMX - Library which makes it easy to write DMX Master and Slave implementations
- Streaming - C++-style Output with '<<'
- SerialDebugger is a library that enhance code readability, and debug control.
- NewSoftSerial: An interrupt-driven Software Serial library now used in the latest arduino releases.
- EasyTransfer: Easy communications between Arduinos over Serial or I2C.
- Buffered and non-blocking serial writes Serial manager that allows non-blocking serial writes along with a simple way of packetizing serial data by calculating checksums and appending packet headers in a transparent way for the user. Also provides packetized serial reception with a function callback when a full and checksum-correct packet has been received.
- SerialIP provides Internet connectivity over the serial port (no shields required)
- SerialUI allows you to create a user interface for your device through the serial channel (menus, sub-menus and command execution). It provides built-in support for navigation through the menu hierarchy and online help. As of version 1.4, using SerialUI gives you a graphical user interface (GUI) as well, with no additional coding, thanks to druid4arduino.
- multiCamereIrControl Library, controlling Nikon, Canon, Sony, Minolta, Olympus and Pentax cameras just with an IR LED.
- TwitterLibrary assists in posting your data to twitter
- UComms [dead link 2013-12-29] A library that facilitates packetizing of data. This library is very flexible and allows you to define and implement your own protocol on top of the packetization. Comes fully commented/documented and with an example.
- TinyREST is a library that implements a REST-like server on top of the Asynclabs WiShield library. It provides ability to read and write to pins and EEPROM, but also ability to receive REST callbacks on changes.
- ModbusMaster: Arduino class library for communicating with Modbus slaves over RS232/485 (supports Arduino 1.0)
- RF24 - Stable, mature library for driving Nordic nRF24L01+ wireless RF radios. Includes tutorials and plentiful examples.
- GNTP - Arduino library for sending Growl notifications to your Mac, Linux or Windows PC over the network, using GNTP.
- Tx433_Proove - A simple lib to use remote controlled power outlet switches of the brand Proove.
- Oscuino - A full-featured implementation of the OSC 1.0 communication protocol for Arduino.
- XMODEM - An XMODEM transfer library that's Arduino compatible, and POSIX compatible, so you may be able to use it for both the Arduino and your client application. Requires SD library for file access via the Arduino with a micro-SD card.
- XModem - Simple xmodem protocol implementation in C++. The code is very compact and portable so it can be used not only on Arduino, but on a PC as well.
- pfod Parsers Library - Three pfod parsers are provided. A very simple cmd parser, a full msg parse and a parser with per message SipHash for use over the internet with 128bit security. See also SipHash in Cryptography below.
- NetEEPROM A library to easily store Ethernet settings in EEPROM. Additional documentation a blog post.
- CmdMessenger - uses the serial port as transport layer.
- sserial2mobile - send text messages or emails using a cell phone (via AT commands over software serial).
- Webduino - extensible web server library for use with Wiznet-based Ethernet shields.
- xbee-arduino - communicating with XBees in API mode, with support for both Series 1 (802.15.4) and Series 2 (ZB Pro/ZNet).
- SerialControl - control Arduinos over a serial connection.
- See also SketchList#Communication_code and TutorialList#Communication
- Arduino MD5:An easy-to-use MD5 library for the Arduino, for all your hashing needs.
- Entropy: is an Arduino library that provides tested mechanism of producing cryptographically sound truly random numbers.
- SipHash:SipHash implementation for Arduino. Small and fast. Avoids the deficiencies and failings of MD5 hashing. See https://131002.net/siphash/ for the details of the algorithm.
- OATH TOTP:An Arduino library to generate TOTP (Time-based One Time Password) codes following the OpenAuthentication RFC 6238.
Data Structures and Algorithms
Home Automation and IoT
- Souliss - Arduino Home Automation with Android User Interface - Home Automation and Internet of Things framework to use your Arduino as domotic system, based on distributed structure, you can use more nodes in your home, either wireless and wired. User interaction via Android application or Modbus interfaces.
Input / Output
- Button is a customizable library for handling button press, it has the ability of detecting a bounced press, as well as differentiating a long press from a short one.
- PS2Keyboard - Get input form a PS2 Keyboard.
- PS2uart Keyboard - Combine TVout and PS2Keyboard, so you can make a TV typewriter, or some kind of interactive computer.
- Simple Voltmeter Class - uses the internal reference voltage (1.1V) to get an absolute voltage reading; can even be used to read own power source voltage value
- OneWire Interface (Atmel QTouch)
- OneWire - Dallas Semiconductor's 1-Wire Protocol
- H48C - Library for use of Parallax H48C module
- PIDLibrary - Provides basic feedback control
- PIDAutotuneLibrary - Provides tuning parameters for the PID Library.
- Ping - Simplify the usage of Ping))) Ultrasonic Sensors
- DigitalToggle - register based pin toggle library
- TButton - Toggle a pin using a momentary button
- MomentaryButton - track short taps and long presses on a momentary button
- Morse - sends without blocking (no delay()) and which uses String instead of char*
- Morse endecoder - Another non-blocking Morse code library, both encoding (sending) and decoding (audio or digital/keyer), asynchronously.
- FancyLED - Another simple hardware abstraction library that enables blinking "N" times at custom rates, toggling, has a "fuse" example that allows for blinking to start after some lead time.
- AnalogDebounce Voltage Divided Analog Keypad Input debounce library. Official Discussion Thread
- Button (carlynorama) Another button abstraction library. Event based, also allows for being used with shift registers, debounce, holdDelay (like keyboards) etc. Lots of examples.
- N64Controller Library Supports N64 controllers on various pins. Based on this work.
- (Serial) Dbg A Serial Debugger class that supports printf syntax.
- SyncLED An LED class for blinking patterns and numbers asynchronously. Includes PWM support for smooth fade blinking.
- RGBlink RGB-LED class with support for HSB-colors and non-blocking blinking and fading
- AtTouch A library for the Atmel AT42QT1070 7-channel Touch Capacitance Sensor IC via i2c
- SerialLCD A library for easy hardware serial interface with SparkFun 20x4 Serial Ready LCD screen. Based on SfLCD2
- shiftOutX A library to easily add up to 64 or more digital outputs to an Arduino by using 74HC595 shift Registers.
- MCP23S17 A Class for the MCP23S17 SPI I/O Expander.
- MCP4822 A simple interface to the MCP4822 and similar DAC chips.
- triColorLEDs A class for easy manipulation of triColorLEDs; requires 3 PWM outputs.
- ArduinoRCLib A library for reading/writing PPM and Servo signals as well as various functions for creating a helicopter or fixed wing oriented transmitter/flight controller.
- SoftTimer is a time sharing solution for Arduino. It has build in software implementation for PWM, Debouncer, Blinker, etc.
- EasyButton - EasyButton provides various features for handling buttons easily and without complications.
- Switch - Very small and simple debounce class for switches and buttons with a straightforward interface. External pull-up resistors are not required. Supports also long press and double clicks.
- SimpleSoftwareServo drives servos on any number of pins at once, like SoftwareServo, except with cleaner inter-pulse timing.
- digitalInput A class to easily handle a digital input pin with '==' operator, checking toggle state ecc..
- SNESpaduino - Use a Super Nintendo gamepad as input for an Arduino. NES pad compability and Gamepad emulators to be added!
- VaRGB - RGB illumination programming library, works with Arduino (or any platform that supports C++) and any RGB lighting (simple LEDs, ShiftBrite/MegaBrite, LED strips, etc). VaRGB allows you to setup simple or complex behaviour using schedules of transition curves.
- TEA5767Radio - Library for the TEA5767 FM Radio chip
- Arduino DUE Parallel Bus - Configures Arduino DUE's external memory bus for interfacing with memory devices/LCDs with an Address/Data Bus.
- CY8C95X0 - Class for handling CY8C9560, CY8C9540 and CY8C9520 i2c I/O Expander chips with internal adjustable PWM controllers.
- ShiftEasier - ShiftEasier provides various features for handling shiftregisters like 74HC595 easily and without complications.
- Arduino/Wiring SoftPWM Library - produce PWM signals on any arbitrary pin, up to 20 channels, fade function, inverted action option.
- arduino-softpwm - Software PWM library for Arduino. Features include: PWM frequency change, brightness levels, inverted action, and interrupt load test. In the latest version each channel is delayed by 1 PWM clock cycle to prevent large in-rush currents. If you don't need this feature then use this version.
- CapacitiveSensor - turns two or more Arduino pins into a capacitive sensor.
- Bounce - debounces digital inputs and more.
- AnalogScanner - A library for reading the analog inputs using the ADC Conversion Complete Interrupt rather than busy-waiting as in analogRead(). The caller can specify an arbitrary order for reading the inputs. Once scanning is started, the analog values are read as fast as possible. Callers can periodically get the latest values or set up callback functions to process the values as they are read.
multiple LED control
- Charlieplex - simplifies the coding of charlieplexed networks.
- Chaplex - another solution for controlling a structure of charlieplexed leds.
- TLS3008 is a library that eases the control of RGB LEDs strings using the TLS3008 LED driver.
- GEColorEffects A library for controlling GE Color Effects RGB LED holiday light strings via a one-wire protocol
- LED matrix multi-displays Library and exemple code to control multiple 32x8 LED matrix display boards daisy-chained together in any combination. Up to 8 displays can be controlled.
- PcInt - simple pin change interrupts
- PinChangeInt - Preformance and size improved revision to PCInt
- PciManager is an other implementation for helping developers to use PCI. You can register more listeners on more pins that should be launched on pin change.
- serLCD - Sparkfun serLCD Library
- LiquidCrystal use SPI and A 74HC595 shift register with Arduino's LiquidCrystal library.
- AXE133Y Software library for picaxe AXE133Y OLED 16x2 module
- LCDBitmap - Display graphics on a normally text-only LCD display
- Parallax LCD - Updated library to work with Parallax LCDs
- LCD_I2C Software library for LCD with I2C back pack.
- BigCrystal - Print double height characters on an LCD. Also BigCrystalTWI for displays connected with an I2C backpack.
- ArdGrafix6100 - A fast, full-featured graphics driver for Nokia 6100 LCDs
- NokiaLCD - Library for Philips based controller for Nokia 6100 Breakout Board
- Serial_LCD library suite for 4D Systems µLCD, µOLED and µVGA screens. It manages text, graphics, touch, read and write on SD-card, sound, through a single serial interface, either hardware, software or I²C. High-level commands offer GUI, graphics, power-saving and even a picture frame!
- LCDBitmap - Display graphics on a normally text-only LCD display
- SmartGPU 2 Library for SmartGPU 2 intelligent embedded graphics processor.
- GFX - Adafruit GFX graphics core library.
- GLCDks0108 - supports Graphic LCDs (GLCD) that use the KS0108 (or equivalent) chip.
- Stepper Robot a library for controlling a robot powered by two stepper motors in differential configuration.
- Microsmooth is a lightweight and fast signal smoothing library for the Arduino platform.
Schedulers and Pseudo Operating Systems
- os_wrap - OS wrapper: Tasks using cooperative multitasking, Semaphores, Message Queues, Timers, Odometer, EEPROM logging.
- EventFuse - Recurring events via a software count-down
- Aiko - A small modular, event-driven framework for structuring Arduino sketches
- Event System - includes events, an event queue class and a dispatcher class
- Finite State Machine Library for organizing complicated sketches.
- QP - The QP state machine framework for Arduino, which is like a modern event-driven RTOS specifically designed for executing state machines.
- Scheduler - Simple scheduling of function calls.
- SCoop - A Simple Cooperative Scheduler for both ARM and AVR with Task, timers, event and fifo handling. All in one SCoop.h library compatible with "Android Scheduler"
- ArduOS - a small preemptive multitasking-system for AVR, that allows to add schedulers - revised
- SMlib - a novel and relaxed approach to state finite state machines
easy-to-use ultrasonic driver.
- The EEPROMex library extends the standard EEPROM library with reading, writing bytes, longs, ints, floats and doubles, single bits, structs, arrays and more.
- A function for seeing how much memory (RAM) is available
- DB A simple database library for reading and writing to tables stored in EEPROM
- A set of functions to dynamically allocate arrays
- EDB An extended database library based on DB allowing for more records, larger records size, and external EEPROM storage
- Mikal Hart's Flash library - allows you to easily store strings, arrays, and tables in read-only memory without the hassle and complexity of learning PROGMEM programming.
- SCLib can be used to communicate to all kinds of smartcards (synchron and asynchron). Also a specialized support class for SLE4432 / SLE4442 compatible smartcards exists.
- PString: A very lightweight string class that enables printing to buffer using the same code as Serial.print().
Testing, Utilities and Power Saving
- ArduinoUnit - Test suite
- Enerlib: easy-to-use wrapper for AVR's Sleep library.
- Sleep_n0m1: A Library to sleep for a specific length of time or until interrupt.
- Logging: easy-to-use logging library like log4j.
- Timer simple to use timed pin control and callbacks.
- swRTC - A software RTC (Real-Time Clock) based on timers available for Arduino and several microcontrollers
- Timer1 - Pwm, interrupt and stopwatch utilities for 16bit timer1.
- Timer2_Counter - A generic Arduino micros()-equivalent timing function with 0.5us precision (rather than the 4us precision of the built-in micros() function). --This allows, as one example, a very precise reading of Radio-Control (RC) PPM and PWM signals, from an RC transmitter and receiver, respectively, using external interrupts, with*out* using the Atmega Timer1 which would disable use of the Servo library. Tested only on Arduinos with an Atmega328 microcontroller.
- Frequency Counter - using Timer1
- MsTimer2 - library to use Timer2 on milliseconds.
- FlexiTimer2 - library to use Timer2 with a configurable interval.
- elapsedMillis - a library that makes it easy to check if a certain time has elapsed (without blocking other code from running in the mean time) and handles millis() rollover
- Frequency generation using a hardware timer to drive a pin accurately or generate a periodic interrupt calling a function you supply.
- Metro - Implementation of recurring timed events like blinking LEDs or servo motor control
- TimedAction - a resource-friendly library for Timed Actions that occur every x millisecond.
- SimpleTimer simple library to launch timed actions.
- StopWatchClass - measure elapsed time with this elementary StopWatch Class based upon millis()
- Time - Software real time clock
- Tween Class - for ramps (PWM fades, for instance)
- millis() Rollover Handling - a function for detecting and handling rollover of the millis()
- Prescaler - easy get/set of the prescaler and alternative functions to millis() / delay()
- DCF77 - library to use DCF77 radio signal to set internal clock to atomic time
- dcf77 - noise resilent DCF77 library
- SoftTimer in an easy to use, but very effective time sharing solution with some useful tools included. Like PWM, Debouncer, TonePlayer, Blinker.
- TaskAction - a library for task actions over the time very easy.
- ArduinoTimer - set of libraries which adds configurable and asynchronous timer support for Arduino (one library for each of the following: Timer1, Timer3, Timer4 and Timer5)
- FreqPeriodCounter – Versatile frequency counter which measures frequency, period, pulse width etc. Can be used interrupt triggered or polled.
- Stopwatch – Small and easy to use library for measuring interval times. Can also be used to measure the execution time of a piece of code
- https://github.com/Byron-Watkins/Timer - Powerful interrupt-driven software timer library; timer timeout calls user function and passes a pointer to a user object. User can write his callback to manipulate the object and the object can control hardware and/or software states.