¿Cómo uso los dispositivos I2C con Arduino?

12

Tengo algunos componentes I2C útiles, como un expansor de puerto de 16 bits (MCP23017), que me gustaría usar en varios proyectos.

¿Qué necesito hacer para que estos funcionen con Arduino? ¿Funcionará con cualquier Arduino, o necesito una placa o escudo específico?

Peter Bloomfield
fuente

Respuestas:

9

Arduino tiene la Biblioteca Wire que se comunica con I2C.

Esta biblioteca le permite comunicarse con dispositivos I2C / TWI. En las placas Arduino con el diseño R3 (1.0 pinout), el SDA (línea de datos) y SCL (línea de reloj) están en los encabezados de pin cerca del pin AREF. El Arduino Due tiene dos interfaces I2C / TWI SDA1 y SCL1 que están cerca del pin AREF y el adicional está en los pines 20 y 21. Como referencia, la siguiente tabla muestra dónde se ubican los pines TWI en varias placas Arduino.

Tablero I2C / TWI pines

  • Uno, Ethernet A4 (SDA), A5 (SCL)
  • Mega2560 20 (SDA), 21 (SCL)
  • Leonardo 2 (SDA), 3 (SCL)
  • Vencimiento 20 (SDA), 21 (SCL), SDA1, SCL1

Puedes echar un vistazo a estos ejemplos.

Como @TheDoctor dijo:

Las líneas de datos I2C necesitan resistencias de 3.3V. Esto evita que se desvíen si están deshabilitados. El valor de resistencia de Andy debería funcionar, pero se recomienda usar uno entre 10k ohmios y 47k ohmios.

Butzke
fuente
1
No olvide las resistencias pullup en las líneas I2C
TheDoctor
1
Para ampliar eso, las líneas de datos i2c necesitan resistencias de 5v. Esto evita que se desvíen si están deshabilitados. El valor de resistencia de Andy debería funcionar, pero se recomienda usar uno entre 10k ohm y 47k ohm
TheDoctor
Debe decirse que si usa pullups de 5V en el Arduino debido (que se mencionó en la respuesta), ha dañado la placa. El Arduino Due usa una lógica de 3.3V y NO necesita pullups de 5V, también SDA y SCL ya están incorporados internamente por la placa.
John
3

No se necesitan escudos adicionales.

Solo necesita la biblioteca Wire y un par de cables para conectar el dispositivo a SDA y SCL .

La posición de estos pines es diferente en los diversos Arduinos, por favor, eche un vistazo aquí .

Klaus-Dieter Warzecha
fuente
2

Para futuros lectores: use la biblioteca Adafruit_MCP23017.

Gordon
fuente