Библиотека iarduino_I2C_Software позволяет создавать программные шины I2C используя любые выводы микроконтроллера. Можно создать шину I2C на тех микроконтроллерах, где её нет, или уже задействованы выводы аппаратной шины I2C. Создав несколько шин I2C вы сможете подключить несколько датчиков с одинаковыми адресами.
Библиотека iarduino_I2C_Software имеет тот же синтаксис, что и библиотека Wire.h и поддерживает все её методы и функции для работы в качестве мастера. Обе библиотеки могут работать в одном скетче, так объекты библиотек создаются как экземпляры разных классов:
TwoWire
.SoftTwoWire
.Подробное описание работы с библиотекой iarduino_I2C_Software, находится в разделе Wiki - Работа с программной шиной I2C.
#include <iarduino_I2C_Software.h> // Подключаем библиотеку.
SoftTwoWire ОБЪЕКТ( SDA , SCL ); // Создаём объект указав выводы SDA и SCL.
Функция begin(); // Инициализация в роли ведущего (master).
Функция begin( АДРЕС ); // Инициализация в роли ведомого (slave).
Функция setPins( SDA , SCL ); // Указание выводов шины I2C.
Функция getPins( &SDA , &SCL ); // Получение выводов шины I2C.
Функция end(); // Отключение выводов шины I2C.
Функция setClock( ЧАСТОТА ); // Указание скорости передачи данных.
Функция setWireTimeout( ВРЕМЯ [,СБРОС] ); // Указание времени ожидания.
Функция getWireTimeoutFlag(); // Получить флаг сработавшего timeout.
Функция clearWireTimeoutFlag(); // Сбросить флаг сработавшего timeout.
Функция beginTransmission( АДРЕС ); // Инициация передачи данных.
Функция write( БАЙТ ); // Помещение байта в буфер для передачи.
Функция write( МАССИВ, КОЛИЧЕСТВО ); // Помещение массива в буфер для передачи.
Функция endTransmission( [СТОП] ); // Выполнить передачу данных.
Функция requestFrom( АДРЕС , КОЛИЧЕСТВО [,СТОП] ); // Чтение из ведомого.
Функция available(); // Получить количество байт в буфере.
Функция read(); // Получить очередной байт из буфера.
Функция peek(); // Получить очередной байт из буфера.
Функция onReceive( ФУНКЦИЯ ); // Указание обработчика получения данных.
Функция onRequest( ФУНКЦИЯ ); // Указание обработчика получения запроса.