Merhaba arkadaşlar. Arduino serimizdeki ilk uygulamamızda LED yakıp söndürmeyi öğreneceğiz.

Gerekli malzemelerimiz: Malzemelere yandaki kutucuktaki "sepete git" butonuna tıklayarak kolayca ulaşabilirsiniz.

BU DERSTEKİ TÜM ÜRÜNLERİ TEK SEPETE TOPLADIK!

Sepetten ihtiyacınız olmayanları çıkarabilirsiniz. Ya da ürün ekleyebilirsiniz. Stokta olmayan ürünler, sepette yer almaz. Liste ile sepeti kontrol edebilirsiniz. Toplam 75,56TL'ye ilk arduino projeni yapabilirsin. 

LED Nedir?

LED, ışık yayan diyot anlamına gelen Light Emitting Diode sözcüğünün baş harflerinden oluşan bir kısaltmadır. Alışık olduğumuz ve çoğu projemizde kullandığımız 6V ile çalışan ufak ampullerin aksine LED’lerin anot ve katot olmak üzere iki farklı bacağı vardır. Bunlardan anodu pozitif gerilime yani + uca,  katot ise negatif gerilime yani – uca ya da toprak hattına (GND, Ground) bağlanmalıdır.

Gerilim, Akım ve Ohm Yasası

Çeşitli devre elemanlarının farklı gerilim yani voltajlarda çalıştığını biliyoruz. Arduino kartımız ise 5V gerilimle çalışmaktadır. LED’imiz için ise bu durum biraz farklıdır. LED’in üzerinden geçecek maksimum akımın 20 mA (miliamper = amperin 1000’de 1’i) değerini geçmemesi gereklidir. Arduino’muz 5V ile çalışıyor demiştik. 5V değeri bize kartın çıkış gerilimini ifade etmektedir. Fakat LED 20 mA akıma ihtiyaç duymakta. Sanırım işler biraz karışmaya başladı. Korkmaya gerek yok! Her şeyin bir çözümü var 🙂

Eğer LED’imizi Arduino’ya doğrudan bağlayacak olursak, LED üzerinden kartın sağlayabileceği maksimum değerde akım geçecek ve LED’imiz veya kartımız bozulacaktır. Bunun için akım sınırlayıcı bir direnci LED’imize seri olarak bağlamamız gerekmekte. Peki bu direncin değeri nasıl belirlenecek? İşte burada Ohm Kanunu dediğimiz denklem devreye giriyor:

V = i x R

Bu denklemde V bize gerilimi, i akımı ve R ise direnci temsil ediyor. Eğer 20 mA akıma ihtiyaç duyan LED’i,  Arduino’muzun 5V çıkış sağlayan pinlerinden birine bağlayacak olursak;

5V = 0,020A x R

Denklemini elde etmiş oluruz. Bu denklemden R’yi çekecek olursak sonucu 250 buluruz. Bu demek oluyor ki LED’imizi 5V gerilimle kullanmak için 250 Ω (ohm) değerinde bir dirence ihtiyacımız var. Tam değeri doğru tutturmamız çok önemli değil, elimizde mevcut olan 220 Ω’luk direnci kullanabiliriz.

Bu kadar teorik bilgi şimdilik yeterli 🙂 Şimdi sıra Arduino programımızı hazırlamakta.

İlk dersimizde Arduino’yu tanıtırken, kart üzerinde 13 numaralı pine bağlı bir LED olduğundan bahsetmiştik. Bu LED’i yakıp söndürmek için herhangi bir ekstradan dirence ihtiyaç duyulmaz; direnç zaten kart üzerinde mevcuttur.

Arduino programımızı açıyoruz. Şu sırayı takip ederek “Blink” isimli örnek programı açıyoruz:

Dosya > Örnekler 01.Basics > Blink

Bu kodu beraber inceleyelim:

pinMode(13, OUTPUT);

Bu satır, kart üzerindeki 13 numaralı pini çıkış verecek şekilde ayarlıyor. Kullanacağımız pin çıkış veya giriş olarak belirlenmez ise programın devamında yazacağımız giriş veya çıkış fonksiyonları, o pini kullanamaz.

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);

Bu kısım ise öncelikle 13 numaralı pine HIGH lojik seviyesine, yani 5V’a ayarlıyor, 1000 milisaniye (1 saniyeye eşittir) hiçbir işlem yapmadan bekliyor ve bu sefer 13 numaralı pini lojik LOW yani 0V veya toprak hattı seviyesine ayarlıyor. Bu işlemi yaptıktan sonra mikokontrolcü, delay fonksiyonu sayesinde tekrardan 1 saniye hiçbir işlem yapmadan bekliyor.

Bu koddaki delay komutlarının sürelerini değiştirerek LED’in açık ve kapalı kaldığı süreleri değiştirebiliriz. Eğer başka bir pin kullanmak istersek tek yapmamız gereken pinMode ve digitalWrite fonksiyonlarında bulunan pin numarasını kullanmak istediğimiz pin numarası ile değiştirmek. LED’imize 220 Ω’luk bir direnci seri bağlamayı unutmuyoruz!

ARDUİNO EĞİTİM DERSLERİNİN TAMAMI TEK NOKTADA

39 Yorumlar

    • İlginiz için teşekkürler, devre şeması zaten farklı bir pin kullanmak isteyenler için referans olması için eklenmiştir. “Eğer başka bir pin kullanmak istersek tek yapmamız gereken pinMode ve digitalWrite fonksiyonlarında bulunan pin numarasını kullanmak istediğimiz pin numarası ile değiştirmek.”

  1. yapmış olduğunuz açıklama sayesinde günüm kurtuldu. Moralim bozulmuştu çalıştıramadığım için. Yetkiler bilerek bu hatayı yapmamışlardır ancak yeni başlayanlar için yıldırıcı olabilir. O yüzden ricam daha dikkatli olmaları. Emeği geçenlere teşekkür ederim.

  2. 220 lik herhangi bir direnc kullanilabilirmi bu ve bundan sonraki derslerde..sitede farkli isimlerde 220 lik direnc satisi var..hangisini kullanalim..

    • Her bir dijital çıkıştan maksimum 40mA çekebileceğinizden birden fazla LED’i tek bir çıkışa bağlamamanız daha doğru olacaktır.

  3. Hocam bende digital kısmında yalnızca 13 numara ve GND çalışıyor. Kodu yazmadan da bağlasam blink yapıyor. Biri robotistandan diğeri ise burada bir elektronikçiden aldığın iki Arduino klon için de aynı durum söz konusu. Bu işte bir terslik var ama ne olduğu konusunda yardımcı olur musunuz?

  4. Çalışmanız programın 928 bayt (2 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 9 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2039 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x20
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x30
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x20
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x30
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x20
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x30
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x20
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x30
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x20
    Taslak yüklenirken bir hata oluştu

    Arduino’yu W7 İşletim sistemli leptap’a taktım. Kartı seçtim ardından port’u seçtim ama sadece COM3 açıktı. Dolayısıyla otomatik onu seçti. Yukarıda verilmiş olan kodu aynı şekilde yazdım. Yükleme yerine tıkladım ve sonucunda bu hatayı verdi.

  5. Bu programı 6 yaşındaki bir cocuğa öğretmek çok zor. Daha basit bir programla yapma şansı var mıdır? Örnek Scratch. Teşekkürler.

  6. hocam resimdeki bağlantıda direnç katottan çıkış yapılmış ve eksiye gitmiş gerçi ben yeni başladım pek bilgim yok alıştığımız artı enerjiye direnç bağlanıp direncin diğer ucuda anoda bağlanması gerekmiyormu yada her iki durumdada çalışıyormu

  7. Arduino:1.8.2 (Windows 10), Kart:”Arduino/Genuino Uno”

    Çalışmanız programın 928 bayt (2 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 9 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2039 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    avrdude: ser_open(): can’t open device “\\.\COM1”: Sistem belirtilen dosyayı bulamıyor.

    Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  8. merhaba ben arduino yeni başlıyacağım için pek bilgili değilim ve küçük bir sorum olucak.
    sorum şu;
    birden fazla led takdığımız zaman her led için 220 ohm luk direnç mi bağlanır yoksa 220 ohm direnç den daha yüksek bir direnç mi bağlanır?
    şimdi den teşekkürler…

    • Yazıda da anlatmış olduğum gibi, her LED’in üzerinden 20mA akım geçecek şekilde direnç bağlamanız gerekir. Bu durumda, Arduino’nun dijital çıkışlarının her birine bağladığınız LED için ayrı bir 220 ohm değerinde dirence ihtiyacınız olacaktır.

  9. Çalışmanız programın 928 bayt (2 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 9 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2039 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    Sürekli bu hatayı alıyorum, klon kullanıyorum ama sitedeki gibi kurulumu da yaptım, bilgisayarım usbde görüyor arduinoyu, ne yapmam lazım?

    • Almış olduğunu bu mesaj hata mesajı değildir, yalnızca yazdığınız programın ne kadar bellek kullandığını belirtir.

  10. Arduino ya Blink kodu yüklediğim zaman kart üzerindeki L ışığı yanıyor, breadbord a aktaramıyorum. Bunu sebebi ne olabilir

  11. Merhabalar… Yaptığınız direnç hesabına ilişkin bir sorum olacaktı: 5V gerilimle beslenen devrede 20 mA akıma ihtiyacımız var ve bunun için ne kadarlık dirence ihtiyacımız olduğunu hesaplıyoruz. Ancak sizin yaptığınız hesapta devrede sanki sadece direnç elemanı yer alacakmış gibi davranmış olmuyor muyuz? Çünkü, devreye direnç dışında ledi de dahil ettiğimizde durum değişecektir, yani ledin direnci de devrenin toplam direncine dahil olmayacak mı? Örneğin kırmızı ledin çalışma gerilimi yaklaşık 2V. Led bir diyot olduğu için, bildiğim kadarıyla, çalışma geriliminden daha yüksek voltaj ile beslediğimizde direnci düşüyor ama 2V’a kadar olan direnci baki kalıyor. Dolayısıyla, bu direnç de devreye dahil olmaz mı? Nitekim, 220 ohm’luk dirençle led devresini kurup devreden geçen akımı ölçünce 20 mA değil, yaklaşık 14-15 mA akım geçtiğini görüyoruz. Bu durum, ledin de devreye direnç eklediğiyle açıklanabilir ancak. Hesabı 5V üzerinden yapmak yerine, direncin üzerine düşürmek istediğimiz gerilim değeri olan 3V üzerinden yapsak, daha doğru olmaz mı? Öyle yapınca, yaklaşık 150 ohm’luk bir dirençle devrede yaklaşık 20 mA akım elde edebiliyoruz. Teşekkürlerimle…

    • 15mA ile 20mA arasındaki fark LED’in parlaklığı ve ömrü için kayda değer bir fark oluşturmayacaktır. Buradaki LED’in kullanım amacı, sadece Arduino’nun dijital çıkışlarındaki değişimi gözlemleyebilmek olduğundan en basit yöntem olan direnç ile akım sınırlama yöntemini kullanıyoruz. LED aydınlatma gibi çözümlerde daha çok sabit akım veren güç kaynakları ile tüm LED’lerden eşit miktarda akım geçmesi sağlanır. Yorumunuz için teşekkür ederim.

CEVAP VER