Arduino Filtreli Buton Uygulaması

0
1050
Okunma

Arduino Filtreli Buton

Arduino Filtreli Buton

Arduino Filtreli Buton. Basma butonları genellikle mekanik ve fiziksel durumlarından dolayı basıldığında açık / kapalı geçişler meydana getirir: bu geçişler programı kandırmak için çok kısa bir sürede birden fazla baskı olarak okunabilir. Bu örnek, bir girişin nasıl geri çekileceğini gösterir; bu, basma düğmesinin kesinlikle basıldığından emin olmak için kısa bir süre içinde iki kez kontrol edilmesi anlamına gelir. Çözülmeden, düğmeye bir kez basılması tahmin edilemeyen sonuçlara neden olabilir. Bu çizim, düğmeye basıldığından beri geçen süreyi izlemek için millis() işlevini kullanır.

Gerekli Donanım

  • Arduino veya Genuino
  • anlık düğme veya anahtar
  • 10k ohm direnç
  • kanca telleri (Breadboard kaboloları)
  • breadboard

Arduino Uno, ATmega328P tabanlı bir mikro denetleyici karttır. 14 adet dijital giriş / çıkış pini (6’sı PWM çıkışı olarak kullanılabilir), 6 analog giriş, 16 MHz kristali, bir USB bağlantısı, bir güç girişi, bir ICSP başlığı ve bir sıfırlama düğmesi vardır. Mikrodenetleyiciyi desteklemek için gereken her şeyi içerir; Başlamak için bir USB kablosuyla bir bilgisayara bağlayın ya da AC-DC adaptörü ya da pille çalıştırın. UNO’yu, yanlış bir şey yapmadan çok fazla endişe etmeden tamir edebilir, en kötü durum senaryosunu değiştirebilirsiniz. Birkaç dolara çip alır ve tekrar kullanabilirsiniz.”

Kod

Aşağıdaki taslak Limor Fried’in geri dönüş versiyonuna dayanmaktadır , ancak mantığı onun örneğinden tersine çevrilmiştir. Örneğinde, anahtar kapandığında LOW ve açık olduğunda HIGH döner. Burada, basıldığında LOW ve basılmadığında LOW döner.

/*
Giriş pimi her zaman LOW'dan YÜKSEK'e (örn. Bir basma düğmesi nedeniyle) gider.
basın), çıkış pimi DÜŞÜK'den YÜKSEK veya YÜKSEK'ten DÜŞÜK'e değişir. Orada bir
devreyi çözmek için geçişler arasında minimum gecikme (yani gürültüyü yok saymak için).

Devre:
- Pin 13'ten toprağa bağlanan LED
- pim 2'den + 5V'ye bağlı buton
- Pin 2'den toprağa bağlanan 10 kilohm direnç

- Not: Arduino kartlarının çoğunda, kartta zaten bir LED var.
13'e kadar, bu örnek için ekstra bileşenlere ihtiyacınız yoktur.

21 Kas 2006 oluşturuldu
David A. Mellis tarafından
değiştirildi 30 Ağu 2011
Limor Fried tarafından
değiştirilmiş 28 Ara 2012
Mike Walters tarafından
30 Ağu 2016
Arturo Guadalupi tarafından

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

// sabitler değişmeyecek. Pin numaralarını ayarlamak için burada kullanılırlar:
const int buttonPin = 2;    // Buton Pin Numarası
const int ledPin = 13;      // LED Pin Numarası

// Variables will change:
int ledState = HIGH;         // çıkış pininin mevcut durumu
int buttonState;             // giriş pininden güncel okuma
int lastButtonState = LOW;   // giriş pininden önceki okuma

// Aşağıdaki değişkenler imzalanmamış uzun zamanlardır, çünkü
// milisaniye, hızlıca bir int depolanabileceğinden daha büyük bir sayıya dönüşür.
unsigned long lastDebounceTime = 0;  // çıkış pimi en son değiştirildiğinde
unsigned long debounceDelay = 50;    // geri dönme zamanı; çıkış titriyorsa artar

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

  // başlangıç ​​LED durumunu ayarla
  digitalWrite(ledPin, ledState);
}

void loop() {
  // anahtarın durumunu bir yerel değişkene okuyun:
  int reading = digitalRead(buttonPin);

  // düğmesine basıp basmadığını kontrol et
  // (giriş LOW'dan YÜKSEK'e geçti) ve yeterince uzun beklediniz
  // son basmadan beri herhangi bir gürültüyü yok saymak için:

  // Anahtarın sesi değiştiyse veya basıldığında:
  if (reading != lastButtonState) {
   // debouncing zamanlayıcısını sıfırla
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // okuma ne olursa olsun, geri dönüşten daha uzun süredir var
    // erteleme, bu yüzden mevcut geçerli durum olarak alın:

    // düğme durumu değiştiyse:
    if (reading != buttonState) {
      buttonState = reading;

      // sadece yeni düğme durumu YÜKSEK olduğunda LED'i değiştir
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }

  // LED'i ayarlayın:
  digitalWrite(ledPin, ledState);

 // okumayı kaydedin. Döngüden sonraki sefer, bu lastButtonState olacak:
  lastButtonState = reading;

Kaynak:arduino.cc

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız 2 Oydan 5,00 Puan. Bu yazıya oy vermek ister misiniz?
Loading...
Elektronik, Bilim, Teknoloji, Müzik, Tasarım.
Paylaş

CEVAP VER

Please enter your comment!
Please enter your name here

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