Arduino에서 I2C 장치를 어떻게 사용합니까?


12

16 비트 포트 확장기 (MCP23017)와 같은 몇 가지 유용한 I2C 구성 요소가 있으며 다양한 프로젝트에서 사용하고 싶습니다.

Arduino에서 이러한 작업을 수행하려면 어떻게해야합니까? Arduino와 함께 작동합니까, 아니면 특정 보드 또는 방패가 필요합니까?

답변:


9

Arduino에는 I2C와 통신 하는 Wire Library 가 있습니다.

이 라이브러리를 사용하면 I2C / TWI 장치와 통신 할 수 있습니다. R3 레이아웃 (1.0 핀아웃)이있는 Arduino 보드에서 SDA (데이터 라인) 및 SCL (클럭 라인)은 AREF 핀에 가까운 핀 헤더에 있습니다. Arduino Due에는 2 개의 I2C / TWI 인터페이스가 있습니다. SDA1 및 SCL1은 AREF 핀에 가깝고 추가는 핀 20 및 21에 있습니다. 아래 표는 다양한 Arduino 보드에서 TWI 핀이있는 위치를 나타냅니다.

보드 I2C / TWI 핀

  • Uno, 이더넷 A4 (SDA), A5 (SCL)
  • 메가 2560 20 (SDA), 21 (SCL)
  • 레오나르도 2 (SDA), 3 (SCL)
  • 마감 20 (SDA), 21 (SCL), SDA1, SCL1

예제를 살펴볼 수 있습니다 .

@TheDoctor가 말한 것처럼 :

I2C 데이터 라인 모두 3.3V의 저항이 필요합니다. 비활성화 된 경우 표류되지 않습니다. 앤디 저항 값은 작동해야하지만 10k 옴에서 47k 옴 사이의 값을 사용하는 것이 좋습니다.


1
I2C 라인의 풀업 저항을 잊지 마십시오
TheDoctor

1
이를 확장하기 위해 i2c 데이터 라인 모두 5v에 대한 저항이 필요합니다. 비활성화 된 경우 표류되지 않습니다. 앤디 저항 값은 작동해야하지만 10k 옴에서 47k 옴 사이의 값을 사용하는 것이 좋습니다.
TheDoctor

Arduino에서 5V 풀업을 사용하면 답변에 이름이 지정되어 보드가 손상되었다고합니다. Arduino Due는 3.3V 로직을 사용하며 5V 풀업이 필요하지 않으며 SDA 및 SCL도 이미 보드에 의해 내부적으로 풀업되어 있습니다.
John


2

향후 독자 : Adafruit_MCP23017 라이브러리를 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.