All Projects → stevemarple → SoftWire

stevemarple / SoftWire

Licence: LGPL-2.1 license
Software I2C implementation for Arduino and other Wiring-type environments

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to SoftWire

miniboot
🏗️ An I2C bootloader for Arduino.
Stars: ✭ 62 (-40.95%)
Mutual labels:  i2c, arduino-library
gfx demo
GFX Demo for Arduino and the ESP-IDF
Stars: ✭ 63 (-40%)
Mutual labels:  i2c, arduino-library
arduino-mcp23017
Complete support of MCP23017
Stars: ✭ 44 (-58.1%)
Mutual labels:  i2c, arduino-library
PCF8591 library
Library to use i2c analog IC with arduino and esp8266. Can read analog value and write analog value with only 2 wire (perfect for ESP-01).
Stars: ✭ 24 (-77.14%)
Mutual labels:  i2c, arduino-library
I2C EEPROM
Library for I2C EEPROM - 24LC256
Stars: ✭ 27 (-74.29%)
Mutual labels:  i2c, arduino-library
BME680
Arduino Library to access the Bosch BME680 - temperature, pressure, humidity and gas sensor
Stars: ✭ 30 (-71.43%)
Mutual labels:  i2c, arduino-library
SerialTransfer
Arduino library to transfer dynamic, packetized data fast and reliably via Serial, I2C, or SPI
Stars: ✭ 273 (+160%)
Mutual labels:  i2c, arduino-library
MCP7940
Arduino Library to access the MCP7940M, MCP7940N and MCP7940x Real-Time chips
Stars: ✭ 29 (-72.38%)
Mutual labels:  i2c, arduino-library
arduino-sht
Repository for Sensirion humidity and temperature sensor support on Arduino
Stars: ✭ 43 (-59.05%)
Mutual labels:  i2c, arduino-library
PCF8575 library
Library to use i2c digital expander with arduino, esp8266 and esp32. Can read write digital value with only 2 wire (perfect for ESP-01).
Stars: ✭ 28 (-73.33%)
Mutual labels:  i2c, arduino-library
Nintendoextensionctrl
Arduino library for communicating with Nintendo extension controllers
Stars: ✭ 67 (-36.19%)
Mutual labels:  i2c, arduino-library
Ssd1306
Driver for SSD1306, SSD1331, SSD1351, IL9163, ILI9341, ST7735, PCD8544, Nokia 5110 displays running on Arduino/ESP32/Linux (Rasperry) platforms
Stars: ✭ 303 (+188.57%)
Mutual labels:  i2c, arduino-library
Liquidmenu
Menu creation Arduino library for LCDs, wraps LiquidCrystal.
Stars: ✭ 141 (+34.29%)
Mutual labels:  i2c, arduino-library
MCP79412RTC
Arduino library for the Microchip MCP79411/12 Real-Time Clock/Calendar
Stars: ✭ 20 (-80.95%)
Mutual labels:  arduino-library
io
Go drivers for pheripheral I/O on Linux.
Stars: ✭ 20 (-80.95%)
Mutual labels:  i2c
go-hd44780
Golang library to interact with liquid-crystal display driven by Hitachi HD44780 IC via I2C-bus driver from Raspberry PI.
Stars: ✭ 31 (-70.48%)
Mutual labels:  i2c
G-Code-Arduino-Library
Allows any machines and robots to be controlled by G-Code
Stars: ✭ 44 (-58.1%)
Mutual labels:  arduino-library
FastX9CXXX
Arduino library for digital potentiometers X9C102, X9C103, X9C104 and X9C504
Stars: ✭ 36 (-65.71%)
Mutual labels:  arduino-library
arduino-capacitor
Capacitance measurement library for Arduino
Stars: ✭ 19 (-81.9%)
Mutual labels:  arduino-library
Adafruit MCP3008
MCP3008 8-Channel 10-Bit ADC
Stars: ✭ 22 (-79.05%)
Mutual labels:  arduino-library

SoftWire

Introduction

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 override the functions which control the SDA and SCL lines, and read SDA and SCL, 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 and multiple masters are not supported.

Low-level functions can be used to send start, and stop signals, and to read and write data; no buffers are required. In addition high-level functions provide almost direct compatibility with the Wire library. However, the user must first declare transmit and receive buffers, and configure SoftWire to use them before the high-level functions beginTransmission(), endTransmission(), read(), write() and requestFrom () can be used. Notify SoftWire of the buffers by calling the setTxBuffer() and setRxBuffer() functions, passing in a pointer to a byte or character buffer and the size of the buffer. See the ReadDS1307 fort an exmaple of how this is done.

It is possible to assign (and reassign) the pins associated with SCL and SDA at run-time using the functions setScl() and setSda().

Important changes for users of the v1.* library

To support the high-level functions required for compatibility with the Wire library the original low-level write() function has been renamed llWrite().

The setter functions setSdaLow(), setSdaHigh(), setSclLow(), setSclHigh(), setReadSda(), setReadScl() must be used to override the functions which control and read the SDA and SCL signals.

The functions which actually set SCL/SDA low/high are now named sclLow(), sdaLow(), sclHigh() and sdaHigh(). These functions should not be called directly in normal use but may be required to force some devices into low-power mode.

License

The SoftWire library is licensed with the GNU Lesser General Public License. See LICENSE.txt for details.

Requirements

The AsyncDelay library is required, see https://github.com/stevemarple/AsyncDelay

Contributors

Credits

This library is inspired by Peter Fleury's i2cmaster library.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].