I2C Ve Arduino Arayüzü

İçindekiler:

I2C Ve Arduino Arayüzü
I2C Ve Arduino Arayüzü

Video: I2C Ve Arduino Arayüzü

Video: I2C Ve Arduino Arayüzü
Video: Arduino I2C связь между контроллерами 2024, Kasım
Anonim

Bu yazıda bir I2C arayüzünün (ay-tu-si, i-two-tse) ne olduğuna, özelliklerinin neler olduğuna ve onunla nasıl çalışılacağına bakacağız.

I2c arayüzü
I2c arayüzü

Bu gerekli

  • -Arduino;
  • - dijital potansiyometre AD5171;
  • - Işık yayan diyot;
  • - 220 ohm direnç;
  • - 4,7 kOhm için 2 direnç;
  • - bağlantı kabloları.

Talimatlar

Aşama 1

IIC seri iletişim protokolü (I2C - Inter-Integrated Circuits olarak da adlandırılır), verileri aktarmak için SDA (Seri Veri) veriyolu ve SCL (Seri Saat) veriyolu olarak adlandırılan iki çift yönlü iletişim hattı kullanır. Ayrıca iki elektrik hattı vardır. SDA ve SCL baraları, dirençler aracılığıyla güç barasına çekilir.

Ağda veri iletimini başlatan ve senkronizasyon sinyalleri üreten en az bir Master vardır. Ağ ayrıca, master'ın talebi üzerine veri ileten kölelere de sahiptir. Her bağımlı aygıtın, ana aygıtın kendisine hitap ettiği benzersiz bir adresi vardır. Cihaz adresi pasaportta (veri sayfası) belirtilmiştir. Birkaç master dahil olmak üzere bir I2C veriyoluna 127 adede kadar cihaz bağlanabilir. Cihazlar, çalışma sırasında veri yoluna bağlanabilir, yani. sıcak takmayı destekler.

I2C bağlantı şeması
I2C bağlantı şeması

Adım 2

Arduino, I2C arayüzü üzerinde çalışmak için iki port kullanır. Örneğin Arduino UNO ve Arduino Nano'da analog bağlantı noktası A4 SDA'ya, analog bağlantı noktası A5 ise SCL'ye karşılık gelir.

Diğer kart modelleri için:

Arduino Pro ve 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

Arduino pinlerini SDA ve SCL otobüslerine eşleme
Arduino pinlerini SDA ve SCL otobüslerine eşleme

Aşama 3

I2C bus üzerinden cihazlarla veri alışverişini kolaylaştırmak için Arduino için standart bir "Wire" kütüphanesi yazılmıştır. Aşağıdaki işlevlere sahiptir:

start (adres) - kütüphanenin başlatılması ve I2C veriyoluna bağlantı; adres belirtilmemişse, bağlı cihaz ana cihaz olarak kabul edilir; 7 bit adresleme kullanılır;

requestFrom () - master tarafından slave'den belirli sayıda bayt istemek için kullanılır;

startTransmission (adres) - belirli bir adreste bağımlı cihaza veri aktarımının başlangıcı;

endTransmission () - köleye veri iletiminin sonlandırılması;

write () - bir isteğe yanıt olarak köleden veri yazma;

mevcut () - köleden alınabilecek bilgilerin bayt sayısını döndürür;

read () - köleden master'a veya master'dan slave'e aktarılan bir baytı okuyun;

onReceive () - slave, master'dan bir iletim aldığında çağrılacak işlevi belirtir;

onRequest () - Master, slave'den bir iletim aldığında çağrılacak bir işlevi belirtir.

4. Adım

Arduino kullanarak I2C veri yolu ile nasıl çalışılacağını görelim.

İlk olarak devreyi şekildeki gibi monte edeceğiz. I2C veriyoluna bağlanan AD5171 64 konumlu dijital potansiyometreyi kullanarak LED'in parlaklığını kontrol edeceğiz. Potansiyometreye başvuracağımız adres 0x2c'dir (ondalık olarak 44).

Dijital potansiyometre ve Arduino kullanan LED kontrol devresi
Dijital potansiyometre ve Arduino kullanan LED kontrol devresi

Adım 5

Şimdi "Wire" kütüphane örneklerinden bir kroki açalım:

Dosya -> Örnekler -> Tel -> digital_potentiometer. Arduino hafızasına yükleyelim. Açalım.

Görüyorsunuz, LED'in parlaklığı döngüsel olarak yükseliyor ve sonra aniden sönüyor. Bu durumda potansiyometreyi Arduino kullanarak I2C bus üzerinden kontrol ediyoruz.

Önerilen: