Arduino библиотека Wire

Ардуино библиотека Wire используется для связи микроконтроллера с устройствами и модулями через интерфейс I2C. Об этом интерфейсе я рассказывал в уроке посвященном I2C. Там мы подробно рассмотрели пример подключения и работы с I2C устройствами. I2C интерфейс для передачи данных использует множество устройств.

Для связи по I2C используется всего два контакта: линия данных (SDA) и линия тактового сигнала (SCL). К соответствующим разъемам Arduino можно подключить до 120 устройств, поддерживающих интерфейс I2C. Для обмена данными с такими устройствами и нужна Arduino библиотека Wire.

Расположение пинов SDA и SCL на разных платах Arduino может отличаться. Смотрите описание вашей платы микроконтроллера, что бы не допустить ошибку при подключении. В списке ниже расписано расположение пинов I2C популярных плат Ардуино.

  • Arduino Nano: A4-SDA A5-SCL
  • Arduino Uno: A4-SDA A5-SCL продублированы рядом с разъемом AREF (только версия R3)
  • Arduino Mega: 20-SDA 21-SCL продублированы рядом с разъемом AREF (только версия R3)
  • Arduino Pro Mini: A4-SDA A5-SCL
  • Arduino Leonardo: 2-SDA 3-SCL и пины рядом с разъемом AREF (второй канал)

В этой статье я подробно распишу функции библиотеки Wire.

Скачать Arduino библиотеку Wire.h

Wire идет в комплекте стандартных библиотек и устанавливается вместе с Arduino IDE. Но ее можно скачать и отдельно по ссылке ниже.

Скачать Ардуино библиотеку Wire

Для установки библиотеки просто распакуйте zip архив в папку «C:\Program Files (x86)\Arduino\libraries» или в то место, где у васт установлена среда разработки Arduin IDE. Если у вас запущена программа Arduino IDE, то для работы с новой библиотекой её необходимо перезапустить.

begin()

Инициализирует библиотеку Wire и подключается к шине I2C как ведущий (мастер) или ведомый.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.begin(address);

Параметры

address - Необязательный параметр. 7-битный адрес ведомого устройства; если не задан, плата подключается к шине как мастер.

Возвращаемые значения

Нет

requestFrom()

Отправляет запрос на определенное количество байтов от ведущего устройства к ведомому.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.requestFrom(address, quantity, stop);

Параметры

address - Обязательный параметр. 7-ми битный адрес устройства к которому посылается запрос.
quantity - Обязательный параметр. Количество запрашиваемых байт.
stop - Необязательный параметр. Тип данных boolean. true - после запроса отправляет STOP, освобождая шину I2C. false - после запроса отправляет RESTART. Шина не освобождается и можно отправлять дополнительные запросы. По умолчанию - true.

Возвращаемые значения

Количество байт, возвращенных от устройства.

beginTransmission()

Открывает канал связи по шине I2C с ведомым устройством.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.beginTransmission(address);

Параметры

address - Обязательный параметр. 7-ми битный адрес устройства к которому посылается запрос.

Возвращаемые значения

Нет

endTransmission()

Отправляет данные, которые были поставлены в очередь методом write() и завершает передачу.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.endTransmission(stop)

Параметры

stop - Необязательный параметр. Тип данных boolean. true - после запроса отправляет STOP, освобождая шину I2C. false - после запроса отправляет RESTART. Шина не освобождается и можно отправлять дополнительные запросы. По умолчанию - true.

Возвращаемые значения

byte, который указывает на состояние передачи:
0: успешная передача;
1: Объем данных для передачи слишком велик;
2: принят NACK при передаче адреса;
3: принят NACK при передаче данных;
4: другие ошибки.

write()

Ставит данные в очередь для передачи.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.write(data, length);

Параметры

data - Обязательный параметр. Байт, срока или массив байтов для передачи.
length - Необязательный параметр. Длинна передаваемого массива данных. Используется только при передаче массива в первом параметре.

Возвращаемые значения

Количество записанных байт

available()

Возвращает количество байт, доступных для чтения.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.available();

Параметры

Нет

Возвращаемые значения

Количество байт доступных для считывания

read()

Считывает байт переданной информации.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.read();

Параметры

Нет

Возвращаемые значения

Принятый байт

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Параметры

Возвращаемые значения

setClock()

Устанавливает тактовую частоту обмена данными по I2C интерфейсу.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.setClock(clockFrequency);

Параметры

clockFrequency - Обязательный параметр. Новое значение частоты обмена данными в герцах. Доступные значения:
10000 - медленный режим
100000 - стандартное значение
400000 - быстрый режим
1000000 - быстрый режим плюс
3400000 - высокоскоростной режим
Необходимо убедится, что выбранный режим поддерживается вашим процессором, обратившись к документации от производителя.

Возвращаемые значения

Нет

onReceive()

Добавляет функцию обработчик, которая будет выполняться при получении данных от ведущего устройства.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.onReceive(handler);

Параметры

handler - Имя функции, которая будет выполняться когда ведомое устройство принимает данные. Функция должна принимать один параметр int и ничего не возвращать.

Возвращаемые значения

Нет

onRequest()

Добавляет функцию обработчик, которая будет выполняться при получении запроса от ведущего устройства.

Синтаксис, параметры, возвращаемые значения, пример

Синтаксис

Wire.onRequest(handler);

Параметры

handler - Имя функции, которая будет выполняться когда ведомое устройство получает запрос от ведущего. Функция не принимает параметров и ничего не возвращает.

Возвращаемые значения

Нет