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ı.
Görev
KolayMerdiven 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
}
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
1millis()
millis() Saatiunsigned long ile Zaman DeğerleriGecikmesiz Yanıp Sönmeİki LED, İki HızDüğmeyle Açıp Kapatırken Yanıp SönmeZamanlayıcıyla Yanan IşıkKendi başına pratik yap: Arduino playground