back to top

Arduino Dersleri #3: Arduino Buton İle Led Yakma

Merhaba arkadaşlar. Arduino dersleri serimizin bu kısmında sizlere Arduino ile push buton kullanımından bahsedeceğiz ve LED ile bir uygulama yapacağız.

Serimizin ilk yazısında Arduino kurulumundan bahsetmiştik >>> Arduino Nedir? Detaylı Arduino Kurulumu

Buton kullanmadan Arduino ile nasıl LED yakılır diyorsan >>> Serinin ilk uygulaması Arduino ile Blink yazımıza buradan ulaşabilirsiniz.

Arduino İle Buton Kullanımı

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 push buton kullanarak LED yakıp söndürmeyi öğreneceğiz.

Gerekli malzemeler: ( Not: Arduino Buton Kullanımı ve 10. Derse Kadar Olan Dersleri “Arduino Başlangıç Seti” İle Yapabilirsiniz. Malzemeler Bu Sette! >)

 

Arduino Buton Bağlantısı – Buton ve LED Devre Bağlantısı Nasıl Yapılır?

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

Arduino ile Buton LED Devresi

Dikkat ettiyseniz butonu 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.

Haydi! Buton İle LED Yakmak İçin Kodu Yazalım





#define Buton 8
#define Led 10
void setup()
{
  pinMode(Buton, INPUT);
  pinMode(Led, OUTPUT);
}
void loop()
{
  if (digitalRead(Buton) == 1)
  digitalWrite(Led,HIGH);
  else
  digitalWrite(Led,LOW);
}

2 Pinli Push Buton İle 4 Pinli Push Buton Bağlamada Fark Var Mı?

2 pinli push buton ile 4 pinli push buton bağlantıları arasında hiçbir fark yoktur. 4 pinli push butonların ikişer bacakları paralel bağlıdır. Yani buton 4 pinli de olsa 2 pinli mantığı ile bağlanmaktadır. Burada önemli olan nokta hangi iki bacağın paralel olduğunun bilinmesidir.

4 Pinli Push Buton

Görselde de göründüğü gibi 4 pinli push butonda kırmızı olarak gösterdiğimiz 2 pin, 1 pin olarak kullanılır, mavi 2 pin de 1 pin olarak görev yapar.

Son Çıkan Yazılar

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

  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

  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

    • butona bağlı olan direnç kodun altında belirtildiği gibi pull up pull down işleminde kullanılmış ve 10 k dirençtir ledlere bağlı olan dirençler ise ledeleri korumak amaçlı konulmuş 330 ohm kullanılmış

  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.

  9. Arduino:1.8.3 (Windows 10), Kart:”Arduino/Genuino Uno”

    C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino: In function ‘void setup()’:

    sketch_nov18a:11: error: redefinition of ‘void setup()’

    void setup()

    ^

    C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino:1:6: note: ‘void setup()’ previously defined here

    void setup() {

    ^

    C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino: In function ‘void loop()’:

    sketch_nov18a:36: error: redefinition of ‘void loop()’

    void loop() {

    ^

    C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino:20:6: note: ‘void loop()’ previously defined here

    void loop()

    ^

    exit status 1
    redefinition of ‘void setup()’

    C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a içerisinde geçersiz kütüphane bulundu: C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a
    C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a içerisinde geçersiz kütüphane bulundu: C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a

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

    hocam herşeyi yaptım ama bu hatayı veriyor neden????

    • Kodu yanlışlıkla iki kere alt alta yapıştırmış olabilir misiniz? Verilen hata mesajlarında göreceğiniz üzere void loop ve void setup fonksiyonları iki kere tanımlanmış olduğu belirtiliyor.

  10. Hocam ben de yukarıdaki ledleri butona her bastığımda sırayla yanmasını istiyorum.Mesela butona bastım 1.led,butona bastım 1.led sönecek 2.led yanacak,butona bastım bu sefer 2.led sönecek 3.led yanacak…… diye yapmam gerekiyor.Lütfen yardım edin.Öğretmenim. Okulda öğrencilerim için bir materyal yapıyorum.

  11. Öncelikle bu başarılı proje için teşekkürler .
    Ben bir proje üzerinde uğraşıyorum . Proje görsel amaçlı bir proje .
    Çalışma Şekli ;
    Yaklaşık 10 tane led var bunlar kara şimşek gibi yanıyor işin bu kısmı tamamdır .
    Eklemek istediğim şey ise 3 tane buton bu butonların görevi . 1. butona(tach buton) basıldığı zaman ledler kara şimşek şeklinde yanmaya başlıyacak(2. butona basılana kadar) , 2. buton(tach buton) basıldığı zaman ledlerin yanması duracak(1. butona basılana kadar) , 3. buton(tach buton) basıldığı zaman ledlerin örnrğin 3.leddeyse veya 5. leddeyse nerede kaldısya en başa saracak yani sıfırlamış olacak . Böyle birşey yapmam mümkün müdür ? Şimdiden yapacağınız yardımlar için teşekkür ediyorum .

  12. SAYIN ROBOTİSTAN EKİBİ 5V PORTUNUN ALTINDAKİ GND PORTUNA BAĞLI OLAN KABLO YANLIŞTIR, O KABLONUN YERİ DEĞİŞTİRİLMELİDİR BEN O KABLONUN YERİNİ A PORTLARINDAN BİRİNE TAKARAK İŞLEMİ TAMAMLADIM AMA O KABLO GND PORTUNDAN A PORTLARINDAN BİRİNE TAŞINMALIDIR LÜTFEN DÜZELTİN BELKİ BENİMKİNDEN DAHA İYİ BİŞEY BULABİLİRSİNİZ SAYGILARIMLA TOPRAK TEMİZKAN

  13. Mrb,
    Arduino konusunda çok yeniyim.
    Ama bu uygulamada anlayamadığım ve çözemediğim problemler yaşadım. Şöyle ki;
    Bir kere butona basıldıktan sonra
    bütün LED ler sırasıyla yanıyor ve sönmüyor.
    Butona tekrar bastığımda bir değişiklik olmuyor LED ler yanmaya devam ediyor.
    Büyük bir ihtimalle buton_pin=2 nolu pinden
    buton_deger = digitalRead(button_pin);
    komutuyla okunan değer hep HIGH oluyor.
    Kartta mı bir problem var diye buton_pin=11 yaptım ama sonuç aynı.
    Ayrıca LED ler
    digitalWrite(ledler[i],LOW);
    komutu ile sönmüyor.
    Verilen kod eksik mi?
    Ya da kodu yüklerken başka birşeyler mi yapmamız gerekiyor?
    Debug modda çalıştırıp koddaki değişkenlerin değerlerini görebiliyor muyuz?

    Konu ile ilgili yardımcı olursanız sevinirim.

    • problem çözüldü. buton_basilma++ ve delay(100) komutları for döngüsünün içinde kaldığından bu problem yaşanıyor. Bu komutlar for döngüsünün dışına alınınca problem çözüldü.

  14. meraba iyi günler hocam. Bana PULLDOWN İLE LEDİ İLK BASTIGIMIZDA DEVAMLI YANACA, 2. BASTIGIMIZDA YANIP SÖNECEK VE 3.BASTIGIMIZDA KOMPLE SONECEK. DEVRENİN KODLARI LAZIM YARDIMCI OLURMUSUNUZ. dersden kaldım ve bunu yapmam lazım

    • Butona her basıldığında bir artacak bir sayaç oluşturun. Örn:
      if(buton == LOW) {counter++;}

      Daha sonra sayaç değerinin her bir artması durumunda LED’in yanma modunu değiştirecek bir if yapısı oluşturun. Örn:
      if(counter %3 == 0) {digitalWrite(ledpin, HIGH);}
      if(counter %3 == 1) {digitalWrite(ledpin,LOW);}

  15. Arduino: 1.8.5 (Mac OS X), Board: “Arduino/Genuino Uno”

    /var/folders/n3/cd5zn_fd44jfdt_52mj0c1g40000gn/T//ccvxxlTG.ltrans0.ltrans.o: In function `main’:
    /Users/aayavuz/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/main.cpp:43: undefined reference to `setup’
    collect2: error: ld returned 1 exit status
    exit status 1
    Error compiling for board Arduino/Genuino Uno.

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

  16. Hocam kodların ne anlama geldiğini yazınıza ekleyebilir misiniz ?
    led_sayisi , i++ vb. nedir ne anlama geliyor ? Hepsini detaylıca açıklayabilir misiniz ?

  17. mrb anlatımınız için tşk ederim. bar neopixel ile birden fazla animasyon yapıp butona her basışta animasyon değiştirmesini istiyorum nasıl yapabilirim birde bar neopixel için elinizde animasyonlar varsa eklerseniz sevinirim kolay gelsin

  18. bende ” if (buton_basilma % led_sayisi == i)” satırında ” ‘i’ was not declared in this scope” hatasını veriyor kodlar aynı şema dahil aynı ama bu hatayı veriyor lütfen neden olduğunu söylermisiniz

  19. Ben bu sitede buton ile 4 led kontrol etmeyi yapmıştım.Ama şimdi o burda yok.Onun kodunu bilen varsa yazabilir mi?Sanırım güncelleme getirmişsiniz.Bundan dolayı eskiden baktığım.1 buton ile 4 led yakılmıştı.Ve ledler döngü halindeydi.O kodu ne olur yazın?

  20. İyi günler elimde 220volt 6w bir motor var 2 adet switch ile bu motoru 1. Switch e bastıktan 2 saat sonra çalışacak 2. Switch e bastıktan sonra durup 2 saat sonra çalışıp 1.switch e basıp durup 2 saat sonra çalışıp 2.switch e basıp durup 2 saat sonra calisacak bir döngü lazim acaba nasil yapabilirim

  21. beyler kodlar bu

    #define buton (kaça bağladıysanız)
    #define led (kaça bağladıysanız)
    void setup()
    {
    pinMode(buton,INPUT);
    pinMode(led,OUTPUT);
    }
    void loop()
    {
    if digitalRead(buton)==1)
    digitalWrite(led,HIGH);
    else
    digitalWrite(led,LOW);
    }

  22. #define buton
    #define led 3
    void setup()
    {
    pinMode(buton,INPUT);
    pinMode(led,OUTPUT);
    }
    void loop()
    {
    if digitalRead(buton)==1)
    digitalWrite(led,HIGH);
    else
    digitalWrite(led,LOW);
    }

  23. Hocam Acil Yardımınıza İhtiyacım var Dersten Kalıcam yoksa.ben butona basınca led hep yanıcak takı ben bıdaha butona bastıgımda yanı bırkere butona bastıgımda hep yanıcak acık kalıcak bıdaha bastıgımda sonucek.Lutfen Yardım

  24. Bendeki push buton farklı ben scratch ile arduino seti almıştım sitenizden, onuun nasıl bağlanacağını anlayamadım mavi başlı içinde yay var

  25. Hocam merhaba ben ilk okul 2. sınıf öğrencisiyim. Yeni öğreniyorum Butona basınca yansın tekrar butona basıca sönsün istiyorum komutunu yazar mısınız?

    • int buton = 1; //burada butonlardan birini 1’e bağladık
      int led = 3; //burada ledi 3’e bağladık
      void setup() {
      pinMode(buton1,INPUT) //burada buton1’den bilgi alacağımızı belirttik
      pinMode(led,OUTPUT); //burada led’e bilgi vereceğimizi belirttik
      }

      void loop() {
      if (digitalRead(buton) == 1){ //burada buton1 çalıştığı zaman ledi yakacak
      digitalWrite(led,HIGH);

      }

      if (digitalRead(buton) == 1){ //burada buton1 çalıştığı zaman ledi söndürecek
      digitalWrite(led,LOW);

      }
      }

      burada tek butonla yaptığım kod var

      bir yanlışım varsa yazın lütfen

  26. Ödev: 2 adet buton kullanarak 1.butona bastığımı zaman 5 adet led soldan sağa doğru yürüyen ışık şeklinde gidecek.2.butona bastığımızda ise sağdan sola doğru yürüyen ışık şeklinde giden devreyi simülasyon programı ile yapınız.

  27. İki buton ve bir led ten oluşan devrede birinci butona kaç kere basıp bırakırsak ikinci butona bir defa basıp bırakınca ilk butonu kaç defa basıp bırakmışsak led te o kadar yanıp sönecek. Örneğin birinci butona 4 defa basıp bıraktık ikinci butona bir defa basıp bırakınca led 4 defa yanıp sönecek. Ve bu işlem sonzuz şekilde çalışacak rica etsem yardımcı olabilecek

  28. hocam çok yararlı bir bilgi olmuş ben butona bastığımda led yansın (sönmesin ama) tekrar bastığımda kapansın bunu nasıl yapabilirim acaba ?

  29. Merhaba, ben yazılımı tamı tamına yaptım fakat; düğmeye basmadan ya da her hangi bir şey yapmadan led ışığım yanıp sönmeye başladı. Sorunu nasıl çözebilirim?
    kodu yüklerken şu mesaj geldi: Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), Kart:”Arduino Uno”

    Çalışmanız programın 892 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.

    Taslak yüklenirken bir hata oluştu

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

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz