Throughout my various Arduino-based projects I have made use of quite a number of excellent libraries that are not part of the standard Arduino IDE. I am very aware that libraries can be updated by the Authors, and potentially prevent my sketches from running properly if someone uses a different version of the library from the one I used to develop the project. Also the sites hosting the library can simply disappear or shift thereby stranding anyone trying to make use of my sketches but being unable to find the appropriate library. So I have gone through my archives and gathered up all the libraries I have used in my projects and will host them on my website so they are available in a form that is usable for the projects I describe and not likely to vanish without warning. I have checked through the license agreements for each (where they have one) and found that they all allow redistribution.

I have made no modifications to these libraries other than to repack them as zipped archives that the Arduino IDE can handle – i.e. won’t complain about non ASCII characters.

All credit for these libraries goes to the Authors. Hopefully I have identified the Authors and original websites correctly.


Easy Transfer Library

The Easy Transfer library is an efficient arrangement for the exchange of data between two arduinos over a Serial or I2C connection. This is from Bill Porter. You can find the latest versions and more information about the library on his Website

You can download this library from here:

This library is used in the ROV project.


The TM1637 4-Digit Display Library

The TM1637 4-Digit Display Library was written by Avishorp to drive the TM1637 chip based displays such as the Seeedstudio Grove displays. The latest edition of this library can be found on

You can also download this library from here:

This library is used in the early editions of the ROV control system and also the camera slide project. A page with a simple demonstration of using this bit of kit and this library can be found here.


Playstation 2 Controller Library

The PS2X library is another from Bill Porter and is used to interface a Playstation 2 Controller with an Arduino. You can find the latest version and more information about the library on his Bill Porter’s website

You can download this library from here:

This library is used in the ROV project.


BMP180 Barometric Pressure Sensor Library

The BMP180 is an I2C barometric pressure and temperature sensor. There are a number of different libraries out there for this device but this one works well and is quite elegant. It was originally written by Love Electronics Ltd but they seem to have disappeared but it can be downloaded from the Embedded-Lab website.There appeared to be an error in the BMP180.h file (line 26) which prevented it from compiling properly. In the file linked below I have taken the liberty of changing this line to the standard format for importing the Wire library.

You can download this (barely) modified library from here:

The BMP180 has an I2C address of 0x77.

This library is used in the Pressure and Temperature Logger (Page to come) and will probably be used in the ROV as an internal leak monitor.


MS5803-14BA High Pressure Sensor Library

The MS5803-14BA is a waterproof pressure sensor capable of measuring pressures up to 14 bar. There are some interesting projects developing opensource underwater monitors and they are also used on the OpenROV. There are several libraries around but the one that appears to be the most rigorous and most elegant to use is the one by Luke Miller. You can find this on his github repository and also see how he has used it on his website.

You can also download the library from here:

The MS5803-14BA high pressure sensor on the breakout board I use (which is the same as the Sparkfun one (even down to the error in the device’s name printed on the PCB) set to use I2C communication on address 0x76.

This library will be used in the ROV project control sketches where the MS5803-14BA will be used as the depth sensor. It is used in the Pressure and Temperature Logger (Page to come).


OneWire Library

The OneWire library is used for communicating with misleadingly named OneWire devices such the DS18B20 temperature sensor. The library is the work of Paul Stoffregen and the latest version can be found on his website: The link for downloading the latest official version is:

You can also download the library from here:

This library is used in the series of mini-projects illustrating temperature sensors. It is unlikely to find use anywhere else, because the cost of getting the DS18B20s here in New Zealand is so ridiculous that I use other sensors instead.


AccelStepper Library

AccelStepper is a library for controlling various stepper motors drivers such as the Pololu commonly found on 3D Printers and the EasyDriver boards. There are a number of libraries around for stepper motor control but this is the most effective one I have found. The official website for documentation is

The official download location is for the latest and greatest.

There is some good documentation on the AccelStepper library and an older version of the library on the PJRC website:

You can also download the library from here:

This library is used on the Camera Slide project.


Timers and Time Related Things

The following libraries come from Paul Stoffregen’s website and are intended to be used together in projects that make use of real time clocks and accurate timekeeping. The official webpages for these libraries are:

Time Library

TimeAlarms Library

and the DS1307 Real Time Clock Library

All three libraries are bundled into this zip file for easy download:

These libraries are used in the Hot Water Cylinder Controller project and most of the development sketches associated with that project.


GY87 IMU libraries

The following bundle of libraries are for the sensors onboard the GY87 IMU motion sensor board. The sensors are the MPU6050 accelerometer and gyro, the HMC5883L digital compass, and the BMP180 barometric pressure sensor. The MPU6050 and HMC5883L libraries also require the i2cdevlib library to be installed. This is included here too.

The MPU6050, i2cdevlib, and HMC5883L libraries are from Jeff Rowberg

and the BMP180 library from love Electronics Ltd: BMP180

You can download the zip packaged containing these libraries from here:

Note: The HMC5883L is not detected because of some sort of blocking that occurs. A discussion thread on the Arduino forum identified a solution which was to add the following line into the setup part of the sketch. The ```accelgyro`` is just the given object name for the MPU6050.


See this GY87 Test Sketch page for this in action. It is part of the Homebuilt VR system development.


LEDDisplay74HC595 library for a 4-Digit Display

This library makes it easy to talking to a 4-Digit display based on the 74HC595 shift registers. This is thanks to chrizzzzz. You can find the official repository on Github.

You can also download a snapshot copy from here:


Phew! Hopefully this has future proofed these projects a little.