Menu
CoddyTech

Zamanlayıcıyla Yanan Işık

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

Merdiven lambası, düğmesine bastığınızda yanar ve kısa bir süre sonra kendiliğinden söner. Lamba yanarken tekrar basarsanız süre yeniden başlar.

Bunun için iki şey gerekir: son basışın gerçekleştiği an ve lambanın yanıp yanmadığı. Düğmeye basıldığında bu anı bir unsigned long değişkeninde saklayın:

if (digitalRead(buttonPin) == LOW) {
  pressedAt = millis();     // zamanı başlat (veya yeniden başlat)
  lightOn = true;
  digitalWrite(ledPin, HIGH);
}

Ardından her döngüde ne kadar zaman geçtiğini kontrol edin:

if (lightOn && millis() - pressedAt >= onTime) {
  lightOn = false;
  digitalWrite(ledPin, LOW);
}

İki bölüm de hiçbir zaman beklemez; bu nedenle lamba zaten yanıyor olsa bile basış her an algılanır. Basıştan sonra delay(2000) kullanılsaydı, bekleme sırasında yapılan ikinci basış algılanmazdı.

challenge icon

Görev

Kolay

Merdiven lambası yap:

  • Bir kez basınca 13 numaralı pindeki LED hemen yanar
  • Bastıktan 2 saniye sonra kendiliğinden söner
  • Yanarken tekrar basınca 2 saniyelik süre yeniden başlar

Çalıştır'a bas, düğmeye birkaç kez bas, ardından Kontrol Et'e bas.

Kendin dene

const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000;   // ışığın ne kadar süre açık kaldığı

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

void loop() {
  // düğmeye basıldığında: LED'i yak ve zamanı kaydet

  // o andan itibaren onTime kadar süre geçtiğinde: LED'i söndür
}
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