Her Basışta Durumu Değiştirme
Coddy'nin Arduino Journey'sinin Girişler bölümünün bir parçası. Ders 4 / 22.
Şimdiye kadar LED düğmenin aynısını yaptı: düğme basılıyken yanıyor, bırakıldığında sönüyor. Bir lamba düğmesi farklı çalışır: bir kez basınca yanar, tekrar basınca söner. Buna toggle denir.
Açıp kapatmak için taslak, düğmenin basıldığı anı fark etmelidir: şimdi basılı, ancak loop() en son çalıştığında basılı değildi. Bu ana kenar denir. Son okumayı, bir sayaç gibi, setup() üstündeki bir değişkende tut:
int lastReading = HIGH;
void loop() {
int reading = digitalRead(2);
if (reading == LOW && lastReading == HIGH) {
// düğmeye basıldı
}
lastReading = reading;
}Düğmeyi basılı tutmak, okumanın LOW kalmasını sağlar; bu nedenle ne kadar uzun basılı tutarsan tut, kenar her basışta bir kez oluşur.
Bir bool değerini tersine çevirmek için "değil" anlamına gelen ! kullan: ledOn = !ledOn;, true değerini false yapar ve tersini de.
Görev
OrtaDüğme 2 numaralı pine (INPUT_PULLUP), LED ise 13 numaralı pine bağlı. Her basışta LED’in durumunu değiştir:
- düğme basıldığında (
LOWşimdi, geçen seferHIGH),ledOndeğerini tersine çevir - okumayı
loop()sonundalastReadingiçine kaydet - LED’i
ledOndeğerine göre aç veya kapat
Run düğmesine bas, düğmeye birkaç kez bas, ardından Check düğmesine bas.
Kendin dene
const int buttonPin = 2;
const int ledPin = 13;
bool ledOn = false;
int lastReading = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
// Düğmeye basıldığında ledOn değerini tersine çevir
// Bir sonraki sefer için bu okumayı hatırla
// ledOn değerine uyması için LED'i aç veya kapat
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Girişler bölümündeki tüm dersler
1Düğmeler
Bir Düğmenin Durumunu YazdırmaPull-Down DirenciDahili Pull-UpHer Basışta Durumu DeğiştirmeDüğmeye Basışları SaymaDüğme Titreşimini Gidermeİki Düğmeye Aynı Anda BasmaKendi başına pratik yap: Arduino playground