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ピンの近くにあり、追加の1つはピン20と21にあります。

ボードI2C / TWIピン

  • Uno、イーサネットA4(SDA)、A5(SCL)
  • Mega2560 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オームの間に1つ使用することをお勧めします
TheDoctor

Arduinoで5Vプルアップを使用すると(答えに名前が付けられています)、ボードが破損していると言えます。Arduino Dueは3.3Vロジックを使用し、5Vプルアップを必要としません。また、SDAとSCLはボードによって内部で既にプルアップされています。
ジョン


2

将来の読者のために:Adafruit_MCP23017ライブラリを使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.