Данная библиотека позволяет Ардуино взаимодействовать с различными устройствами по интерфейсу I2C / TWI. На платах Ардуино версии R3 (с распиновкой 1.0) линии SDA (данные) и SCL (тактовые импульсы), связанные с этим интерфейсом, расположены на разъеме возле контакта AREF. В Arduino Due реализовано два интерфейса I2C / TWI, линии одного из них (SDA1 и SCL1) расположены возле вывода AREF, линии второго - на выводах 20 и 21.

Расположение выводов TWI на тех или иных платах Ардуино для наглядности сведено в таблицу:

Ардуино

Выводы I2C / TWI

Uno, Ethernet

A4 (SDA), A5 (SCL)

Mega2560

20 (SDA), 21 (SCL)

Leonardo

2 (SDA), 3 (SCL)

Due

20 (SDA), 21 (SCL), SDA1, SCL1

Начиная с версии языка Arduino 1.0, библиотека Wire наследует функции класса Stream, что позволяет ей быть совместимой с другими библиотеками, осуществляющими запись и чтение данных. Поэтому, методы send() и receive() были заменены методами read() и write().

Примечание

Согласно протоколу I2C, адрес устройства может состоять как из 7, так и из 8 бит. Как правило, 7 бит идентифицируют устройство, в то время, как восьмой бит задает направление передачи данных: от устройства (чтение) или к нему (запись). Все функции библиотеки Wire используют 7-битную адресацию. Поэтому, при работе с устройством, использующим 8-битную адресацию, вам придется отбрасывать младший бит (например, сдвигая значение на один бит вправо), тем самым ограничивая диапазон возможных адресов в пределах 0 - 127.