Arduino Birden Fazla Buton ile İstenilen Sürede İşlem Yapma

Bu kez farklı bir uygulama yapacağız. Elimizde 3 adet buton var ve biz bu butonlardan hangisine basılırsa o butona göre belirlenmiş olan süre boyunca iş yaptıracağız. Mesela 1. butona basınca led’imiz 10 saniye, 2. butona basınca led’imiz 5 saniye ve 3. butona basınca led’imiz 3 saniye yanacaktır. Buton sayısı ve senaryo ihtiyaca göre değiştirilebilir. Örneğin bir röle sürülerek bir cihaz istenilen sürede çalıştırılabilir.

Gelelim bizim yapacağımız devreye. Devremizde 3 adet buton olacak ve uygulanan gerilime göre de farklı değerler üretecek olan olan 3 faklı direncimiz olacaktır. Her butonun çıkışı tekbir girişte yani A0 analog girişinde toplanacaktır. Her buton farklı girişten okunarak boş yere karmaşa yapılmayacaktır. Devre bağlantımız aşağıdaki gibidir. Eğer dirençleriniz farklı değerlerde değilse dirençleri seri bağlayarak farklı değerler elde edebilirsiniz.

Butonlara basıldığında buton üzerinden geçen elektrik akımı A0 girişine gelmeden önce bir dirençten geçer ve A0 girişine gelir. Dirençten geçen akım direnç değeri ile orantılı olarak gerilim değeri kaybeder ve analog giriş bunu bir değer olarak okur. Okunan bu değer belli aralıklarda olacağı için serial monitörden bu değerleri görerek buna göre işlem yaptırılır. Kodlar şu şekilde olacaktır.

int led=7;
int deger=0;
void setup() {
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  
}
void loop() {
  deger = analogRead(A0);
  Serial.println(deger); //analog girişten okunan değeri göster ki buna göre işlem yapayım.
  if (deger <1024 && deger > 1000)
  {
      digitalWrite(led,HIGH);
      delay(3000);
      digitalWrite(led,LOW);
      
  }
  if (deger <350 && deger > 300)
  {
      digitalWrite(led,HIGH);
      delay(5000);
      digitalWrite(led,LOW);
      
  }
  if (deger <50 && deger > 0)
  {
      digitalWrite(led,HIGH);
      delay(10000);
      digitalWrite(led,LOW);
      
  }
  
}

4 yorum

  • Mustafa

    Ledler karaşimşek yaparak ledlerin geçiş aralığını (zamanı) 2adet butonla ayarlamam mümkünmü
    1.butona basıldıysa 1dakika azaltacak 2.butona basıldıysa 1 dakika arttıracak rica etsem yardımcı olurmusunuz

    • mustafaakbal

      Hız için kullanılan delay sürelerini butonlara göre ayarlayın. Mesela delay 500 ise buton1 basılırsa delay 1000 olsun. Buton2 basılırsa delay 250 olsun gibi bir ayar yapabilirsiniz. Süreleri ben salladım. Siz kendiniz ayarlayabilirsiniz.

  • Cem

    Bu yöntemle butona basarak basma süresine göre işlem yaptırmamız mümkün mü örneğin araba radyolarında kanalları kaydetmek için 6 buton vardır 1-2-3-4-5-6 gibi 1 e basılı tuttuğumuzda çalan radyo frekansı kaydediliyor ve kayıttan sonra 1 tuşuna bir kere bastığımızda o radyo çalıyor benim yapmak istediğimde bu şekil bir şey A0 pin ine 10k luk dirençlerle butonlarımı atadım buton değerleri geliyor basılı tuttuğumda kaydetmek 1 kere bastığımda da çalmasını sağlamak istiyorum eeprom ile kaydedeceğim ama butona basılı tutma süresi lazım 🙂 inş anlatabilmişimdir. Şimdiden tşk ederim.

Bir cevap yazın

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