Wire.beginTransmission()
Wire.beginTransmission() открывает сеанс передачи по I²C к устройству с указанным адресом и готовит буфер: байты добавляются через Wire.write(), а отправляются при Wire.endTransmission().
Полная статья
Описание
beginTransmission() открывает сеанс передачи данных к периферийному I²C-устройству с заданным адресом. Сама по себе функция ничего не отправляет в шину — она лишь подготавливает буфер. Затем нужные байты добавляются в очередь через write(), а фактическая отправка происходит при вызове endTransmission().
Типичная последовательность работы с I²C: вызов beginTransmission() → один или несколько вызовов write() → вызов endTransmission(). Пропуск любого из этих шагов приведёт к тому, что данные либо не попадут на шину, либо устройство не получит корректного пакета.
Эта функция является частью библиотеки Wire.
Синтаксис
Wire.beginTransmission(address)
Параметры
address: 7-битный адрес периферийного устройства на шине I²C. Адрес обычно указан в документации на микросхему или датчик. Допустимый тип данных:int.
Возвращает
Ничего.
Где применяется
- Чтение и запись данных в датчики с интерфейсом I²C: акселерометры, гироскопы, датчики температуры и давления.
- Управление дисплеями и расширителями портов по шине I²C.
- Запись конфигурационных регистров в микросхемах реального времени (RTC).
- Обмен данными между несколькими платами Arduino, когда одна выступает контроллером, а остальные — периферийными устройствами.
Практические замечания
- Адрес устройства — 7-битный, то есть лежит в диапазоне от
0x08до0x77. Восьмой бит (бит направления) добавляется автоматически библиотекой Wire — указывать его вручную не нужно. - Если у вас несколько устройств на одной шине, каждый сеанс передачи открывается и закрывается отдельно:
beginTransmission()→write()→endTransmission()для каждого адреса. - Не забывайте вызывать
endTransmission()после записи байтов — без этого данные останутся в буфере и не будут отправлены. - Если устройство не отзывается на указанный адрес,
endTransmission()вернёт ненулевой код ошибки. Проверяйте это значение при отладке. - Убедитесь, что линии SDA и SCL подтянуты к питанию через резисторы (обычно 4,7 кОм для 5 В или 2,2 кОм для 3,3 В) — без подтяжки шина I²C работать не будет.