Site icon elektromanyetix

Arduino Butonlar için Durum Değişikliği Tespiti

Butonlar için Durum Değişikliği Tespiti

Arduino Butonlar için Durum Değişikliği Tespiti

Butonlar için Durum Değişikliği Tespiti. Bir düğmeye bastığınızda, düğmenin kaç kez itildiğine bağlı olarak genellikle bir işlem yapmak istersiniz. Bunu yapmak için, düğmenin ne zaman değiştiğini anlamanız gerekir ve bu durum değişiminin kaç defa gerçekleştiğini hesaba katmalısınız. Buna durum değişikliği algılama veya kenar(sınır) algılama denir . Bu öğreticide, durum değişikliğini nasıl kontrol edeceğimizi öğreniyoruz, ilgili bilgilerle birlikte Seri Monitör’e bir mesaj gönderiyoruz ve bir LED’i açmak ve kapatmak için dört durum değişikliğini sayıyoruz.

Gerekli Donanım

  • Arduino veya Genuino
  • Anlık düğme veya anahtar
  • 10k ohm direnç
  • Bağlantı kabloları
  • breadboard

Devre

Üç kabloyu karta bağlayın. Birincisi, basmalı düğmenin bir bacağından bir çekme direnci (burada 10k ohm) ile şasiye(-) gider. İkincisi, basmalı düğmenin ilgili bacağından 5 volt kaynağına gider. Üçüncüsü, düğmenin durumunu okuyan bir dijital I / O pinine (burada pin 2) bağlanır.

Basma butonu açıldığında (basılmamış) basmalı butonun iki ayağı arasında bir bağlantı yoktur, bu yüzden pim toprağa (aşağı çekme direnci üzerinden) bağlanır ve bir DÜŞÜK okuruz. Düğme kapatıldığında (basıldığında), iki ayağı arasında bir bağlantı yapar, pimi voltaja bağlar, böylece bir YÜKSEK okuruz. (Pim hala toprağa bağlanmıştır, ancak direnç akım akışına direnir, bu nedenle en az direnç yolu + 5V’dir.)

Dijital I / O pinini her şeyden ayırırsanız LED hatalı olarak yanıp sönebilir. Bunun nedeni, girişin “yüzer” olmasıdır – yani, voltaja ya da toprağa bağlı değildir. YÜKSEK veya DÜŞÜK az veya çok rasgele geri döner. Bu yüzden devrede aşağı çekme direncine ihtiyacınız var.

Butonlar için Durum Değişikliği Tespiti

Kod

Aşağıdaki çizim sürekli düğmenin durumunu okur. Ardından düğmenin durumunu ana döngü boyunca en son durumuna göre karşılaştırır. Geçerli düğme durumu son düğme durumundan farklıysa ve geçerli düğme durumu yüksekse, düğme kapalı olarak açık konuma getirilir. Çizim daha sonra bir düğme basma sayacını arttırır.

Çizim ayrıca düğme itme sayacının değerini de kontrol eder ve eğer dört katın bir katı ise, LED’i pin 13 ON (AÇIK) konumuna getirir. Aksi takdirde, onu kapatır.

/*
Durum değişikliği algılama (kenar algılama)

Çoğu zaman, dijital girişin durumunu her zaman bilmeniz gerekmez, ancak
sadece girdinin bir durumdan diğerine değiştiğini bilmeniz gerekir.
Örneğin, bir düğmenin KAPALI'dan AÇIK'a ne zaman gittiğini bilmek istersiniz. Buna denir
durum değişikliği algılama veya kenar algılama.

Bu örnek, bir düğmenin veya düğmenin kapalı olarak ne zaman açık olacağını nasıl algılayacağını gösterir.
ve kapalı.

Devre:
- + 5V pin 2'ye bağlı basmalı buton
- Topraktan 2 pime bağlı 10 kilohm direnç
- Pim 13'ten toprağa bağlanan LED (veya dahili LED'i en çok
Arduino panoları)

oluşturuldu 27 Eyl 2005
değiştirildi 30 Ağu 2011
Tom Igoe tarafından

Bu örnek kod kamu malıdır.
http://www.arduino.cc/en/Tutorial/ButtonStateChange
*/

// bu sabit değişmeyecek:
const int  buttonPin = 2;    // basma düğmesinin bağlı olduğu pin
const int ledPin = 13;       // LED'in bağlı olduğu pin

// Değişkenler değişecek:
int buttonPushCounter = 0;   // buton basış sayısı için sayaç
int buttonState = 0;         // düğmenin mevcut durumu
int lastButtonState = 0;     // düğmenin önceki durumu

void setup() {
  // düğme pinini giriş olarak başlatır:
  pinMode(buttonPin, INPUT);
  // LED'i bir çıkış olarak başlatır:
  pinMode(ledPin, OUTPUT);
  / seri iletişimi başlat:
  Serial.begin(9600);
}


void loop() {
  // Buton giriş pinini okuyun:
  buttonState = digitalRead(buttonPin);

 // buttonState'i önceki durumuna karşılaştır
  if (buttonState != lastButtonState) {
    // durum değiştiyse, sayacı artırma
    if (buttonState == HIGH) {
      // mevcut durum YÜKSEK ise, düğme kapalı konuma geçti:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes: ");
      Serial.println(buttonPushCounter);
    } else {
      // eğer mevcut durum DÜŞÜK ise, o zaman düğme kapalı konuma geçti:
      Serial.println("off");
    }
    // Zıplamayı,paraziti önlemek için biraz geciktirin
    delay(50);
  }
  // Döngüden sonraki zaman için mevcut durumu son durum olarak kaydetme
  lastButtonState = buttonState;


   // her dört düğmede LED'i açar, modunun
   // düğmesi itme sayacı. modulo işlevi size kalan
   // iki sayının bölünmesi:
  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }

}

Kaynak:arduino.cc

Exit mobile version