Оглавление
Wire - отправка и чтение данных по I2C. Наследует класс Stream.
Урок по использованию Wire
Система #
begin #
void begin()void begin(uint8_t address)
Запустить шину. Если указать адрес
address - работать как Slave устройство, без адреса - как Master устройство (для опроса других устройств). Переводит пины шины в режим INPUT_PULLUP. Частота по умолчанию - 100 кГц.end #
void end()
Завершить работу
setClock #
void setClock(uint32_t hz)
Установить частоту шины в Гц. Базовая
100000, быстрая 400000. Некоторые устройства поддерживают более низкую и более высокую частоту.onReceive #
void onReceive(void (*)(int data))
Подключить функцию, которая будет вызываться при поступлении данных от master устройства
onRequest #
void onRequest(void (*)(void))
Подключить функцию, которая будет вызываться при запросе данных от master устройства
setWireTimeout #
void setWireTimeout(uint32_t timeout = 25000, bool reset_with_timeout = false)
Установить таймаут
timeout отправки в master-режиме, микросекунд. reset_with_timeout - сбросить соединение при выходе таймаута. Автоматически сбросит фалг таймаута.getWireTimeoutFlag #
bool getWireTimeoutFlag()
Прочитать флаг таймаута
clearWireTimeoutFlag #
void clearWireTimeoutFlag()
Сбросить флаг таймаута
Чтение #
read, peek, available #
Наследуется из Stream
requestFrom #
uint8_t requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop = true)
Запросить
quantity байт с устройства по адресу address для дальнейшего чтения. sendStop:
true- отправить сигнал стоп и освободить линиюfalse- отправить сигнал на перезапуск и не отключаться
Вернёт количество отправленных устройством байт.
Отправка #
write #
size_t write(uint8_t)size_t write(const uint8_t *buffer, size_t size)
Отправить данные
beginTransmission #
void beginTransmission(uint8_t address)
Начать передачу данных устройству с адресом
address. Дальше нужно отправлять данные через write (пишутся в буфер).endTransmission #
uint8_t endTransmission(uint8_t sendStop = true)
Передать данные из буфера устройству, с которым была начата передача в
beginTransmission(). sendStop:
true- отправить сигнал стоп и освободить линиюfalse- отправить сигнал на перезапуск и не отключаться
Вернёт:
0- успешная отправка1- данные не поместились в буфер2- полученNACKпри отправке адреса3- полученNACKпри отправке данных4- другие ошибки5- таймаут
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками