для чего библиотека wire

Arduino библиотека Wire

Ардуино библиотека Wire используется для связи микроконтроллера с устройствами и модулями через интерфейс I2C. Об этом интерфейсе я рассказывал в уроке посвященном I2C. Там мы подробно рассмотрели пример подключения и работы с I2C устройствами. I2C интерфейс для передачи данных использует множество устройств.

Для связи по I2C используется всего два контакта: линия данных (SDA) и линия тактового сигнала (SCL). К соответствующим разъемам Arduino можно подключить до 120 устройств, поддерживающих интерфейс I2C. Для обмена данными с такими устройствами и нужна Arduino библиотека Wire.

Расположение пинов SDA и SCL на разных платах Arduino может отличаться. Смотрите описание вашей платы микроконтроллера, что бы не допустить ошибку при подключении. В списке ниже расписано расположение пинов I2C популярных плат Ардуино.

В этой статье я подробно распишу функции библиотеки Wire.

Скачать Arduino библиотеку Wire.h

Wire идет в комплекте стандартных библиотек и устанавливается вместе с Arduino IDE. Но ее можно скачать и отдельно по ссылке ниже.

Для установки библиотеки просто распакуйте zip архив в папку «C:\Program Files (x86)\Arduino\libraries» или в то место, где у васт установлена среда разработки Arduin IDE. Если у вас запущена программа Arduino IDE, то для работы с новой библиотекой её необходимо перезапустить.

begin()

Инициализирует библиотеку Wire и подключается к шине I2C как ведущий (мастер) или ведомый.

Синтаксис

Параметры

address — Необязательный параметр. 7-битный адрес ведомого устройства; если не задан, плата подключается к шине как мастер.

Возвращаемые значения

requestFrom()

Отправляет запрос на определенное количество байтов от ведущего устройства к ведомому.

Синтаксис

Параметры

address — Обязательный параметр. 7-ми битный адрес устройства к которому посылается запрос.

quantity — Обязательный параметр. Количество запрашиваемых байт.

stop — Необязательный параметр. Тип данных boolean. true — после запроса отправляет STOP, освобождая шину I2C. false — после запроса отправляет RESTART. Шина не освобождается и можно отправлять дополнительные запросы. По умолчанию — true.

Возвращаемые значения

Количество байт, возвращенных от устройства.

beginTransmission()

Открывает канал связи по шине I2C с ведомым устройством.

Синтаксис

Параметры

address — Обязательный параметр. 7-ми битный адрес устройства к которому посылается запрос.

Возвращаемые значения

endTransmission()

Отправляет данные, которые были поставлены в очередь методом write() и завершает передачу.

Синтаксис

Параметры

stop — Необязательный параметр. Тип данных boolean. true — после запроса отправляет STOP, освобождая шину I2C. false — после запроса отправляет RESTART. Шина не освобождается и можно отправлять дополнительные запросы. По умолчанию — true.

Возвращаемые значения

byte, который указывает на состояние передачи: 0: успешная передача; 1: Объем данных для передачи слишком велик; 2: принят NACK при передаче адреса; 3: принят NACK при передаче данных; 4: другие ошибки.

write()

Ставит данные в очередь для передачи.

Синтаксис

Параметры

data — Обязательный параметр. Байт, срока или массив байтов для передачи.

Возвращаемые значения

Количество записанных байт

available()

Возвращает количество байт, доступных для чтения.

Синтаксис

Параметры

Возвращаемые значения

Количество байт доступных для считывания

Считывает байт переданной информации.

Синтаксис

Параметры

Возвращаемые значения

Синтаксис

Параметры

Возвращаемые значения

setClock()

Устанавливает тактовую частоту обмена данными по I2C интерфейсу.

Синтаксис

Параметры

clockFrequency — Обязательный параметр. Новое значение частоты обмена данными в герцах. Доступные значения: 10000 — медленный режим 100000 — стандартное значение 400000 — быстрый режим 1000000 — быстрый режим плюс 3400000 — высокоскоростной режим Необходимо убедится, что выбранный режим поддерживается вашим процессором, обратившись к документации от производителя.

Возвращаемые значения

onReceive()

Добавляет функцию обработчик, которая будет выполняться при получении данных от ведущего устройства.

Синтаксис

Параметры

handler — Имя функции, которая будет выполняться когда ведомое устройство принимает данные. Функция должна принимать один параметр int и ничего не возвращать.

Возвращаемые значения

onRequest()

Добавляет функцию обработчик, которая будет выполняться при получении запроса от ведущего устройства.

Синтаксис

Параметры

handler — Имя функции, которая будет выполняться когда ведомое устройство получает запрос от ведущего. Функция не принимает параметров и ничего не возвращает.

Источник

Библиотека Wire для Arduino для работы с шиной I2C. Копаем глубже.

Введение

Документация на библиотеку Wire довольно скромна. Нигде нет объяснения её связи с библиотекой twi из avr-lib, и, что еще хуже, с аппаратным модулем TWI в микроконтроллерах ATmega. Эта статья попытается заполнить пробелы и предоставить необходимую документацию по библиотеке Wire.

Для более подробной информации смотрите техническое описание на микроконтроллер, используемый в вашей плате Arduino. Это бесценная справочная информация для понимания аппаратного обеспечения TWI и способов связи контроллеров ATmega через I2C.

Внутри ATmega328

В основе данного подраздела лежит техническое описание на ATmega328 версии Rev. 8271C – 08/10. Приводимые мной страницы могут немного отличаться от текущей версии.

Просмотр технического описания на микроконтроллер показывает нам, как работает двухпроводная (Two Wire) система. Стоит отметить:

Регистры

Вот несколько регистров, задействованных аппаратным модулем TWI (Two Wire Interface, двухпроводный интерфейс):

РегистрНазваниеНазначение
TWCRРегистр управления двухпроводным интерфейсомУправляет действиями модуля TWI
TWSRРегистр состояния двухпроводного интерфейсаСообщает статус действий TWI
TWDRРегистр данных/адреса двухпроводного интерфейсаСодержит данные, которые вы хотите передать или приняли
TWBRРегистр битовой скорости двухпроводного интерфейсаУправляет частотой тактового сигнала (SCL)

Аппаратный модуль TWI

Смотрите следующую схему потока для записи на шину I2C:

для чего библиотека wire. Смотреть фото для чего библиотека wire. Смотреть картинку для чего библиотека wire. Картинка про для чего библиотека wire. Фото для чего библиотека wire Взаимодействие приложения с шиной TWI (I2C) во время типовой передачи

Ссылаясь на таблицу регистров, приведенную выше, операция записи I2C с использованием аппаратного модуля TWI вкратце будет выглядеть следующим образом:

Операция чтения выполняется похожим образом.

Проблемы при использовании с ATtiny

Не делайте ошибку, думая, что вы можете просто указать в своем скетче #define TWI_BUFFER_LENGTH 6 потому, что это не работает. Способ, которым Arduino IDE компилирует ваш код, не очевиден. Библиотека компилируется отдельно от вашего скетча, а затем линкуется с ним. Поэтому вам придется изменить размер буфера в заголовочном файле библиотеки, который также включается в исходном файле библиотеки ( twi.c ).

Библиотека Wire

Подробное описание библиотеки.

Обратите внимание, что библиотека Wire написана на C++. Таким образом, все перечисленные здесь вызовы являются настоящими методами класса C++. Если вы не знакомы с программированием на C++, вы можете думать о методе как о просто функции или подпрограмме, и будете правы.

Библиотека Wire блокирует ввод/вывод. Это означает, что при отправке или приеме по шине I2C ваше приложение не запускается до завершения связи. По правде говоря, работа оборудования TWI в вашем процессоре управляется прерываниями, поэтому приложение может работать на полной скорости, во время связи TWI, но эта возможность библиотекой Wire не используется.

В следующих подразделах в секциях «Под капотом» описывается действие, которое выполняет каждый метод с модулем TWI на ATmega и, следовательно, с шиной I2C.

begin()

begin(address)

requestFrom(address, count)

Используется, когда ATmega работает в качестве ведущего устройства I2C. Запрашивает count байт от ведомого устройства I2C, по заданному адресу. Каждый вызов этого метода сбрасывает индекс буфера чтения; то есть внутренний буфер считывается с начала, с нулевой ячейки массива. Обратите внимание, что адрес должен быть 7-битным; если передается 8-битный адрес, старший бит просто отсекается.

Этот метод возвращает количество байтов, прочитанных с ведомого устройства.

beginTransmission(address)

Используется, когда ATmega действует как мастер I2C. Устанавливает внутренние переменные библиотеки Wire для подготовки к передаче на указанный адрес.

Аргументы address : адрес ведомого устройства I2C. Это 7-битный адрес; если передаются 8 бит, самый старший бит просто отсекается. Под капотом Никакой активности в TWI. Этот метод просто изменяет некоторые внутренние переменные библиотеки Wire.

endTransmission()

Результаты возвращаются в виде значения размером байт. Возможны следующие варианты:

Заполняет буфер передачи данными, полученными из аргументов. Список возможных аргументов приведен ниже.

Термин «send» (отправить) для этого метода является чем-то неправильным. Этот метод на самом деле ничего не отправляет. Буфер данных (или массив) просто заполняется аргументом данных.

Есть три варианта аргументов:

available()

Возвращает количество байтов доступных в приемном буфере библиотеки Wire. Этот буфер заполняется:

Под капотом Никакой активности в TWI. Этот метод просто изменяет некоторые внутренние переменные библиотеки Wire.

receive()

Возвращает следующий байт из приемного буфера библиотеки Wire. Смотрите метод available() выше для более подробной информации о приемном буфере библиотеки Wire.

Под капотом Никакой активности в TWI. Этот метод просто изменяет некоторые внутренние переменные библиотеки Wire.

onReceive(handler)

void handler(int byteCount)

Шина I2C не освобождается до тех пор, пока не завершится выполнение обработчика, поэтому, вероятно, стоит убедиться, что обработчик завершается относительно быстро. Обратите внимание, что «относительно быстро» означает, что для ATmega это здесь предоставляется довольно много времени, так как на большинстве Arduino контроллер работает на частоте 16 МГц, а связь по I2C – лишь на частоте 100 кГц.

Обработчик может использовать метод receive() для чтения следующего байта из приемного буфера библиотеки Wire.

onRequest(handler)

Источник

Интерфейсная шина I²C/Библиотека Wire

I²C (IIC, англ. Inter-Integrated Circuit) — последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов.

Шина I2C также известна как двухпроводной интерфейс (Two Wire Interface, TWI) — простое и удобное устройство, используемое для обмена данными. Сам протокол был предложен фирмой Philips, но во избежание проблем с авторскими правами иногда протокол называют «двухпроводным».

Передача данных между устройствами и Arduino осуществляется по двум линиям, которые называют линией данных (Serial Data Line, SDA) и тактовой линией синхронизации сигнала (Serial Clock Line, SCL). В Arduino Uno вывод SDA находится на A4, а линия SCL — на контакте A5. Некоторые новейшие платы R3 имеют отдельные контакты, соединённые с шиной I2C и расположенные в верхнем левом углу для удобства доступа к ним. При подключении требуется установка подтягивающих резисторов. Обычно используют резисторы номиналом 4.7 кОм.

Будучи подключённой к шине I2C, плата Arduino считается ведущим устройством, а все остальные устройства — ведомыми. Каждое ведомое устройство имеет свой адрес (идентификационный номер) — шестнадцатеричное число, — позволяющий плате Arduino обращаться и взаимодействовать с каждым устройством по отдельности. Обычно устройство имеет на выбор диапазон адресов I2C, который указан в документации к нему. Конкретные доступные адреса определяются подключением контактов IC тем или иным образом.

Ведущее устройство (Uno) отвечает за инициирование обмена. Ведомые устройства не могут инициировать обмен данных, а только отвечают на запросы от ведущего устройства.

Библиотека Wire

Библиотека Wire входит в состав Arduino и используется для работы с шиной I2C.

В скетче сначала необходимо активировать библиотеку, затем в setup() активировать шину.

Поскольку как правило плата Arduino действует как ведущее устройство, ей не нужно присваивать адрес. Если бы плата настраивалась на работу в режиме ведомого устройства, нам пришлось бы присвоить адрес в диапазоне от 0 до 127, передав его как параметр, чтобы уникально идентифицировать плату на шине I2C.

Передача данных по шине осуществляется по одному байту. Чтобы послать байт из платы Arduino в устройство на шине, необходимо вызвать три функции:

Чтобы запросить данные из устройства на шине I2C, инициализируйте связь вызовом Wire.beginTransmission(address) и отправьте запрос Wire.requestFrom(address, x), (где x — количество запрашиваемых байтов данных). Затем с помощью следующей функции нужно сохранить принятый байт в переменной:

По окончании приёма следует разорвать связь вызовом Wire.endTransmission().

Методы библиотеки

begin()

Инициализация библиотеки Wire и подключение к шине I2C в качестве ведущего или ведомого устройства. Как правило, вызывается только один раз.

Параметры

address: 7-битный адрес устройства (если работаем в режиме ведомого). Если не указано, то контроллер подключается к шине в роли ведущего (master).

Возвращаемое значение

Не возвращает значений

requestFrom()

Используется ведущим устройством для запроса байта от ведомого устройства. Байты могут быть получены с помощью методов available() и read().

Параметры

Возвращаемое значение

Возвращает число считанных байт.

beginTransmission()

Начало передачи I2C для ведомого устройства с заданным адресом. Затем, нужно вызвать метод write() для добавления последовательности байт в очередь предназначенных для передачи, и выполнить саму передачу данных методом endTransmission().

Параметры

address: 7-битный адрес устройства для передачи.

Возвращаемое значение

Не возвращает значений

endTransmission()

Завершает передачу данных для ведомого устройства, которое было начато beginTransmission() и, фактически, осуществляет передачу байт, которые были поставлены в очередь методом write().

Параметры

Возвращаемое значение

Возвращает байт, который указывает статус передачи:

write()

Записывает данные от ведомого устройства в ответ на запрос мастера, или записывает очередь байт для передачи от мастера к ведомому устройству (в промежутках между вызовами beginTransmission() и endTransmission()).

Примеры

Параметры

Возвращаемое значение

Возвращает число записанных байт.

available()

Метод available() наследуется от класса Stream. Возвращает количество байт, доступных для получения. Этот метод должно быть вызван на мастере, после вызова requestFrom() или ведомым внутри обработчика onReceive().

Параметры

Возвращаемое значение

Число байт, доступных для чтения.

Метод read() наследуется от класса Stream. Считывает байт, который был передан от ведомого устройства к мастеру, после вызова requestFrom() или был передан от мастера к ведомому.

Параметры

Возвращаемое значение

Следующий полученный байт.

Регистрирует функцию, которая вызывается, когда ведомое устройство получает данные от мастера.

Параметры

Возвращаемое значение

Не возвращает значений

onRequest()

Регистрирует функцию, которая вызывается, когда мастер запрашивает данные из этого ведомого устройства.

Параметры

Возвращаемое значение

Не возвращает значений

Узнать адрес

В примерах, где используется I2C, важно использовать правильный адрес. Если у вас устройство, чей адрес вы не знаете, то можете воспользоваться библиотекой i2cdetect, доступный через менеджер библиотек. После установки библиотеки запустите прилагаемый к нему пример и через последовательный монитор увидите нужный адрес.

Также можно запустить собственный скетч.

Проверил на ЖК-экране, чей адрес обычно 0х27.

Источник

Микроконтроллеры Atmega имеют хардварную поддержку интерфейса I2C(TWI). Линии интерфейса SDA и SCL у МК Atmega8/168/328, сидят на ножках c номерами 27 (PC4) и 28 (PC5), соответственно.
На платах Arduino, линия данных — SDA (data line) выведена на аналоговый пин 4, а линия тактирования — SCL (clock line) выведена на аналоговый пин 5.
На Arduino Mega, SDA — это цифровой пин 20, а SCL — цифровой пин 21.
На Arduino Leonardo — 2 (SDA), 3 (SCL).
На Arduino Due — 20 (SDA), 21 (SCL), SDA1, SCL1

На нашей CraftDuino, i2c, помимо стандартных пинов, удобно выведен на отдельный разъём (4 обычных пина с шагом 2.54), а так же добавлены два джампера, которыми можно подключить подтягивающие резисторы.
для чего библиотека wire. Смотреть фото для чего библиотека wire. Смотреть картинку для чего библиотека wire. Картинка про для чего библиотека wire. Фото для чего библиотека wire

Для работы с протоколом I2C, у Arduino есть штатная библиотека Wire, которая позволяет взаимодействовать с I2C/TWI-устройствами, как в режиме мастера, так и в режиме слейва.

В Arduino 1.0, библиотека наследуется от Stream, что делает её использование схожим с другими библиотеками чтения/записи (read/write libraries). В связи с этим, методы send() и receive() были заменены на read() и write().

Рассмотрим методы библиотеки

void begin();
void begin(uint8_t address);
void begin(int address);

Описание:
Инициализация библиотеки Wire и подключение к шине I2C в качестве мастера или слейва. Как правило, вызывается только один раз.

Параметры:
address: 7-битный адрес устройства (если работаем в режиме слейва). Если не указано, то контроллер подключается к шине в роли мастера (master).

Возвращаемое значение:
нет

uint8_t requestFrom(uint8_t address, uint8_t quantity);

Описание:
Используется мастером для запроса байта от ведомого устройства (слейва). Байты могут быть получены с помощью методов available() и read().

Параметры:
address: 7-битный адрес устройства для запроса байтов данных
quantity: количество запрошенных байт

Возвращаемое значение:
число считанных байт

void beginTransmission(uint8_t address);

Описание:
Начало передачи I2C для ведомого устройства (слейва) с заданным адресом. Затем, нужно вызвать метод write() для добавления последовательности байт в очередь предназначенных для передачи, и выполнить саму передачу данных методом endTransmission().

Параметры:
address: 7-битный адрес устройства для передачи

Возвращаемое значение:
нет

Описание:
Завершает передачу данных для ведомого устройства(слейва), которое было начато beginTransmission() и, фактически, осуществляет перечу байт, которые были поставлены в очередь методом write().

Возвращаемое значение:
байт, который указывает статус передачи:
0: успех
1: данных слишком много и они не помещается в буфер передачи

размер буфера задаётся определением

2 получили NACK на передачу адреса
3 получили NACK на передачу данных
4: другая ошибка

size_t write(uint8_t data);
size_t write(const uint8_t *data, size_t quantity);

Описание:
Записывает данные от ведомого устройства (слейва) в ответ на запрос мастера, или записывает очередь байт для передачи от мастера к ведомому устройству (в промежутках между вызовами beginTransmission() и endTransmission()).

Параметры:
value: значение для отправления как единичный байт

string: строка для отправления как последовательность байт

data: массив байт для отправления
length: число байт для передачи

Возвращаемое значение:
возвращает число записанных байт

Описание:
Возвращает количество байт, доступных для получения. Этот метод должно быть вызван на мастере, после вызова requestFrom() или слейвом внутри обработчика onReceive().

available() наследуется от класса Stream.

Возвращаемое значение:
Число байт, доступных для чтения.

Описание:
Считывает байт, который был передан от ведомого устройства(слейва) к мастеру, после вызова requestFrom() или был передан от мастера к слейву.

read() наследуется от класса Stream.

Возвращаемое значение:
Следующий полученный байт.

void onReceive( void (*function)(int) );

Описание:
Регистрирует функцию, которая вызывается, когда ведомое устройство(cлейв) получает данные от мастера.

Параметры:
function: функция, которая вызывается, когда cлейв получает данные; обработчик должен принимать один параметр — int (число байт, считанных от мастера) и ничего не возвращать.
например:

Возвращаемое значение:
нет.

void onRequest( void (*function)(void) );

Описание:
Регистрирует функцию, которая вызывается, когда мастер запрашивает данные из этого ведомого устройства.

Параметры:
function: функция, которая будет вызываться; не имеет параметров и ничего не возвращает.
например:

Возвращаемое значение:
нет

Описание:
Эта функция изменяет тактовую частоту для связи I2C. Базовой тактовой частотой является 100 кГц.

Параметры:
clockFrequency: значение тактовой частоты (в герцах).
Допустимые значения: 100000 (стандартный режим) и 400000 (быстрый режим).
Некоторые процессоры также поддерживают 10000 (низкоскоростной режим), 1000000 (быстрый режим плюс) и 3400000 (высокоскоростной режим).
См. Документацию по конкретному процессору, чтобы убедиться, что нужный режим поддерживается.

Источник

Библиотека Wire для Arduino для работы с шиной I2C

1. Описание библиотеки Wire.

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

В таблице ниже показано, где расположены TWI выводы на разных платах Arduino.

Расположение выводов I2C/TWI на платах Arduino

ПлатаI2C/TWI выводы
Uno, EthernetA4 (SDA), A5 (SCL)
Mega256020 (SDA), 21 (SCL)
Leonardo2 (SDA), 3 (SCL)
Due20 (SDA), 21 (SCL), SDA1, SCL1

2. Примечание

Существуют 7- и 8-битные версии адресов I2C. 7 битов идентифицируют устройство, а восьмой бит определяет, идет запись или чтение. Библиотека Wire использует 7 битные адреса. Если у вас есть техническое описание или пример кода, где используется 8-битный адрес, вам нужно откинуть младший бит (т.е. сдвинуть значение на один бит вправо), получив адрес от 0 до 127. Однако адреса от 0 до 7 не используются, так как зарезервированы, поэтому первым адресом, который может быть использован, является 8. Обратите внимание, что при подключении выводов SDA/SCL необходимы подтягивающие резисторы. Для более подробной информации смотрите примеры. На плате MEGA 2560 есть подтягивающие резисторы на выводах 20 и 21.

3. Описание методов

Wire.begin()

Инициализирует библиотеку Wire и подключается к шине I2C как ведущий (мастер) или ведомый. Как правило, должен вызываться только один раз.

address : 7-битный адрес ведомого устройства (необязательно); если не задан, плата подключается к шине как мастер.

Wire.requestFrom()

Для совместимости с определенными I2C устройствами, начиная с Arduino 1.0.1, requestFrom() принимает аргумент логического типа данных, меняющий его поведение.

Wire.requestFrom(address, quantity, stop)

byte : количество байтов, возвращенных от ведомого устройства.

Wire.beginTransmission()

address : 7-битный адрес устройства, на которое необходимо передать данные.

Wire.endTransmission()

Для совместимости с определенными I2C устройствами, начиная с Arduino 1.0.1, requestFrom() принимает аргумент логического типа данных, меняющий его поведение.

Wire.write()

Записывает данные от ведомого устройства в отклик на запрос от ведущего устройства, или ставит в очередь байты для передачи от мастера к ведомому устройству (между вызовами beginTransmission() и endTransmission() ).

byte : write() возвращает количество записанных байтов, хотя чтение этого количества не обязательно.

Wire.available()

Количество байтов, доступных для чтения.

Wire.read()

byte : очередной принятый байт.

Wire.setClock()

Изменяет тактовую частоту для связи по шине I2C. У ведомых I2C устройств нет минимальной рабочей тактовой частоты, однако обычно используется 100 кГц.

clockFrequency : значение частоты (в герцах) тактового сигнала. Принимаются значения 100000 (стандартный режим) и 400000 (быстрый режим). Некоторые процессоры также поддерживают 10000 (низкоскоростной режим), 1000000 (быстрый режим плюс) и 3400000 (высокоскоростной режим). Чтобы убедиться, что необходимый режим поддерживается, обращайтесь к технической документации на конкретный процессор.

Wire.onReceive()

Регистрирует функцию, которая будет вызываться, когда ведомое устройство принимает передачу от мастера.

handler : функция, которая должна будет вызываться, когда ведомое устройство принимает данные; она должна принимать один параметр int (количество байтов, прочитанных от мастера) и ничего не возвращать, т.е.:

void myHandler(int numBytes)

Код для платы Arduino, работающей в качестве ведомого устройства:

Wire.onRequest()

Регистрирует функцию, которая будет вызываться, когда мастер запрашивает данные от ведомого устройства.

handler : функция, которая должна будет вызываться, она не принимает параметров и ничего не возвращает, т.е.:

Код для платы Arduino, работающей в качестве ведомого устройства:

Урок 3. ESP32 и ESP8266 с выводом статуса на веб-страницу и на OLED дисплей.

для чего библиотека wire. Смотреть фото для чего библиотека wire. Смотреть картинку для чего библиотека wire. Картинка про для чего библиотека wire. Фото для чего библиотека wire

Модуль фоторезистора KY-018. Подключение к Arduino

для чего библиотека wire. Смотреть фото для чего библиотека wire. Смотреть картинку для чего библиотека wire. Картинка про для чего библиотека wire. Фото для чего библиотека wire

KY-022 – модуль ИК приёмника (IRremote). Подключение к Arduino.

для чего библиотека wire. Смотреть фото для чего библиотека wire. Смотреть картинку для чего библиотека wire. Картинка про для чего библиотека wire. Фото для чего библиотека wire

Наши проекты:

Полезные ссылки:

На нашем сайте используются cookie для сбора статистической информации.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *