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 Nedir?

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 Nasıl Çalışı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 Kartı
  • Herhangi Bir Led
  • 220-330 Ohm Direnç
  • Jumper ve Breadboard
Arduino ile Led Yakma arduino ile led yak
LED

Devre Şeması

Arduino ile Led Yakma
Devre Şeması Led

Arduino Led Kodu

//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.

Proje Üzerine Çalışmalar

LED yakma projesi, başlangıç için temel bir projedir ve Arduino ile birçok farklı projeye adım atmanızı sağlar. İlerleyen seviyelerde LED parlaklığını kontrol etmek, farklı LED’lerle senkronize ışık gösterileri yapmak veya buton gibi ek bileşenler eklemek gibi adımlarla projeyi geliştirebilirsiniz.

Arduino ile LED yakma, elektronik dünyasına ilk adımı atmak isteyenler için basit ve öğretici bir projedir.

Ekstra: LED Driver Kullanarak

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ş:

  • Seri Data Girişi
  • Clock Girişi
  • Latch Girişi

Ç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 ile Led Yakma arduino ile led yak

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 ile Led Yakma arduino ile led yak

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 ile Led Yakma arduino ile led yak
Arduino ile Led Yakma arduino ile led yak


Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.