Библиотека GitHub

iarduino_I2C_Software

Библиотека iarduino_I2C_Software для Arduino: создание программных шин I2C на любых выводах микроконтроллера с синтаксисом Wire.h, поддержка нескольких шин и устройств с одинаковыми адресами.

tremaru / iarduino_I2C_Software Обновлено 12:01 12.07.2024 Ветка main

Описание

Библиотека iarduino_I2C_Software позволяет создавать программные шины I2C используя любые выводы микроконтроллера. Можно создать шину I2C на тех микроконтроллерах, где её нет, или уже задействованы выводы аппаратной шины I2C. Создав несколько шин I2C вы сможете подключить несколько датчиков с одинаковыми адресами.

Библиотека iarduino_I2C_Software имеет тот же синтаксис, что и библиотека Wire.h и поддерживает все её методы и функции для работы в качестве мастера. Обе библиотеки могут работать в одном скетче, так объекты библиотек создаются как экземпляры разных классов:

  • Библиотека Wire содержит класс TwoWire.
  • Библиотека iarduino_I2C_Software содержит класс 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( ФУНКЦИЯ ); // Указание обработчика получения запроса.