Доброго времени суток, товарищи! Недавно начал изучать I2C шину. В процессе изучения возникло несколько вопросов. Для каких устройств может использоваться I2C? Можно ли использовать I2C для управления моторами и сервоприводами?Если да, то как узнать их адрес? У каких устройств можно узнать адрес - у простеньких фоторезисторов или только у микросхем и более сложных датчиков? Заранее спасибо!
для любых, где нужна скоростная передача данных, а большое количество сигнальных линий использовать затруднительно. можно. Адрес имеют I2C-контроллеры, а моторы, сервоприводы, фоторезисторы можно подключить к ним через усилительные каскады и обвязку. Фиксированный адрес имеют многие микросхемы, также некоторые их них позволяют менять адрес их нескольких возможных (запайкой перемычек). Адрес можно узнать из даташита, а также загрузив скетч (поиск по "arduino i2c scanner"). I2C - изначально межплатный протокол, не рассчитанный на большие расстояния, поэтому при длине линии более 25 см корректная передача данных не гарантируется (но вполне возможна, сейчас будут писать: "а у меня работает"), это надо учитывать.
Получается, что если подключить мотор через L293D, то можно будет общаться с ним по I2C, а адрес микросхемы можно узнать в datasheet?
нет, L293D не умеет работать по I2C-протоколу. Но если L293D подключить к I2C-контроллеру типа PCF8574 / DS2408 / PCA9532, то будет именно то, что задумано - передача команд управления на моторы всего по 4 проводам, причем независимо от количества моторов P.S. вот для расширения кругозора: http://homes-smart.ru/index.php/oborudovanie/prochee/rasshiryaem-porty
Чтобы подключить любой девайс к I2C - есть спец-микрухи, типа pcf8574. Чтобы вынести I2C подальше - есть микрухи - удлинители I2C.