Как использовать устройства I2C с Arduino?

12

У меня есть несколько полезных компонентов I2C, таких как 16-разрядный расширитель портов (MCP23017), который я хотел бы использовать в различных проектах.

Что мне нужно сделать, чтобы заставить их работать с Arduino? Будет ли он работать с любым Arduino, или мне нужна конкретная доска или щит?

Питер Блумфилд
источник

Ответы:

9

У Arduino есть библиотека проводов, которая связывается с I2C.

Эта библиотека позволяет вам общаться с устройствами I2C / TWI. На платах Arduino с разметкой R3 (разводка 1,0) SDA (линия передачи данных) и SCL (линия синхронизации) находятся на разъемах выводов рядом с выводом AREF. Arduino Due имеет два интерфейса I2C / TWI, SDA1 и SCL1 находятся рядом с выводом AREF, а дополнительный - на контактах 20 и 21. В качестве справочной информации в таблице ниже показано расположение контактов TWI на различных платах Arduino.

Плата I2C / TWI, контакты

  • Uno, Ethernet A4 (SDA), A5 (SCL)
  • Mega2560 20 (SDA), 21 (SCL)
  • Леонардо 2 (SDA), 3 (SCL)
  • Due 20 (SDA), 21 (SCL), SDA1, SCL1

Вы можете взглянуть на эти примеры.

Как сказал @TheDoctor:

Для линий передачи данных I2C нужны резисторы до 3,3 В. Это удерживает их от дрейфа, если они отключены. Значение резистора Andy должно работать, но рекомендуется использовать один от 10 кОм до 47 кОм.

Butzke
источник
1
Не забудьте подтягивающие резисторы на линиях I2C
TheDoctor
1
Чтобы расширить это, обеим линиям данных i2c нужны резисторы на 5В. Это удерживает их от дрейфа, если они отключены. Значение резистора Энди должно работать, но рекомендуется использовать один от 10 кОм до 47 кОм
TheDoctor
Надо сказать, что если вы используете подтягивания 5 В на Arduino из-за (который был назван в ответе), вы повредили плату. В Arduino Due используется логика 3,3 В, и для этого НЕ требуется подтягивания 5 В, также платы и SDA и SCL уже подключены внутри.
Джон
3

Дополнительные щиты не нужны.

Вам нужна только библиотека проводов и пара проводов для подключения устройства к SDA и SCL .

Положение этих выводов на разных Arduinos разное, пожалуйста, посмотрите здесь .

Клаус-Дитер Варцеха
источник
2

Для будущих читателей: используйте библиотеку Adafruit_MCP23017.

Гордон
источник