Libraries for Arduino
This is an addition to the Libraries page that describes Standard and Contributed libraries. You can add your own libraries here.
Navigation
Audio
- SimpleSDAudio library: Play audio files with your Arduino in decent quality from SD card, only very few additional hardware required, easy to use library.
- 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
- SMARTWAV-intelligent Stereo Audio processor
- 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. Currently entering its alpha stage.
- PCM/WAV Playback - Asynchronous playback of pcm/wav audio files from SD card, using only timer pins.
Cloud
- Exosite send and receive data to/from the cloud by using Exosite's Cloud Data Platform.
Communications
- WebSerial - WebSerial makes it easy for web browsers to communicate with Arduino over Ethernet, just like with the built in Serial interface. WebSerial includes simple javascript and Arduino libraries.
- 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.
- 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.
- 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)
- multiCamereIrControl Library, controlling Nikon, Canon, Sony, Minolta, Olympus and Pentax cameras just with an IR LED.
- http://geekcowboy.net/downloads/x10.zip: A library to both send and receive the X10 home automation communication protocol messages.
- TwitterLibrary assists in posting your data to twitter
- UComms 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 WiShield library. It provides ability to read and write to pins and EEPROM, but also ability to receive REST callbacks on changes.
- TLS3008 is a library that eases the control of RGB LEDs strings using the TLS3008 LED driver.
- 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.
Cryptography
- Arduino MD5:An easy-to-use MD5 library for the Arduino, for all your hashing needs.
- Entropy:Entropy is an Arduino library that provides tested mechanism of producing cryptographically sound random numbers.
Data Structures and Algorithms
Home Automation and IoT
- http://www.souliss.net - 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. User interaction via Android application or Modbus interfaces.
Input / Output
- TVout - Display graphics on a composite video TV, All you need is a couple of resistors.
- 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.
- SoftPWM - Software based PWM library that moves any pin between any 2 states (low, high, high impedence, or pull up)
- 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)
- GetOneWireTemp
- 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
- Charlieplex - simplifies the coding of charlieplexed networks.
- Chaplex - another solution for controlling a structure of charlieplexed leds.
- 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
- getOneWireTemp
- Morse is a library which speaks morse code
- Morse (another): 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.
- PCA9685 test code: Simple test code interfacing I2C with PCA9685 pwm chip.
- 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
- GEColorEffects A library for controlling GE Color Effects RGB LED holiday light strings via a one-wire protocol
- 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.
Interrupts
- 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.
LCDs (Textual)
- 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
LCDs (Graphical)
- SMARTGPU
- SMARTGPU-intelligent graphics processor , SMARTGPU board
- ArdGrafix6100 - A fast, full-featured graphics driver for Nokia 6100 LCDs
- NokiaLCD - Library for Philips based controller for Nokia 6100 Breakup 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
Math
Motor Drivers
Robotics
- TirinoBot - TirinoBot is a set of libraries and programs for use with Arduino-based robots. It is intended to provide support for most common sensors and drivers and simplify the task of building an Arduino-based, multiple Arduino-based or combined hybrid PC/Arduino-based robot.
Feb 2013: GONE??? Any working Links???
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"
Sensors
easy-to-use ultrasonic driver.
Storage
- 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.
Strings
- 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.
Timing
- 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.
- Frequency Counter - using Timer1
- MsTimer2 - - library to use Timer2 on milliseconds.
- FlexiTimer2 - library to use Timer2 with a configurable interval.
- 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
- 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.
Graphing Data