Arduino ile Led Yakma

Arduino meraklılarının öğrenmeye başlarken yaptıkları en basit proje Arduino ile led yakıp söndürme uygulamasıdır. Şimdi bu kolay uygulama için önce devre kurulum şemasını sonra da Arduino led yakma kodlarını görelim. Bundan önce LED Nedir? buna bakalım.

LED, Light Emitting Diode (Türkçesi ışık yayan diyot) sözcüklerinin baş harflerinden oluşan bir kısaltmadır. İsminden de anlaşılacağı üzere LED, bir diyottur. Bildiğimiz üzere diyot, akımın yalnızca bir yönden geçmesini sağlayan iki bacaklı yarı-iletken bir devre elemanıdır.

LED’in de diğer diyotlar gibi yapısında p-tipi ve n-tipi olmak üzere iki farklı çeşit yarı-iletken madde bulunur. P-tipi yarı-iletkende pozitif yük taşıyıcılar, n-tipi yarı-iletkende ise negatif yük taşıyıcılar bulunur. Bu sayede, diyot üzerinden yalnızca anottan katot yönünde elektrik akımı geçişi mümkündür

Gerekli Malzemeler

arduino led, Arduino ile Led Yakma
LED
arduino led, Arduino ile Led Yakma
Devre Şeması Led

//Ledin baglı oldugu pin numarasını ledPin adlı değişkene aktardık.
int ledPin=2;
 
void setup() {  
pinMode(ledPin, OUTPUT);
 
}
 
void loop() {
//Led'in bağlı olduğu pine güç verdik ve 1 saniye beklettik  
digitalWrite(ledPin, HIGH);
delay(1000);
 
//Led'in bağlı olduğu pinin gücünü kestik ve 1 saniye beklettik  
digitalWrite(ledPin, LOW);
delay(1000);

HIGH Çıkışların 5V , LOW Çıkışlarında 0V verdiği için led imiz 1 saniye aralıklarla yanıp sönecektir.

Shift Register Çalışma Mantığı

74HC595 ‘den pek farklı olmasada, daha önce bahsedildiği gibi HEF4094 entegresi 3 girişle kontrol edilen 8-bit seri çıkışı olan bir shift register entegresidir. Burada bahsedilen 3 giriş:

Çalışma mantığı ise oldukça basit. Öncelikle latch girişini “0” yapıyoruz. Böylece sistem data okumaya hazır hale geliyor. Data pinine hafızaya alınmasını istediğimiz değeri veriyoruz. Clock pinine saat darbesi (Clock Pulse) gönderdiğimiz zaman bu data en küçük bite yazılıyor. Yazım işleminin yanında geriye kalan bitler kendisinden büyük olan pine kaydırılırken en büyük bit siliniyor. 8 adet saat darbesi yapıldığında ise eski 8 bitlik değerler giderken, yeni verilen 8 bitlik data hafızaya alınmış oluyor. Devamında latch pini “1” yaptığımızda ise bu 8 bitlik değer çıkışa veriliyor.Bu animasyon ile shift-register metodunun temelleri oturmuş olucak.

arduino led, Arduino ile Led Yakma

Arduino ile Shift Register Kullanımı

Arduinonun kendi kütüphanesinde Shift-Register entegreleri için “shiftOut” kodunu barındırır. Fakat çalışma mantığının anlaşılması için önce bu kodu kullanmadan nasıl kontrol edildiğine bakalım. Ben normal led kullandım fakat 1 digit 7 segment ilede kullanabilirsiniz.

arduino led, Arduino ile Led Yakma

Arduino Kodu

int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
byte led = 0;
void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

  pinMode(clockPin, OUTPUT);

}

void loop()

{

  led = 0;

  register_et();

  delay(200);

  for (int i = 0; i < 8; i++)

  {

    bitSet(led, i);

    register_et();

    delay(200);

  }

  for (int i = 8; i >= 0; i--)

  {

    bitClear(led, i);

    register_et();

    delay(200);
  }
}
void register_et()

{

  digitalWrite(latchPin, LOW);

  shiftOut(dataPin, clockPin, LSBFIRST, led);

  digitalWrite(latchPin, HIGH);

}

Kod Açıklaması

Kodumuzun ilk kısmında her zaman yaptığımız gibi çıkış pinlerimizi tanımladık. leds isiml 8 bitlik bir değişken tanımladık (byte tipindeki değişkenler 8 bit büyüklüğündedir). Bu baytın her bir biti, bizim shift register’ımızın çıkışına bağlı olan LED’leri temsil ediyor. register_eT fonksiyonumuz, shift register’ın çalışması için gerekli işlemleri yapıyor. loop fonksiyonumuzda bu fonksiyonu çağırarak led değişkeninde yaptığımız değişiklikleri LED’lerimize aktarmak için bu fonksiyonu çağırıyoruz. loop fonksiyonumuzda ise iki adet for döngüsü kullandık. İlk for döngüsü, leds değişkenimizdeki 8 bitten her birini sırayla 1 yaparak 00000001, 00000011, 00000111… şeklinde bir desen elde etmemizi sağlayacak. Her bir bit 1 olduktan sonra (11111111), ikinci for döngüsü başlayarak bu sefer bitleri 0’layarak 01111111, 00111111,00011111… desenini oluşturacak.

7-Segment 1 Digit İçin Şema

arduino led, Arduino ile Led Yakma
arduino led, Arduino ile Led Yakma