Вопросы программирования библиотеки SoftWire для I2C с цифровыми выводами
Я пытаюсь использовать 3 лазерных датчика TOF10120 с одним Arduino, которые все имеют один и тот же фиксированный адрес I2C. Я не верю, что можно изменить адрес I2C TOF10120, но если я ошибаюсь, пожалуйста, дайте мне знать (кроме того, мне нужно 3 разных адреса). При этом я пытаюсь использовать библиотеку SoftWire (https://github.com/stevemarple/SoftWire - очень интересная библиотека, но не очень хорошая документация), чтобы помочь мне использовать мои три датчика с цифровыми контактами. Есть ли у кого-нибудь опыт работы с библиотекой SoftWire и получения показаний лазерного датчика?
Я могу предоставить код, который у меня есть, но в любом случае это, вероятно, будет не очень полезно. Мне особенно любопытно, как использовать функции digitalWrite() и digitalRead() для I2C с программным обеспечением.
Заранее спасибо за всю помощь!
@Alex88, 👍1
Обсуждение1 ответ
Вы можете изменить tof10120 на любой адрес i2c в диапазоне от 1 до 254. вам нужно написать последовательную строку 's7-xxx#', где xxx-требуемый десятичный адрес (в строковой форме). Я написал простую программу на python для raspberry pi, чтобы изменить адреса датчиков через Rx Tx.
Если бы было хорошо добавить ссылку на то, где эта информация может быть найдена в официальной документации, если это возможно. Из того, что я понял, изменение * является * постоянным, или, скорее, энергонезависимым. Если это так, то, возможно, было бы хорошо сказать., @timemage
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- В чем разница между analogWrite и digitalWrite?
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отправить строку на мастер с помощью i2c
- Как выбрать альтернативные контакты I2C на ESP32?
- Что означает в I2C «NACK получен»?
вы задаете вопросы о датчике, но не предоставили никакой документации по нему, @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