Antara Muka I2C Dan Arduino

Isi kandungan:

Antara Muka I2C Dan Arduino
Antara Muka I2C Dan Arduino

Video: Antara Muka I2C Dan Arduino

Video: Antara Muka I2C Dan Arduino
Video: Arduino I2C связь между контроллерами 2024, November
Anonim

Dalam artikel ini kita akan melihat apa itu antara muka I2C (ay-tu-si, i-two-tse), apa ciri-cirinya dan bagaimana untuk bekerja dengannya.

Antara muka I2c
Antara muka I2c

Ia perlu

  • - Arduino;
  • - potensiometer digital AD5171;
  • - Diod pemancar cahaya;
  • - Perintang 220 ohm;
  • - 2 perintang untuk 4.7 kOhm;
  • - wayar penyambung.

Arahan

Langkah 1

Protokol komunikasi bersiri IIC (juga disebut I2C - Inter-Integrated Circuits) menggunakan dua jalur komunikasi dua arah untuk memindahkan data, yang disebut bas SDA (Serial Data) dan bas SCL (Serial Clock). Terdapat juga dua talian kuasa. Bas SDA dan SCL ditarik ke bas kuasa melalui perintang.

Terdapat sekurang-kurangnya satu Master dalam rangkaian yang memulakan penghantaran data dan menghasilkan isyarat penyegerakan. Rangkaian ini juga mempunyai hamba yang mengirimkan data atas permintaan tuan. Setiap peranti hamba mempunyai alamat unik di mana tuan mengalaminya. Alamat peranti ditunjukkan dalam pasport (lembar data). Sehingga 127 peranti boleh disambungkan ke satu bas I2C, termasuk beberapa master. Peranti boleh dihubungkan ke bas semasa operasi, iaitu ia menyokong pemalam panas.

Gambar rajah sambungan I2C
Gambar rajah sambungan I2C

Langkah 2

Arduino menggunakan dua port untuk berfungsi pada antara muka I2C. Sebagai contoh, di Arduino UNO dan Arduino Nano, port analog A4 sepadan dengan SDA, port analog A5 sepadan dengan SCL.

Untuk model papan lain:

Arduino Pro dan Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Memetakan pin Arduino ke bas SDA dan SCL
Memetakan pin Arduino ke bas SDA dan SCL

Langkah 3

Untuk memudahkan pertukaran data dengan peranti melalui bas I2C, perpustakaan "Wire" standard telah ditulis untuk Arduino. Ia mempunyai fungsi berikut:

mula (alamat) - permulaan perpustakaan dan sambungan ke bas I2C; jika tidak ada alamat yang ditentukan, maka peranti yang disambungkan dianggap sebagai tuan; Pengalamatan 7-bit digunakan;

requestFrom () - digunakan oleh master untuk meminta sebilangan bait dari hamba;

beginTransmission (alamat) - permulaan pemindahan data ke peranti hamba pada alamat tertentu;

endTransmission () - penamatan penghantaran data kepada hamba;

write () - menulis data dari hamba sebagai tindak balas kepada permintaan;

tersedia () - mengembalikan bilangan bait maklumat yang tersedia untuk diterima dari hamba;

baca () - baca bait yang dipindahkan dari hamba kepada tuan atau dari tuan kepada hamba;

onReceive () - menunjukkan fungsi yang akan dipanggil ketika hamba menerima penghantaran dari tuan;

onRequest () - Menunjukkan fungsi yang akan dipanggil semasa tuan menerima penghantaran dari hamba.

Langkah 4

Mari lihat bagaimana bekerjasama dengan bas I2C menggunakan Arduino.

Pertama, kita akan memasang litar, seperti yang ditunjukkan dalam gambar. Kami akan mengawal kecerahan LED menggunakan potensiometer digital AD5171 64-kedudukan, yang menghubungkan ke bas I2C. Alamat di mana kita akan merujuk kepada potensiometer adalah 0x2c (44 dalam perpuluhan).

Litar kawalan LED menggunakan potensiometer digital dan Arduino
Litar kawalan LED menggunakan potensiometer digital dan Arduino

Langkah 5

Sekarang mari kita buka lakaran dari contoh perpustakaan "Wire":

Fail -> Sampel -> Kawat -> digital_potentiometer. Mari memuatkannya ke dalam memori Arduino. Mari hidupkan.

Anda lihat, kecerahan LED meningkat secara kitaran, dan kemudian tiba-tiba padam. Dalam kes ini, kita mengawal potensiometer menggunakan Arduino melalui bas I2C.

Disyorkan: