Gerekli malzemeler:

Arduino kartımızın dijital pinlerini şimdiye kadar sadece çıkış fonksiyonunda kullanmıştık. Fakat dijital pinler giriş özelliği sayesinde sensörler ve butonlar gibi diğer çevre birimleriyle de kullanılmakta. Bu dersimizde iki adet push buton kullarak LED yakıp söndürmeyi öğreneceğiz.

Kartımızın bağlantı şeması şu şekilde:

ders2_bb

Kodumuz ise şu şekilde:

int ledler[] = {4, 5, 6, 7};
int led_sayisi = 4;
int buton_pin = 2;
int buton_deger = 0;
int buton_basilma = 0;

void setup()
{
  for (int i = 0 ; i < led_sayisi ; i++)
  {
    pinMode(ledler[i], OUTPUT);
  }
  pinMode(buton_pin, INPUT);
}

void loop()
{
  buton_deger = digitalRead(buton_pin);
  if (buton_deger == HIGH)
  {
    for (int i = 0 ; i < led_sayisi ; i++)
    {
      if (buton_basilma % led_sayisi == i)
        digitalWrite(ledler[i], HIGH);
      else
        digitalWrite(ledler[i], LOW);
    }
    buton_basilma++;
    delay(100);
  }
}

Dikkat ettiyseniz butonları bağlarken 10kΩ direnç kullandık. Bu direncin ismi pull-down direncidir Peki pull-down direnci ne işe yarar?

Pull-down direnci, dijital pinleri giriş olarak kullandığımızda sinyalin bozulmamasını sağlar. Bu projemizde buton basılı değilken dijital pinden okunan değer 0V yani lojik LOW seviyesidir. Pull-down direnci, buton basılıp değer HIGH’a çekilmediği sürece bu pindeki gerilimin 0V’ta sabit kalmasını sağlar.

19 Yorumlar

  1. Hocam aldığım set de, çıt çıt uton geldi ve benim tabirimce 2 bacaklı, projede 4 bacaklı olarak gösterilmiştir, ben bir türlü yakamadım led i.

    Saygılarımla

    • Görseldeki buton, breadboard’un üst kısmında kalan iki bacak butona basıldığında kısa devre olacak şekilde çalışmaktadır. Siz de 2 bacaklı butonunuzu buna göre bağlayabilirsiniz.

    • Evet, dirençlerin değerleri önemli, yüksek değerli direnç kullandıysanız LED’ler çok düşük parlaklıklta yanacağından yanmıyormuş gibi görünebilir.

  2. Öncelikle kolay gelsin güzel bir paylaşım yalnız devreyi şekildeki kurmama ve kodlarıda birebir yazmama rağmen yanma işlemi yapıyor yalnız söndürme işlemi yapmıyor.
    Söndürme işlemini ekleyebileceğimiz kod buluğunu nerede ve nasıl kullanabilirim ??

  3. Hocam gönderilen beeadboard resimlerle aynı değildir.bana gönderilende resimlerdeki gibi +- sırasındaki girişler ile harf sırasındaki girişler aynı hizada değil

    • Merhabalar, C dilinde % işareti modülüs operatörüdür. Yani matematikte kullanmmış olduğumuz mod işlemine denk düşer. İki tam sayı arasında kullanıldığında soldaki sayının sağdakine bölümünden kalanı verir. Örneğin

      7 % 5;

      bize 2 verecektir.

  4. Çok Yararlı Bir Yazım olmuş. Ve Bende Gayet Güzel Çalıştı. Sadece devreler gecikme yapıyor. Onun Dışında, Harika bir paylaşım olmuş.

  5. Kardeşim 10 Ohm Kullanıyoruz dirençleri demişsin İlk olan siyah turuncu kahverengi renkli . Fakat Diğer dordu Turuncu Turuncu Kahve neden ve o dordu kaç ohm ? ACİL

  6. merhaba,

    Arduino:1.8.3 (Windows XP), Kart:”Arduino/Genuino Uno”

    Çalışmanız programın 1294 bayt (4 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 21 byte kadarını (1%) kullanıyor. Yerel değişkenler için 2027 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x60
    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.

    arıza çözümü nedir?

  7. selamlar..Hocam öncelikle ellerinize sağlık teşekkürler.. Programın çalışma mantığını adım adım anlatabilir misiniz?

    İyi çalışmalar..

  8. Hocam peki bunun butona bastıktan sonra saymaya devam etmemesi için ne yapacağız. butona basılı tuttukça sayıyor bunu tek sayma nasıl yapabiliriz.

CEVAP VER