Puşbuton: Bu basit öğeyi Arduino ile kullanma

buton

Un basma düğmesi, elektronik bir sinyali kesmenize veya göndermenize izin veren bir düğmedir. Diğer öğelerle birleştirilen bu basit öğe ile çok sayıda uygulama için projeler oluşturabilirsiniz. Bu tür butonların kullanımı, Arduino projeleri söz konusu olduğunda çok yaygındır. Ve bu düğmelerden birkaçını birleştirerek biraz daha karmaşık bir klavye oluşturabilirsiniz, ancak bu kullanımlar için zaten programlanabilir klavyeler vardır ...

Bu arada, basmalı düğmeyi bir anahtarla karıştırmamalısınız. Tamamen farklı şeylerdir. Aradaki fark, anahtarın veya anahtarın, üzerine yapılan her basışta etkinleştirilmesi veya devre dışı bırakılmasıdır. Oysa basma düğmesi, üzerine baskı uygulandığında yalnızca tek bir durumda kalacaktır. Gönderebileceği veya kesebileceği yorumunu yaptım, çünkü iki temel düğme türü var.

düğme simgesi

Vardır NO veya normalde açık butonlar ve NC veya normalde kapalı butonlar. Bu size rölelerden de ses çıkaracaktır. Ve evet, tamamen aynı işlem. Bir NC'niz olduğunda, akımın terminallerinden geçmesine izin verir ve yalnızca siz ona bastığınızda kesilir. Öte yandan, NA, üzerine basınç uygulanmadığında akımın geçmesine izin vermez ve sadece bastığınızda geçmesine izin verir.

Bilerek, bir düğme hakkında bilmeniz gereken neredeyse her şey Arduino kullanarak bağlantınızı ve programlamayı başlatmak için. Gerçek şu ki, bu o kadar basit bir unsur ki, bu tür butonlar hakkında söylenecek çok şey yok.

Arduino ile Push Button Entegrasyonu

Arduino ile devre

La bir buton bağlamak Arduino ile etkileşime girmesi daha kolay olamazdı. Bir örnek, bu çizgilerde görebileceğiniz diyagramdır. Denemeye başlamak için gereken tek şey bu. Ama elbette, bu planla çok az şey yapabilirsiniz. Bu düğmenin neyi kontrol edeceğine karar vermek için biraz hayal gücü koymanız gerekir. Aslında, hwlibre.es'i sık sık okursanız, butonları kullandığımız bazı makaleler görmüş olacaksınız ...

Bağlamanın yolları

çekme ve aşağı çekme

Bilmeniz gereken bir şey, sıçrama önleme sorunu ve bu butonlar nasıl bağlanır. İlk önce, bunları, çekme ve aşağı çekme dirençleri ile olabileceğini zaten bildiğiniz şekilde bağlama yoluna gidiyoruz:

  • Çekme- Bu direnç ayarı ile butona basıldığında mikrodenetleyici veya Arduino o pin üzerinde bir sıfırı görebilir veya okuyabilir. Yani, onu DÜŞÜK sinyal olarak yorumlar.
  • Aşağı çek: Bu durumda tam tersi olur, bağlı pin üzerinden 1 veya HIGH sinyali okuyabilir veya alabilirsiniz.

NC veya NA ile karıştırmayın, bu daha önce gördüğümüz gibi farklı bir şey. Bu diğerinden bağımsızdır ...

Sıçrama Önleme

Basmalı düğmelerde bir Rebound etkisi basıldığında. Yani, basıldığında veya bırakıldığında, kontaklarından geçen sinyalde bir dalgalanma vardır ve bunun olmasını gerçekten istemeden HIGT durumundan DÜŞÜK duruma veya tam tersi duruma geçmesine neden olabilir. Bu, Arduino üzerinde istenmeyen bir etki yaratabilir ve bir öğeyi gerçekten basma düğmesiyle kapatmak istediğimizde etkinleştirmek gibi garip şeyler yapmasına neden olabilir. Bunun nedeni, Arduino'nun sekmeleri sanki birden fazla basılmış gibi yorumlamasıdır ...

Bu olumsuz etki bir çözümü var. Bunun için, anti-sıçrama devresinde (donanım yöntemi) veya yazılımda (kaynak kodunu değiştirerek), ister yukarı ister aşağı açılır konfigürasyon kullanılmış olsun veya NC veya NO olsun, küçük bir kapasitör uygulanmalıdır. Tüm bu durumlarda, bu geri tepmeleri önlemek için çözüm uygulanmalıdır.

Örneğin, yukarı çekme ve aşağı çekme devreleri, sıçrama önleyici kapasitör şöyle bir şeye benzeyecekler:

ribaund

Süre yazılım yöntemi Bu kod pasajında ​​görülebilir:

if (digitalRead (button) == LOW) // Düğmeye basılı mı kontrol edin
{
basılmış = 1; // Değişken değeri değiştirir
}
eğer (digitalRead (pushbutton) == HIGH && pressed == 1)
{
// İstenen eylemi gerçekleştirin
basılı = 0; // Değişken orijinal değerine geri döner
}

Basit proje örneği

buton ve Arduino ile anti-sıçrama

Düğmemizi ve geri tepmeyi önleme devresini bağlama yollarının konusunu öğrendikten sonra, pratik bir örnek göreceğiz. düğmeyle bir LED'i kontrol edin. Şema gördüğünüz kadar basit.

Doğru bir şekilde bağlandıktan sonra, sonraki şey yazmaktır Arduino IDE'deki kod panelinizi programlamak ve düğmelerle denemeye başlamak için. Devremizi kontrol etmek için basit bir kod örneği aşağıdaki gibi olacaktır:

// Düğmeyi kontrol etmek için çizim örneği
int pin = 2;
int devlet;
atımlı int = 0;
geçersiz kurulum ()

{
pinMode (2, GİRİŞ); // Bu pin girişini yaparak darbeyi okumak için

pinMode (13, OUTPUT); // LED için

Serial.begin (9600);
}
geçersiz döngü ()

{
eğer (digitalRead (2) == HIGH)

{

pim = 2;

antiBounce (); // Sıçrama önleme işlevine çağrı

}
}
// Yazılım sıçrama önleme işlevi
void anti-sıçrama ()

{
while (digitalRead (pin) == LOW);
durum = digitalRead (13);
digitalWrite (13 ,! durum);
while (digitalRead (pin) == HIGH);

}


5 yorum, sizinkini bırakın

Yorumunuzu bırakın

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

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Marcelo Castillo bilgi alanı resmi dijo

    Güzel!!! Çok teşekkür ederim, bir CNC inşa ediyorum ve paradoksal olarak düğmeler benim için ayarlanması en zor olan şeydi.

  2.   Liliana dijo

    Selam! GND ile bağlantılı olarak acemi olarak danışıyorum… ..siyah tel, 2. diyagramda gösterilenin üstünde bulunan negatif çizgiden çıkmamalı mı?

  3.   John dijo

    Mükemmel açıklama ... birkaç yıl önce bir araba ateşleme projesi yaptım ve gerçek şu ki asla doğru bir tuş vuruşu yapamam. Ateşleme için .. Bu yöntemi deneyeceğim. Bu harika yardım için çok teşekkür ederim

  4.   Ömer Romero Rincon dijo

    Merhabalar, aşağıdaki sıra ile üç buton ve 5 ledli bir proje yapıyorum.
    1 basma düğmesi, 2 ve 1 olarak adlandırdığım 2 LED'e sinyal gönderir.
    ikinci buton 3 ve 2,3 olarak adlandırılan 4 LED'e sinyal gönderir.
    üçüncü butonum 3, 3,4 ve 5 olarak adlandırılan diğer XNUMX LED'e bir sinyal gönderiyor.

    Bu sıralamayı başardım, tek bir sorunum var, 2 tuşa bastığımda led'e yanık kalması gereken yanlış bir sinyal göndererek aralıklı yanıp sönmesine neden oluyor, bir gecikme koyarak kontrol ettim (2 saniyelik, LED'lerin açık kalması ve sonra kapanması için ihtiyacım olan şey bu. o zaman sorum şu millis işlevini programıma nasıl koyabilirim, millis'in nasıl çalıştığını anlamıyorum, bana yardım edip edemeyeceğinizi bilmek istiyorum Her birinde millis kullanan 3 düğme için bir örnek yaparak, arduino'yu geciktirmeden düğmelere istediğim zaman basabilmek için millis'e ihtiyacım var.

    1.    isaac dijo

      Merhaba Ömer,
      Arduino eğitimimizi görmenizi tavsiye ederim:
      https://www.hwlibre.com/programacion-en-arduino/
      Ayrıca millis () hakkındaki makalemizi de görebilirsiniz:
      https://www.hwlibre.com/millis-arduino/
      Bir tebrik.