Menu
CoddyTech

Düğmeyle Açıp Kapatırken Yanıp Sönme

Coddy'nin Arduino Journey'sinin delay() Kullanmadan Zamanlama bölümünün bir parçası. Ders 5 / 18.

Hiç beklemeyen bir taslak, bir düğmeyi izleyebilir ve aynı anda bir LED'i yakıp söndürebilir. Her döngü birkaç mikrosaniye sürer; bu yüzden kart düğmeyi saniyede binlerce kez kontrol eder ve çok kısa bir dokunuşu bile algılar.

LED'i yakıp söndürme işlemi millis() kalıbıdır. Düğme ise Inputs bölümündeki kenar kontrolüdür: düğmeye şimdi basılmış ve önceki döngüde basılmamışsa işlem yap. ! "değil" anlamına gelir; bu nedenle !wasPressed, "basılmamıştı" olarak okunur.

bool wasPressed = false;

void loop() {
  // yanıp sönme: if (now - previous >= 500) { ... }

  bool pressed = digitalRead(buttonPin) == LOW;
  if (pressed && !wasPressed) {
    // düğmeye az önce basıldı
  }
  wasPressed = pressed;
}

Her iki parçayı da loop() içine, peş peşe yerleştir ve ikisinde de delay() kullanma. LED 500 ms bekleseydi, bekleme sırasında başlayıp biten bir dokunuş hiç algılanmazdı.

challenge icon

Görev

Orta

Kartın aynı anda iki şeyi yapmasını sağla:

  • 13 numaralı pindeki kırmızı LED, millis() ile zamanlanarak her 500 ms'de bir yanıp sönüyor
  • butona her basıldığında 12 numaralı pindeki sarı LED'in durumu değişiyor: yanıyor, sonra sönüyor, sonra tekrar yanıyor

Hızlı bir dokunuş her an işe yaramalı ve butonu basılı tutmak sarı LED'i yalnızca bir kez değiştirmeli. Run'a bas, butona dokun, ardından Check'e bas.

Kendin dene

const int redLed = 13;
const int yellowLed = 12;
const int buttonPin = 2;

void setup() {
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // 1. millis() kullanarak kırmızı LED'i her 500 ms'de bir açıp kapat

  // 2. düğmeye her basıldığında sarı LED'in durumunu değiştir
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

delay() Kullanmadan Zamanlama bölümündeki tüm dersler

Kendi başına pratik yap: Arduino playground