Sonuçlar 1 to 1 of 1

Konu: Tek butona basılış sayısına göre işlem yaptırma örneği

  1. #1

    Tek butona basılış sayısına göre işlem yaptırma örneği

    Merhaba arkadaşlar.

    Bu yazımda, bir butona basılış sayısını sayarak buna bağlı olarak işlemler yaptıracağız.

    Senaryomuz şu şekilde:

    1-Butona ilk kez basıldığında led yarım saniye yanıp sönecek ve seri port ekranına birinci baskı yazılacak.
    2-Butona ikinci kez basıldığında led iki saniye yanıp sönecek ve seri port ekranına ikinci baskı yazılacak.
    3-Butona üçüncü kez basıldığında led 250 ms yanıp sönecek ve ardından 1 saniye yanıp sönecek.
    4-Butona üçüncü kez basılıp çekildikten sonra tekrar 1. aşamadan itibaren uygulama devam edecek.

    Devremiz bir arduino uno, bir buton, bir 10K Ohm direnç, 1 adet LED ve 1 adet 330 Ohm dirençten oluşmaktadır.







    Kod:
    // ##################################################################################
    // # Yazar : Murat ŞAHİN  Elektronik Öğretmeni
    // # Tarih : 10.10.2017
    // # twitter: @mrt4shn
    // ##################################################################################
    
    
    int buton=4; //buton isminde int türünde değişken oluşturuldu. ilk değeri 4 olarak ayarlandı. Bu şekilde programda 4 rakamı yerine geçecek.
    int sayac=0; //butona kaç kez basıldığını bu değişken yardımı ile sayacağız.
    
    
    void setup() 
    {
      ******.begin(9600);//seri haberleşmeyi başlatıyoruz. Seri port ekranına veri yazarak butona basış sayımızı kontrol edeceğiz.
      pinMode(4,INPUT); //4 nolu bacak giriş olarak ayarlandı. buraya 4 yerine buton da yazabilirdik. unutmayın buton değişkeninin ilk değeri artık 4 !
      pinMode(9,OUTPUT);//9 nolu bacak çıkış olarak ayarlandı.
    }
    
    
    void loop() {
      int durum=digitalRead(buton);// 4 nolu bacağa bağlı buton okundu ve durum değişkenine aktarıldı.
      if(durum==1&&sayac==0) //durum bire eşitse (yani buton basılı ise) ve sayac değişkeni sıfır ise
      {
        ******.println("1.baski"); //seri port ekranına 1.baski yaz.
        digitalWrite(9,HIGH); //9 nolu çıkışı yüksek seviyeye yani 5V a al.
        delay(500); //500ms çıkışları koru.
        digitalWrite(9,LOW);     //9 nolu bacağı düşük seviyeye yani 0V a al.
        sayac++; //sayaç değişkenini bir arttır.
        delay(10); //10 ms bekleme ekliyoruz. butondan elimizi çekme süresi için.
      }
            if(durum==0&&sayac==1) //butondan elimizi çektiğimiz kontrol ediliyor. Durum değişkeni butonun bağlı olduğu 4 bolu bacağın verisine eşitlenmişti.
            {
              sayac++; //elimizi çektiğimiz an sayac değişkenine aktarılıyor.
              delay(10);
            }
                if(durum==1&&sayac==2) // ikinci kez butona basıldığında ve sayac değişkeni iki ise; yani buton dan elimizi çekmiş ve tekrar basmış isek, yapılacak işlemler tanımlanıyor.
                {
                  ******.println("2.baski");
                  digitalWrite(9,HIGH);
                  delay(2000);
                  digitalWrite(9,LOW);
                  sayac++;
                  delay(10);
                }
                if(durum==0&&sayac==3) //ikinci kez bastıktan sonra elimizi çektiğimizden emin oluyoruz. sayac değişkenini saydırarak.
                {
                  sayac++;
                  delay(10);
                }
                if(durum==1&&sayac==4) //üçüncü kez bastıktan sonra sayac değişkeni ile de bu durum onaylanarak senaryonun 3. aşaması gerçekleştiriliyor.
                {
                  ******.println("3.baski");
                  digitalWrite(9,HIGH);
                  delay(250);
                  digitalWrite(9,LOW);
                  delay(250);
                  digitalWrite(9,HIGH);
                  delay(1000);
                  digitalWrite(9,LOW);
                  sayac++;
                  delay(10);
                }
                if(durum==0&&sayac==5) //üçüncü kez butona bastıktan sonra elimizi çektiğimiz kontrol ediliyor ve buna bağlı olarak başa dönülmesi için sayac değişkeni sıfırlanıyor.
                {
                  ******.println("sayac sifirlandi");
                  sayac=0;
                  delay(10);
                }
    
    
    }

    Kodları kopyalayabilir ya da dosyayı buraya tıklayarak indirebilirsiniz.
    Last edited by Elektronik; 11-10-17 at 00:11.

Tags for this Thread

Bookmarks

Gönderme izinleri

  • Yeni Konu açamazsınız
  • Konulara cevap yazamazsınız.
  • Eklenti gönderemezsiniz.
  • Mesajlarınızı düzenleme izniniz yok.
  •