{"id":13894378,"url":"https://github.com/stevemarple/SoftWire","last_synced_at":"2025-07-17T09:32:16.304Z","repository":{"id":9355338,"uuid":"11207726","full_name":"stevemarple/SoftWire","owner":"stevemarple","description":"Software I2C implementation for Arduino and other Wiring-type environments","archived":false,"fork":false,"pushed_at":"2024-06-02T09:37:16.000Z","size":79,"stargazers_count":136,"open_issues_count":7,"forks_count":31,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-07T18:30:10.134Z","etag":null,"topics":["arduino","arduino-library","i2c","software-i2c"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stevemarple.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-05T20:15:08.000Z","updated_at":"2024-08-03T18:19:35.000Z","dependencies_parsed_at":"2022-08-31T14:00:25.411Z","dependency_job_id":null,"html_url":"https://github.com/stevemarple/SoftWire","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemarple%2FSoftWire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemarple%2FSoftWire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemarple%2FSoftWire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemarple%2FSoftWire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stevemarple","download_url":"https://codeload.github.com/stevemarple/SoftWire/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226248316,"owners_count":17595158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-library","i2c","software-i2c"],"created_at":"2024-08-06T18:01:30.991Z","updated_at":"2024-11-24T23:30:37.283Z","avatar_url":"https://github.com/stevemarple.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# SoftWire\n\n## Introduction\n\nSoftWire is a software I2C implementation for Arduino and other\nWiring-type environments. It utilises the `pinMode()`,\n`digitalWrite()` and `digitalRead()` functions. The pins to be used\nfor the serial data (SDA) and serial clock (SCL) control lines can be\ndefined at run-time. Alternatively it is possible to override the\nfunctions which control the SDA and SCL lines, and read SDA and SCL,\nthereby allowing direct port manipulation to be used if preferred.\n\nMultiple objects (for multiple software I2C buses) and\nclock-stretching by slave devices are supported. A timeout feature is\nincluded to prevent lockups by faulty or missing hardware. The\nmicrocontroller must function as the master device and multiple\nmasters are not supported.\n\nLow-level functions can be used to send start, and stop signals, and\nto read and write data; no buffers are required. In addition\nhigh-level functions provide almost direct compatibility with the Wire\nlibrary. However, the user must first declare transmit and receive\nbuffers, and configure SoftWire to use them before the high-level\nfunctions `beginTransmission()`, `endTransmission()`, `read()`, `write()` and\n`requestFrom ()` can be used. Notify SoftWire of the buffers by calling the\n`setTxBuffer()` and `setRxBuffer()` functions, passing in a pointer to a\nbyte or character buffer and the size of the buffer. See the [ReadDS1307](examples/ReadDS1307/ReadDS1307.ino) fort an exmaple of how this is done.\n\nIt is possible to assign (and reassign) the pins associated with SCL and SDA\nat run-time using the functions `setScl()` and `setSda()`.\n\n## Important changes for users of the v1.* library\n\nTo support the high-level functions required for compatibility with\nthe Wire library the original low-level `write()` function has been\nrenamed `llWrite()`.\n\nThe setter functions `setSdaLow()`, `setSdaHigh()`, `setSclLow()`,\n`setSclHigh()`, `setReadSda()`, `setReadScl()` must be used to\noverride the functions which control and read the SDA and SCL signals.\n\nThe functions which actually set SCL/SDA  low/high are now named\n`sclLow()`, `sdaLow()`, `sclHigh()` and `sdaHigh()`. These functions\nshould not be called directly in normal use but may be required to\nforce some devices into low-power mode.\n\n## License\n\nThe SoftWire library is licensed with the GNU Lesser General Public\nLicense. See LICENSE.txt for details.\n\n## Requirements\n\nThe AsyncDelay library is required, see\n[https://github.com/stevemarple/AsyncDelay](https://github.com/stevemarple/AsyncDelay)\n\n## Contributors\n\n* [Steve Marple](https://github.com/stevemarple)\n* [Matthijs Kooijman](https://github.com/matthijskooijman)\n* [Phonog](https://github.com/Phonog)\n* [Tutoduino](https://github.com/tutoduino)\n* [Brian Park](https://github.com/bxparks)\n* [Wayne Piekarski](https://github.com/waynepiekarski)\n* [nerdyscout](https://github.com/nerdyscout)\n\n## Credits\n\nThis library is inspired by Peter Fleury's i2cmaster library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevemarple%2FSoftWire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstevemarple%2FSoftWire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevemarple%2FSoftWire/lists"}