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

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

  12. Bağlantıların tamamını gösterildiği gibi gerçekleştirdim. kitaptaki kodları kullandım sizin verdiğiniz kodları kullandım kendi araştırmalarımla farklı kodlar buldum kullandım bunun yanısıra farklı led farklı dirençler farklı yuvalarla denedim ancak program karta başarıyla yüklenmesine rağmen breadboard a aktarım gerçekleşmiyor sanırım bu yüzden led de herhangi bir yanıp sönme olayı gerçekleşmiyor.

    • Daha yüksek bir değerde direnç kullanabilirsiniz, fakat direnç değeri yükseldikçe Ohm kanunu gereği LED üzerinden daha düşük akım geçeceğinden LED’in parlaklığı azalacaktır.

  13. Merhaba . butona bastiktan sonra elimi butondan cektigim anda led yanson ve 10 sn sonra sonsun istiyorum . kodlari nasil olur acaba . yardimci olabilirseniz sevinirim.

  14. Arduino:1.8.1 (Windows 7), Kart:”Arduino/Genuino Uno”

    C:\Users\oem\Desktop\park_sensor\led\led.ino: In function ‘void loop()’:

    led:16: error: too many arguments to function ‘void digitalWrite(uint8_t, uint8_t)’

    digitalWrite(2,3,4,HIGH);

    ^

    In file included from sketch\led.ino.cpp:1:0:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:134:6: note: declared here

    void digitalWrite(uint8_t, uint8_t);

    ^

    led:17: error: too many arguments to function ‘void digitalWrite(uint8_t, uint8_t)’

    digitalWrite(5,6,HIGH)

    ^

    In file included from sketch\led.ino.cpp:1:0:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:134:6: note: declared here

    void digitalWrite(uint8_t, uint8_t);

    ^

    led:18: error: expected ‘;’ before ‘delay’

    delay(1000)

    ^

    exit status 1
    too many arguments to function ‘void digitalWrite(uint8_t, uint8_t)’

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    Bende böyle bir sorun çıktı yardımcı olurmusunuz?

  15. 250 ohm led direnci ile takılacak direncin toplamıdır. Bıu uygulamada siz led direncini 0 volt olarak hesaba katmışsınız

    • Evet doğru. Direncin amacı akımı sınırlamak olduğu için iç dirençle toplamı daha yüksek olacağından, en kötü ihtimalle dirence gidecek akımın daha da azalmasını sağlayacaktır.

  16. Selam. Ben arduino ya yeni basladim. Ne yazilim nede elektronik bilgim var. Elektrikten amatorce anlarim. Anlatilanlarin bir kismini anliyorum. Anlamadiklarimida diger kaynaklardan arastirarak cozmeye calisiyorum. Benim size bir sorum olacak. Ben elektrikler kesildiginde otomatik olarak acilacak akuden beslenen ledler yapmak istiyorum. Elektrik geldiginde akuyu sarj edecek, aku doldugundada akuye elektrik vermeyi kesecek. Arduino ile bunu yapabilir miyim. Arduinoya akunun voltajini kontrol ettirip akimini kesmek mumkun mu
    Bu arada verdiginiz emek icin size tesekkur ederim.t

    • Mümkündür. Akü şarj aletini bir röle ile anahtarlayarak hem şebeke elektriğinin varlığını kontrol edebilirsiniz. Başka bir röle ile de elektrik kesilmesi durumunda LED’lerin yanmasını sağlayabilirsiniz. Rölenin ortak ve NO kontaklarını tıpkı bir buton bağlar gibi Arduino’nun dijital pinlerine bir pull-down direnci ile bağlamanız mümkündür. Tekrar hatırlatmak isteriz ki, eğer 220V şebeke gerilimi ile fazla tecrübeniz yoksa ve yaptığınız işlemden çok emin değilseniz ekstra dikkatli davranmanızda fayda vardır. Bağlantı şeması: https://cdn-blog.adafruit.com/uploads/2012/09/button_schem.png

          • Selamunaleykum
            Hocam bunun yazilimini bana atarmisiniz.
            İf komutu nu kullanmam gerekiyor mu?
            Akuler doldugunda akim kesilecek mi?
            İhtiyacim olan malzemeler sanirim arduino yaninda
            220 ohm direnc
            2 role
            Dogrumudur.
            Bu projede 6v 4amper seri baglanmis 2 akuyu sarj edecegim.
            Saygilarimla

  17. İlginiz için çok teşekkür ederim Kerem Bey.
    6v 4a 2 adet aküyü seri bağlayıp şarj etmeyi düşünüyorum. Elimde Ayarlanabilir Step Up Boost Voltaj Regülatör Kartı – XL6009 – 4 A var aküleri bununla harici veya Arduino dan alabilirsem Arduino ile beslemek istiyorum. Bana PULL DOWN direnç kullanmamı söylüyorsunuz. araştırdığım kadarıyla PULL UP direnç olarak eleman yok. sadece direncin bağlanma şekli, doğru anlamış mıyım.
    bana yazılımı ve detaylı bir şemasını verebilir-misiniz. yada bununla ilgili ders yaza bilir misiniz.
    Kullanmam gereken malzemelerin listesini verebilir misiniz
    Burda özellikle istediğim şey akünün dolduğunda, aküye giden voltajın kesilmesi.(Aküleri korumak amacıyla)
    (Elimde Arduino uno ve Mini pro mevcut)
    Umarım Haddimi aşmamışımdır.
    Çok teşekkür ederim

  18. Öncelikle çok teşekkür ederim Kerem Bey, benim devremde led sürekli yanıyor. Tekrar kapanmıyor, kodda ilk sıraya hangi komutu yazarsam işleme onu alıp bekliyor.Sebebi ne olabilir??

    • Kodun alt kısmındaki satırları comment (yorum) olarak almış olabilir misiniz? /* ile veya // ile başlayan satırlar yorum satırıdır ve fonksiyon olarak çalışmazlar.

CEVAP VER

Please enter your comment!
Please enter your name here