The I2C Device Library (i2cdevlib) is a collection of uniform and well-documented classes to provide simple and intuitive interfaces to I2C devices, made by Jeff Rowberg.
My effort is to make this library works on Raspberry Pi devices without minimum tweaks of code. Therefore, we will gain benefits of further update from the original project.
The library only tested on devices I already have. Testing progress are reported at Supported Devices table. All contribution of coding or testing devices are welcome.
This project inherits The MIT license from original project.
- Copyright 2012 Gordon Henderson (wiringPi)
- Copyright 2012 Jeff Rowberg (i2cdevlib)
- Copyright 2019 Thinh Pham (i2cdevlib-pi)
For now as project is under reforging, I recommend you to compile and install from source manually:
$ git clone https://github.com/mrlordkaj/i2cdevlib-pi.git
$ cd i2cdevlib-pi
$ make
$ sudo make install
Basic wiring for I2C devices:
| Raspberry Pi | I2C Device |
|---|---|
| 3V3 | VCC |
| GND | GND |
| Clock | SCL |
| Data | SDA |
Create hello.cpp source file:
#include <unistd.h> // standard libs
#include <Arduino.h> // abstract layer
int main() {
printf("Arduino %d\r\n", getArduino());
return 0;
}And build it by g++ tool with linker -li2cdev.
$ g++ hello.cpp -o hello -li2cdev
Compiled program will print out string Arduino 10812 to your terminal:
$ ./hello
Most of devices come with various demos. This section guides you how to build MPU6050 demos (other demos can be built by the same way).
Make sure you are working on the root directory of the project, then enter MPU6050 directory:
$ cd MPU6050
Head to the Supported Devices table below, you see MPU6050 module has raw, dmp6, and teapot demos.
In order to build all, run make with specified target:
$ make CONF=raw
$ make CONF=dmp6
$ make CONF=teapot
NOTE: freeglut3-dev is required for teapot demo.
After make processes done, executable demos will available in dist directory, try to run it:
$ ./dist/teapot
| Device | Build Status | Tested | Demos |
|---|---|---|---|
| AD7746 | Passed | No | - |
| ADS1115 | Passed | No | single, differential |
| ADXL345 | Passed | No | raw |
| AK8963 | Passed | No | - |
| AK8975 | Passed | No | raw, mpu_raw, mpu_heading |
| BMA150 | Passed | No | raw |
| BMP085 | Passed | No | basic |
| DS1307 | Passed | No | tick |
| HMC5843 | Passed | No | raw |
| HMC5883L | Passed | No | raw |
| HTU21D | Passed | No | simple |
| IAQ2000 | Passed | No | demo |
| ITG3200 | Passed | No | raw |
| L3G4200D | Passed | No | raw |
| L3GD20H | Passed | No | basic |
| LM73 | Passed | No | - |
| LSM303DLHC | Passed | No | test |
| MPR121 | Passed | No | - |
| MPU6050 | Passed | Yes | raw, dmp6, teapot |
| MPU9150 | Passed | No | raw |
| MS5803 | Passed | No | test |
| SSD1308 | Passed | No | - |
| TCA6424A | Passed | No | - |
