Wire
Описание
Эта библиотека позволяет обмениваться данными с устройствами I2C/TWI. На платах Arduino с компоновкой R3 (распиновка 1.0) SDA (линия данных) и SCL (линия тактового сигнала) расположены на пинах рядом с пином AREF. Arduino Due имеет два интерфейса I2C/TWI: SDA1 и SCL1 расположены рядом с пином AREF, а дополнительные — на пинах 20 и 21.
В таблице ниже приведены расположения пинов TWI на различных платах Arduino.
Плата |
Пин SDA |
Пин SCL |
|---|---|---|
Uno, Ethernet |
A4 |
A5 |
Mega2560 |
20 |
21 |
Leonardo |
2 |
3 |
Due |
20, SDA1 |
21, SCL1 |
Начиная с Arduino 1.0, библиотека наследует функции Stream, что делает её совместимой с другими библиотеками чтения/записи. Из-за этого send() и receive() были заменены на read() и write().
Примечание
На шине I2C существуют как 7-битные, так и 8-битные версии адресов. 7-битный адрес определяет устройство, а восьмой бит определяет направление записи или чтения. Библиотека Wire использует 7-битные адреса. Если у вас есть даташит или пример кода с 8-битным адресом, вам нужно убрать младший бит (т.е. сдвинуть значение на один бит вправо), получив адрес от 0 до 127.
Функции
Инициализация
Wire.begin()
Wire.end()
Wire.setClock()
Контроллер (Master)
Wire.requestFrom()
Wire.beginTransmission()
Wire.endTransmission()
Чтение и запись
Wire.write()
Wire.available()
Wire.read()
Обработчики событий
Wire.onReceive()
Wire.onRequest()
Конфигурация тайм-аута
Wire.setWireTimeout()
Wire.clearWireTimeoutFlag()
Wire.getWireTimeoutFlag()