|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Tinygo||13,722||a day ago||39||September 21, 2023||496||other||Go|
|Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.|
|Gobot||8,536||20||31||2 days ago||32||October 30, 2023||123||other||Go|
|Golang framework for robotics, drones, and the Internet of Things (IoT)|
|I2cdevlib||3,636||6 months ago||257||C++|
|I2C device library collection for AVR/Arduino or other C++-based MCUs|
|Esp8266 Oled Ssd1306||1,880||5 months ago||21||other||C|
|Driver for the SSD1306 and SH1106 based 128x64, 128x32, 64x48 pixel OLED display running on ESP8266/ESP32|
|Attinycore||1,424||13 days ago||25||other||C|
|Arduino core for ATtiny 1634, 828, x313, x4, x41, x5, x61, x7 and x8|
|Avr Hal||1,049||5 days ago||7||November 06, 2023||78||apache-2.0||Rust|
|embedded-hal abstractions for AVR microcontrollers|
|Ttgo T Display||824||9 months ago||65||mit||C|
|Waterius||517||3 days ago||36||lgpl-3.0||C++|
|Передача показаний воды по Wi-Fi. Watermeter Wi-Fi transmitter.|
The I2C Device Library (i2cdevlib) is a collection of mostly uniform and well-documented classes to provide simple and intuitive interfaces to I2C devices. Each device is built to make use of the generic "I2Cdev" class, which abstracts the I2C bit- and byte-level communication away from each specific device class, making it easy to keep the device class clean while providing a simple way to modify just one class to port the I2C communication code onto different platforms (Arduino, PIC, MSP430, Jennic, simple bit-banging, etc.). Device classes are designed to provide complete coverage of all functionality described by each device's documentation, plus any generic convenience functions that are helpful.
There are examples in many of the classes that demonstrate basic usage patterns. The I2Cdev class is built to be used statically, reducing the memory requirement if you have multiple I2C devices in your project. Only one instance of the I2Cdev class is required. Recent additions as of late 2021 have also made it possible to pass in non-default
Wire objects (in the Arduino environment) to allow using multiple I2C transceivers at the same time, specifically because of the number of people who wanted to use up to four MPU-6050 IMUs without I2C mux ICs involved.
Documentation for each class is created using Doxygen-style comments placed in each class definition file, based on the information available in each device's datasheet. This documentation is available in HTML format on the i2cdevlib.com website, which also holds helpful information for most of the classes present here on the repository.
Due to my...ahem...unfortunate ignorance way back when I first created this project, the entire codebase (all platforms, cores, and device libraries) are all inside of this one giant repository. That means there's no easy IDE integration the way most libraries work in the Arduino world and elsewhere. Instead, do the following:
/Arduino/MPU6050folders, for example)
For both usage and development, I've found that it's best to clone using the git client of your choice, and then create symlinks as needed from the master repository sources into your development location(s). This is usually more intuitive for people who use Linux, but it can be done in Windows as well using the
mklink /D command. See this page for a set of Windows-specific instructions with screenshots.
Exact usage varies from device to device, but most (especially the more popular ones) include example projects demonstrating the basics. Refer to those examples for the best material currently available.
Want a library for a device that isn't up on the repository? You can either request it in the discussion area for this repo on Github, or fork the code and write it yourself.
Realistically, Option B is more reliable. Try to mimic the structure and code conventions of the existing codebase as much as possible. If you go this route, please use the following approach:
I and a few others will review the pull request and comment as needed, and then hopefully merge it.
Note: additional details about this project can be found at https://www.i2cdevlib.com