Arduino Projeleri

Arduino Port Çoğullama İşlemi

Arduino Port Çoğullama İşlemi

Arduino Port Çoğullama İşlemi

Arduino Port Çoğullama İşlemi

Charlieplexing” terimi birçok elektronik meraklıları için tanıdık bir kavram değildir. Bu teknoloji tasarımı 1995 yılında Charlie Ailen tarafından geliştirilmiştir, örnek projede üç giriş/çıkış pini ile 6 adet led kontrol edilmiştir. Buradaki asıl amaç, az giriş/çıkış pini ile fazla sayıda bağlantı ucu bulunan nesneleri kontrol etmektir.

Bazen Arduino pinleri projelerimiz için yeterli gelmemektedir. LCD Display, birkaç led veya sensör eklediğimizde kullanacağımız pin sayısı azalmaktadır. Aşağıda Charlieplexing (port çoğullama) işlemi ile Arduino kullanımını göreceğiz

Kullanılan Malzemeler

Tasarım

Prensip olarak Charlieplexing tekniği ile “n” tane çıkıştan “n2-n” tane çoğullama yapabiliriz. Üç adet çıkışta altı adet led yakabiliriz. Kullanılan bu tekniğe aynı zamanda “3 durum tekniği” de denir. Dijital devrelerde, Mikrodenetleyicilerin l/O pinleri üç farklı durumda bulunabilir. Bir pini çıkış olarak ayarlanmışsa bu pin H (lojik 1) ya da L (lojik 0) olabilir. Eğer pin giriş olarak ayarlanırsa pin yüksek empedans (High Z) olur. l/O pinleri için lojik seviye genellikle mikrodenetleyici besleme gerilimi seviyesindedir. Yüksek empedans modunda ise pin mega ohm‘lar mertebesinde direnç gösterir.

Arduino Dijital 5,6,7 pinlerinden çıkan kabloları sırasıyla 100 ohm dirençlere bağlayıp direnç uçlarını ters led bağlantısı ile birleştiriniz.

Kodlar

Çıkış pinlerinin hangi dijital uçtan geldiğini belirledikten sonra bunların hepsini giriş verisi olarak kabul ediyoruz. Daha sonra uygulanan set_ pins () fonksiyonu ile çıkış pinleri sırasıyla yükseltip alçaltılıyor. İşlemler 100 mikrosaniye aralıklarla tüm pinlere 2 defa uygulandığı için sönme olayı gözle görülemiyor ve sanki 6 led aynı anda yanıyor gibi görünüyor. reset_pins() fonksiyonu ise pinleri giriş kabul edip hepsini alçaltmak, söndürmek içindir. Bir nevi temizlik diyebiliriz.

#define LED_1 5

#define LED_2 6

#define LED_3 7

 

void setup()

{

   pinMode(LED_1, INPUT);

   pinMode(LED_2, INPUT);

   pinMode(LED_3, INPUT);

}

 

void loop()

{

   set_pins(LED_1, LED_2);

   delay(100);

   set_pins(LED_2, LED_1);

   delay(100);

   set_pins(LED_3, LED_1); 

   delay(100);

   set_pins(LED_1, LED_3);

   delay(100);

   set_pins(LED_2, LED_3);

   delay(100);

   set_pins(LED_3, LED_2);

   delay(100); 

}

 

void set_pins(int high_pin, int low_pin)

{

   reset_pins();

   pinMode(high_pin, OUTPUT);

   pinMode(low_pin, OUTPUT);

   digitalWrite(high_pin, HIGH);

   digitalWrite(low_pin,LOW);

}

 

void reset_pins()

{

   pinMode(LED_1, INPUT); 

   pinMode(LED_2, INPUT);

   pinMode(LED_3, INPUT);

   digitalWrite(LED_1, LOW);

   digitalWrite(LED_2, LOW);

   digitalWrite(LED_3, LOW);

}