Bagaimana cara menggunakan perangkat I2C dengan Arduino?

12

Saya memiliki beberapa komponen I2C yang berguna, seperti port expander 16-bit (MCP23017), yang ingin saya gunakan dalam berbagai proyek.

Apa yang harus saya lakukan untuk membuat ini bekerja dengan Arduino? Apakah ini akan bekerja dengan Arduino, atau apakah saya memerlukan papan atau perisai khusus?

Peter Bloomfield
sumber

Jawaban:

9

Arduino memiliki Perpustakaan Kawat yang berkomunikasi dengan I2C.

Perpustakaan ini memungkinkan Anda untuk berkomunikasi dengan perangkat I2C / TWI. Pada papan Arduino dengan tata letak R3 (pinout 1.0), SDA (jalur data) dan SCL (garis jam) ada di header pin dekat dengan pin AREF. Arduino Due memiliki dua antarmuka I2C / TWI SDA1 dan SCL1 yang dekat dengan pin AREF dan yang tambahan ada di pin 20 dan 21. Sebagai referensi, tabel di bawah ini menunjukkan di mana pin TWI berada di berbagai papan Arduino.

Papan pin I2C / TWI

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

Anda dapat melihat contoh-contoh ini .

Seperti yang dikatakan @TheDoctor:

Garis data I2C keduanya membutuhkan resistor ke 3.3V. Ini menjaga mereka dari melayang jika dinonaktifkan. Nilai resistor Andy harus bekerja, tetapi disarankan untuk menggunakan satu antara 10k ohm dan 47k ohm.

Butzke
sumber
1
Jangan lupa pullup resistor pada jalur I2C
TheDoctor
1
Untuk memperluasnya, jalur data i2c keduanya membutuhkan resistor hingga 5v. Ini menjaga mereka dari melayang jika dinonaktifkan. Nilai resistor Andy harus berfungsi, tetapi disarankan untuk menggunakan satu di antara 10k ohm dan 47k ohm
TheDoctor
Harus dikatakan bahwa jika Anda menggunakan 5V pullup pada Arduino karena (yang disebutkan dalam jawaban) Anda telah merusak papan. Arduino Due menggunakan logika 3.3V dan TIDAK perlu 5V pullup, juga SDA dan SCL sudah ditarik secara internal oleh dewan.
John
3

Perisai tambahan tidak diperlukan.

Anda hanya perlu perpustakaan Wire dan beberapa kabel untuk menghubungkan perangkat ke SDA dan SCL .

Posisi pin ini berbeda pada berbagai Arduino, silakan lihat di sini .

Klaus-Dieter Warzecha
sumber
2

Untuk pembaca masa depan: gunakan perpustakaan Adafruit_MCP23017.

Gordon
sumber