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ı.
Görev
OrtaKartı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
}
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