Arduino buton basma süresine göre işlem yapma

Paylaş

Herkese iyi günler. Bir arkadaşım mesaj attı ve “Bir butona  belli bir süre basınca bir röle, belli bir süre basınca başka bir röleyi tetikleyebilir miyiz?” diye sordu. Biraz araştırdım ve birçok kod buldum ama kodlar biraz karışık geldi açıkçası. Biraz düşününce kendim yapmaya karar verdim. Biraz uğraşınca başardım şükür. Burada 2 adet led kullandım ve 1 saniyeden az basarsam kırmızı led, 1-2 saniye arasında basarsam yeşil led yanıyor. 2 saniyeden fazla basarsam ledler sönüyor. Mantık olarak ise şu şekilde düşündüm;

Butona basıldığında while döngüsü çalışıyor ve delay ile 100 milisaniye bekleyerek bir değişkeni arttırıyor. B değer en başta 0. Butondan elimizi çekince  değer 10 kez artarsa 1 saniye beklemiş oluyoruz ve kırmızı led yanıyor. Eğer değer sayısı 10 ile 20 arasında ise 2 saniye beklemiş oluyoruz ve değer 20’den fazla ise 2 saniyeden fazla beklemiş oluyoruz. While komutu bu sayıyı buluyor.

While’dan sonraki if bloğu ise işlemin yapılacağını onaylayarak say değerine göre ilgili ledi yakıyor diğerini söndürüyor ve say değeri ile işlem değerlerini tekrar sıfırlıyor. işlem bu şekilde sürekli devam ediyor. Led yerine istediğiniz röleyi tetikleyerek işlem yapabilirsiniz.

Mantık kolay umarım işinize yarar. Kodlar ve devre aşağıdaki gibi. Kolay gelsin.

Devre şeması
Butona 5 volt giriş yaptık ve çıkışı  digital 2’ye, kırmızı led digital 7’ye ve yeşil led digital 6’ya bağladık.

Video

Kodlar

 

3.749 views

Gelen Aramalar:

  • arduino butona basınca yan (1)

Arduino buton basma süresine göre işlem yapma” için 10 yorum

  1. Merhaba, Elinizi sağlık güzel post olmuş ama şu pronlemime çözüm bulamıyorum. Yardımcı olabilir misiniz ?
    Kısa yanma ve uzun yanma modu olan bir ledi bir buton ile kontrol etmem gerekiyor. Butona 3 saniye basılı tutulduğunda uzun yanma moduna geçmesi daha az basılı tutulduğunda kısa yanma moduna geçmesi gerekiyor. Buton basılı tutulduğu sürece LED bulunduğu modun döngüsünde devam edecek. Buton bırakıldığında mod değişimi gerekiyorsa döngü yeni moda uygun olarak yeniden başlar (ör; uzun basma modunda iken kısa basma yapmak). Eğer mod değişimi gerekmiyorsa (ör; uzun basma modunda yine butona uzun basmak) LED döngüsü butona hiç basılmamış gibi devam edecektir.

    1. normalde zaten benim verdiğim kod temel olarak onu yapıyor. siz iki led yerine tek ledi kontrol ederseniz ve

      satırını kaldırırsanız yanlış anlamadıysam dediğinizi istediğinizi olacaktır.

      1. Mesele şurada sizinki süre kontrolü yapıyor ama normalde yanan ya da sönen lede göre yapıyor. Benim istediğimde led bir döngü içinde devamlı yanarken ben butonu arkaplanda yani kesme ile kontrol etmem gerekiyor.

        1. Yanan yada sönen lede göre yapmıyor. Basma süresine göre istenen ledi yakıyor. Tek led olursa uzun basarsanız ledin bağlı olan pinini high yaparak yanık kalır. Kısa basarsanız da pini low yaparak söndürürsünüz. Aksi halde hep yanık kalır led.

  2. Oncelikle cok faydali olmus tesekkurler. Bir sorum olacakti. 3 ayri butonla tek bir roleyi 3 ayri sn de cektirmek istiyorum. Yani birinci butona bastim role 5 sn cekili kaldi sonra enerjisi kesildi. 2.butona bastim 3 sn cekili kaldi vs. Nasil yapabilirim. Yardimci olursaniz sevinirim.

    1. şu şekilde yapabilirsiniz. birinci butona basınca 1. röleyi çektirdikten hemen sonra delay(5000); yazarak 5 saniyelik bir gecikme yaparsınız. artık hangi röleyi ne kadar çekilmiş halde bekleteceksiniz o kadar süre delay ile bekletme yapabilirsiniz. fırsat bulursam bu hafta içinde bir örnek hazırlamaya çalışayım ama delay ile oldukça kolay olacaktır. Geç gelen yanıt içiinde kusura bakmayın. Şu sıralar biraz fazla yoğunum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.