Вопросы программирования библиотеки SoftWire для I2C с цифровыми выводами

Я пытаюсь использовать 3 лазерных датчика TOF10120 с одним Arduino, которые все имеют один и тот же фиксированный адрес I2C. Я не верю, что можно изменить адрес I2C TOF10120, но если я ошибаюсь, пожалуйста, дайте мне знать (кроме того, мне нужно 3 разных адреса). При этом я пытаюсь использовать библиотеку SoftWire (https://github.com/stevemarple/SoftWire - очень интересная библиотека, но не очень хорошая документация), чтобы помочь мне использовать мои три датчика с цифровыми контактами. Есть ли у кого-нибудь опыт работы с библиотекой SoftWire и получения показаний лазерного датчика?

Я могу предоставить код, который у меня есть, но в любом случае это, вероятно, будет не очень полезно. Мне особенно любопытно, как использовать функции digitalWrite() и digitalRead() для I2C с программным обеспечением.

Заранее спасибо за всю помощь!

, 👍1

Обсуждение

вы задаете вопросы о датчике, но не предоставили никакой документации по нему, @jsotola

Таблица данных написана на другом языке - это совсем не полезно. Адрес по умолчанию - 0x52 для I2C. Я купил датчик отсюда: https://www.amazon.com/Taidacent-100-1800mm-Distance-Infrared-Detector/dp/B07KW1XN5X, @Alex88

таблица данных на иностранном языке более полезна, чем отсутствие таблицы данных, @jsotola

Ссылка на PDF-файл таблицы в Google Диске: https://drive.google.com/file/d/1KAIB9xDaO4HcIDBsFz9ia2koAKH_af-_/view?usp=sharing, @Alex88

в этой таблице данных достаточно английского языка , чтобы найти то , что вам нужно ... кажется , есть команда для установки идентификатора I2C... используйте google translate для подтверждения, @jsotola

Не могли бы вы сказать мне, на какой странице и в каком месте / строке на этой странице находится эта команда? Кроме того, как вы вообще посылаете сенсору команду?- любые ресурсы для этого будут высоко оценены., @Alex88

Я нашел, где это, но не знаю точно, как действовать дальше. Является ли команда s7-xxx#? Как бы я вообще послал эту команду датчику? Я бы не подумал, что это будет через Arduino IDE., @Alex88

подключите один датчик к arduino и используйте скетч для отправки команды, @Juraj

Для этого вы можете использовать библиотеку SoftWire. Вы можете совместно использовать линии SCL и иметь одну линию SDA для каждого датчика. Посмотрите на пример библиотеки SoftWire "ListDevices"; вам нужно будет создать три объекта SoftWire с разными контактами SDA. В качестве альтернативы вы можете использовать мультиплексор I2C, такой как TCA954x (есть прорывные платы), что более удобно, так как вы можете использовать стандартное (аппаратноеобеспечение). Проводная библиотека и экономия места и циклов., @ridgy


1 ответ


2

Вы можете изменить tof10120 на любой адрес i2c в диапазоне от 1 до 254. вам нужно написать последовательную строку 's7-xxx#', где xxx-требуемый десятичный адрес (в строковой форме). Я написал простую программу на python для raspberry pi, чтобы изменить адреса датчиков через Rx Tx.

,

Если бы было хорошо добавить ссылку на то, где эта информация может быть найдена в официальной документации, если это возможно. Из того, что я понял, изменение * является * постоянным, или, скорее, энергонезависимым. Если это так, то, возможно, было бы хорошо сказать., @timemage