Arduino - Buton Kontrolü İle Led Yak-Söndür İşlemi - Elektrik Elektronik Projeleri

Post Top Ad

26 Kasım 2014 Çarşamba

Arduino - Buton Kontrolü İle Led Yak-Söndür İşlemi

Bu projemizde bir buton kontrolü ile led yakıp söndürme işlemi yapacağız. Devrenin çalışması şu şekilde olacaktır: butona bastığımızda led yanacak, tekrar bastığımızda led sönecektir. Bunun için devremizi devre şemasında belirtildiği gibi kurmalıyız.

Projenin Devre Şeması:
digitalRead() Fonksiyonu:
Arduinoda dijital değerler digitalRead fonksiyonu ile okunur. Dijital değer okuyacağımız pini pinMode(pin_no, INPUT) komutu ile giriş pini olarak ayarlamalıyız.

Projenin Kaynak Kodu:

int led=9;
int buton=10;
int butonDurum;
int ledDurum=0;
int x=0;

void setup(){
  pinMode(led, OUTPUT);
  pinMode(buton, INPUT);
}

void loop(){
  butonDurum=digitalRead(buton);
  if(butonDurum==HIGH && x==0){
    x=1;
    if(ledDurum==0) ledDurum=1;
    else if(ledDurum==1) ledDurum=0;
  }
  else if(butonDurum==LOW && x==1){
    x=0;
  }
 
  if (ledDurum==1){
    digitalWrite(led, HIGH);
  }
  else{
    digitalWrite(led, LOW);
  }
}

Proje dosyalarını indirmek için tıklayınız...

31 yorum:

  1. Hocam Allah razı olsun, tam olarak bunu arıyordum.

    YanıtlaSil
  2. Bredboard olmadan olmuyormu ?

    YanıtlaSil
  3. DİRENÇ ŞARTMI

    YanıtlaSil
    Yanıtlar
    1. arduino için şart değil. normalde led yanar (bozulur)

      Sil
    2. led bozulmaz. Ama elektriksel gürültü olacağından butonu gnd göndermek için kullanırız.Kullanmak istemiyorsanız INPUT_PULLUP yazarak direnç kullanmanız gerek yok sadece açıklama gereği duydum :)

      Sil
    3. yorumunuz için teşekkürler. Ledin hasar görmemesi için lede bağlı olan direnci kullanmakta yarar vardır. butona bağlı direnci ise kullanmayıp, dediğiniz gibi, mikrodenetleyicinin dahili dirençlerini aktif edebiliriz.

      Sil
    4. Cok tesekkurler birazcik bilgim artmaya basladim mantigini bir turlu kavrayamadim :)

      Sil
  4. bu projede x değişkeni ne işe yarıyor. Sanki fazlalık gibi.

    YanıtlaSil
    Yanıtlar
    1. sistem butona basıldığında ledi yakmakta ve tekrar basıldığında ledi söndürmektedir. her butona basıldığında ledin durumu değişmekte ve butona tekrar basılana kadar ledin durumu korunmaktadır. böyle bir algoritma için x değişkeni tanımlanmıştır. burada x değişkeni ledDurum değişkeninin değerinin belirlenebilmesi için tanımlanmıştır.

      Sil
  5. Teşekkürler.. Mantığını kurmaya çalışıyordum. Yapmışsınız bile.
    Yaptığım denemelerde en sona Delay değeri eklerseniz çok daha kararlı çalışıyor bilginize.

    else{
    digitalWrite(led, LOW);
    }
    delay (50);
    }

    YanıtlaSil
    Yanıtlar
    1. Rica ederim.

      Delay konusunda haklısınız. Gecikme vererek daha kararlı çalıştırabilirsiniz devreyi.

      İlginiz için ben teşekkür ederim.

      Sil
    2. bilgisayardan ii anlıyonuz heral

      Sil
    3. bilgisayardan ii anlıyonuz heral

      Sil
  6. Değerli açıklamalarınız bizi aydınlatmış olup emekleriniz için çok teşekkür ederiz.

    YanıtlaSil
    Yanıtlar
    1. Rica ederim. İlginiz için ben teşekkür ederim.

      Sil
  7. Merhaba ben arduino ile hiç kod kullanmadan led yakma söndürme yaptım fakat 10k direnç koydum bunu çıkartsam sorun oluşur mu?

    YanıtlaSil
  8. Merhaba arduinoyu buton kullanarak kapatıp açabiliyor muyuz bilgi verebilir misiniz? kodları nasıl yazıyoruz

    YanıtlaSil
  9. Merhaba ismim İbrahim
    Size bir sorum olacak
    Bir devrede 2 buton 2 led var
    1. Butona basınca led 7 kez yanacak
    2. Butona basınca led 3 kez yanacak
    Bunun ardinyoda nasıl proglamlarım

    YanıtlaSil
    Yanıtlar
    1. digitalWrite(led, HIGH); // Bu komut ledimizi yakar..
      delay(500); //Bu komutta led 500 ms ye yanık bir şekilde bekliyor.
      digitalWrite(led, LOW);//Bu komut ledi söndürüyor
      delay(500); //Led 500 ms ye sönük olarak beklemede kalıyor.

      Sil
    2. tekrar etmesini istersen for döngüsüne sokmalısın
      İnt a;

      for(a=0; a<10;a=a+1){

      digitalWrite(led,HIGH);

      delay(1000);

      digitalWrite(led,LOW);

      delay(1000);

      }

      Açıklama:

      Öncelikle a adında değişken belirlenir. Ve for komutu içerisinde başlangıç değeri olarak a=0 yazılarak 0 değeri atanır.
      Daha sonra bitiş sayısını belirlemek için koşul ifadesi belirlenir. Burada a<10 yazılarak a sayısı 10 sayısından küçük olduğu sürece program çalıştırılır. Yani koşul olarak belirtilen ifade doğru olduğu sürece döngü tekrar eder.
      Son olarakta artış miktarı belirlenir. a=a+1 ifadesi a değişkenine her çevrimde bir arttırılmasını sağlayacaktır. Bu değer a=a+2 olsaydı her çevrimde değer 2 artacaktı ve 10 sayısına beş çevrimde ulaşılacaktı.
      For komutunun sonunda “{“ açılır ve kapatılır “}”. Bu parantezler arasına tekrar etmesi istenilen komutlar yazılır.

      Sil
  10. mrb bu kodlar sadece ledi açıp kapatıyor değil mi tek butonla 7-8 farklı işlemi nasıl yaparız butona bastığımızda birinci animasyon butona ikinci bastığımızda 2. animasyon butona üçüncü bastığımızda 3. animasyon gibi burada nasıl bir değişiklik yapmam gerekli

    YanıtlaSil
  11. bu kodları baz alarak 8 animasyon ekledim her butona basışta animasyon gelmesi lazım birinci zaten direk geliyor ikincisi butona bastığında hemen geliyor ama üçüncü ve diğer animasyonlar gelmiyor nedeni nedir sizin if(ledDurum ==1){birinci işlem kısmı}else if(ledDurum ==2){ikinci işlem kısmı} böyle devam ettiriyorum tabi yukarıdaki kodlarda da değişiklik yaptım if(ledDurum ==1) ledDurum =2;else if(led Durum == 2) ledDurum =3 gibi sonunda 0 değeri veriyorum ki geri dönsün işlem bitince ama ne hikmetse 2 animasyondan sonra göstermiyor animasyonsuz her bölge çalışıyor ama animasyon koyduğumda çalışmıyor uzun süre butona bastığımda kafasına eserse üçüncüye dördüncüye falan geçiyor benim istediğim her basışta ne olursa olsun direk animasyona geçmesi animasyon uzunmuş kısaymış farketmeksizin böyle bir olayı nasıl yaparım

    YanıtlaSil
  12. Öncelikle belirteyim bu kodları denemeden yazıyorum. Ancak kafama takılan ve benim için sorun oluşturan bir konuyu belirtmek istiyorum. Butona 1 saniye veya daha uzun süre basıldığında kararsızlık oluşmuyormu? Yani kesin bir şekilde bu işin yapılabilmesi için butona basıldığı andan itibaren taki buton bırakılınca kadar while döngüsünde sokmak gerektiğini bir kaç yerde okudum. Ancak nasıl uygulanacağını bir türlü öğrenemedim. Bu şekilde yeniden bu kodu yazıp yardımcı olursanız sevinirim.

    YanıtlaSil
  13. x değişkeninin kullanılmasındaki amaç nedir? Anlayamadım

    YanıtlaSil
  14. Merhaba, bir projemde nextion ekran kulaniyorum. Ekrandan sayfalari degistirdikce mega da badka islem yaptircam, ama sayfalar degismedine ragmen arduinom bu komutlarinkaciriyor. Bunu nasil cozerim

    YanıtlaSil
  15. Herkese selamlar 1 led var Arduino 3 buton butona bastığım zaman renkler yanacak lütfen biri kod yapabilirmi

    YanıtlaSil

Post Top Ad