Главная chevron_right Функции chevron_right Связь chevron_right Wire

Wire

Библиотека Wire обеспечивает работу с шиной I2C на Arduino — подключайте датчики, дисплеи и модули всего по двум проводам, используя read() и write().

Полная статья

Описание

Библиотека Wire предназначена для работы с шиной I2C — последовательным протоколом, который поддерживается на всех платах Arduino. По двум линиям SDA и SCL к плате подключают датчики, дисплеи, модули памяти и другие компоненты. Подробнее о принципах работы протокола читайте в руководстве Arduino и I2C.

Библиотека наследует интерфейс Stream, благодаря чему совместима с другими библиотеками ввода-вывода. В связи с этим устаревшие функции send() и receive() были заменены на read() и write() — используйте именно их в новом коде.

Чтобы подключить библиотеку к скетчу, добавьте в самое начало файла:

#include <Wire.h>

Пины I2C по умолчанию

Расположение контактов I2C зависит от модели платы. В таблице ниже указаны контакты по умолчанию, а также дополнительные порты I2C, доступные на некоторых платах.

ПлатаI2C по умолчаниюI2C0I2C1I2C2Примечания
UNO R3, UNO R3 SMD, UNO Mini LEA4(SDA), A5(SCL)I2C также доступен на выводах SDA/SCL (цифровой разъем).
UNO R4 Minima, UNO R4 WiFi, Nano R4A4(SDA), A5(SCL)Qwiic:D27(SDA), D26(SCL)A4(SDA), A5(SCL)Используйте Wire.begin() для I2C1 и Wire1.begin() для I2C0 (Qwiic). I2C1 также доступен на выводах SDA/SCL на платах UNO.
UNO WiFi Rev2, Zero20(SDA), 21(SCL)
Leonardo, Micro, Yún Rev2D2(SDA), D3(SCL)
Nano boardsA4(SDA), A5(SCL)
MKR boardsD11(SDA), D12(SCL)
GIGA R1 WiFi20(SDA), 21(SCL)D102(SDA1), D101(SCL1)D9(SDA2), D8(SCL2)Используйте Wire1.begin() для I2C1 и Wire2.begin() для I2C2.
Due20(SDA), 21(SCL)D70(SDA1), D71(SCL1)Используйте Wire1.begin() для I2C1.
Mega 2560 Rev3D20(SDA), D21(SCL)

Функции

Инициализация

Передатчик контроллера

Приёмник контроллера

Периферийные обратные вызовы

Конфигурация тайм-аута

Практические замечания

  • Адресация I2C. Библиотека Wire работает исключительно с 7-битными адресами. Если в документации на компонент или в стороннем примере используется 8-битный адрес, сдвиньте его на один бит вправо — это и будет нужный 7-битный адрес (диапазон 0–127). Адреса 0–7 зарезервированы протоколом, поэтому первый доступный для устройств адрес — 8.
  • Подтягивающие резисторы. Линии SDA и SCL требуют подтягивающих резисторов к питанию. На некоторых платах, например Mega 2560, они уже встроены на контактах 20 и 21. Если шина работает нестабильно или устройства не обнаруживаются — в первую очередь проверьте наличие подтяжки.
  • Размер буфера. Библиотека Wire выделяет под передачу буфер размером 32 байта. Если за один раз нужно отправить или принять больше — данные, выходящие за этот предел, будут молча отброшены. Разбивайте большие пакеты на части.
  • Тайм-ауты. В актуальных версиях библиотеки Wire есть поддержка тайм-аутов, которые предотвращают зависание скетча при проблемах на шине (например, если устройство не отвечает). По умолчанию тайм-ауты отключены, поэтому рекомендуется явно их включать в любом проекте с библиотекой Wire. Подробнее — в описании функции setWireTimeout().
  • Типичные ошибки. Если устройство не отвечает, проверьте: правильно ли указан 7-битный адрес, есть ли подтягивающие резисторы, не перепутаны ли SDA и SCL, и не превышает ли размер пакета 32 байта.

Полезные материалы