Arduino как ведомое устройство на шине I2C для чтения данных с других устройств I2C
Добрый день! Я немного новичок в мире шины I2C. Я пытаюсь реализовать проект, в котором Arduino MEGA является ведущим, а Arduino nano - ведомым. У меня есть несколько датчиков I2C, которые я хочу, чтобы ведомое устройство (Arduino nano) считывало. Пожалуйста, как я могу это реализовать.
@Gbouna, 👍-2
Обсуждение1 ответ
Arduino может быть как ведущим, так и подчиненным устройством. Страница Ника Гэммона на I2C описывает, как это сделать. http://www.gammon.com.au/i2c
Общение с другими устройствами
Так что все эти возможности I2C — это здорово, вы можете использовать всего два провода (плюс заземление) для связи со 119 устройствами. Но что, если у вас есть устройство (например, клавиатура), которое не поддерживает I2C? Ну, простой ответ заключается в том, что вы можете использовать что-то, что работает в качестве интерфейса. Например, второй Ардуино. Мои примеры выше делают именно это, используя один в качестве основного, а второй для отображения текста на светодиодах.
На самом деле «мастер» также может действовать как ведомый, так как у вас может быть несколько мастеров на одном проводе. В приведенном ниже примере показано, как вы можете отправлять данные с одного Arduino на другой, ожидая отправки информации от второго обратно к первому.
См. ссылку на примеры кода.
Поддерживает ли «Wire» арбитраж шины, чтобы можно было выполнять мультимастер без блокировки шины?, @chrisl
Понятия не имею, я редко использовал I2C, предпочитая гораздо более быстрый SPI., @CrossRoads
Спасибо за ваш ответ, я видел, что он сделал, и это было здорово. Однако, поскольку мои датчики являются датчиками I2C, они могут работать не так, как он. Я думаю, что лучшим подходом будет использование других контактов Arduino Nano для подключения датчиков I2C. Но поскольку эти датчики являются датчиками I2C, я считаю, что они не будут работать напрямую с другими контактами, кроме выделенных контактов I2C. Знаете ли вы, как я могу использовать другие контакты Arduino Nano для датчиков I2C?, @Gbouna
Какие у вас датчики? Номера деталей?, @CrossRoads
Датчик приближения, VCNL4040, Датчик времени полета VL6180, @Gbouna
"VCNL4040 применяет один подчиненный адрес 0x60 (HEX) с 7-битной адресацией в соответствии с протоколом I2C. " "VL6180X управляется через интерфейс I2C. Адрес I2C по умолчанию - 0x29 (7-битный)". Итак, два разных адреса. Подключите оба к SDA и SCL, поговорите с одним, затем поговорите с другим., @CrossRoads
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отправить строку на мастер с помощью i2c
- Как выбрать альтернативные контакты I2C на ESP32?
- Что означает в I2C «NACK получен»?
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Несколько датчиков I2C с одинаковым адресом
Я правильно понимаю, что ваш ведомый I2C Nano также должен быть ведущим для датчиков I2C?, @chrisl
UC, имеющий только один аппаратный интерфейс i2c, может быть только ведущим ИЛИ ведомым, но не обоими одновременно., @Sim Son
Спасибо за ответ, теперь понял. Я думаю, что лучшим подходом будет использование других контактов Arduino Nano для подключения датчиков I2C. Но поскольку эти датчики являются датчиками I2C, я считаю, что они не будут работать напрямую с другими контактами, кроме выделенных контактов I2C. Знаете ли вы, как я могу использовать другие контакты Arduino Nano для датчиков I2C?, @Gbouna