Software I2C library.
SoftWire is a software I2C implementation for Arduino and other Wiring-type environments. It utilises the pinMode(), digitalWrite() and digitalRead() functions. The pins to be used for the serial data (SDA) and serial clock (SCL) control lines can be defined at run-time. Alternatively it is possible to pass references to functions which read and control the SDA and SCL lines, thereby allowing direct port manipulation to be used if preferred. Multiple objects (for multiple software I2C buses) and clock-stretching by slave devices are supported. A timeout feature is included to prevent lockups by faulty or missing hardware. The microcontroller must function as the master device, multiple masters are not supported. GNU LGPL v2.1.

Author: Steve Marple

Maintainer: Steve Marple

Read the documentation


This library is compatible with all architectures so you should be able to use it on all the Arduino boards.


To use this library, open the Library Manager in the Arduino IDE and install it from there.