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