Światło na czas
Część sekcji Odmierzanie czasu bez delay() ścieżki Arduino w Coddy. Lekcja 6 z 18.
Światło na klatce schodowej włącza się po naciśnięciu przycisku i gaśnie samo po chwili. Naciśnij przycisk ponownie, gdy światło się świeci, a odliczanie czasu zacznie się od nowa.
Potrzebne są do tego dwie rzeczy: chwila ostatniego naciśnięcia oraz informacja, czy światło jest włączone. Zapisz tę chwilę w zmiennej typu unsigned long, gdy przycisk jest wciśnięty:
if (digitalRead(buttonPin) == LOW) {
pressedAt = millis(); // rozpocznij (lub rozpocznij ponownie) odmierzanie czasu
lightOn = true;
digitalWrite(ledPin, HIGH);
}Następnie w każdej iteracji pętli sprawdzaj, ile czasu minęło:
if (lightOn && millis() - pressedAt >= onTime) {
lightOn = false;
digitalWrite(ledPin, LOW);
}Obie części nigdy nie czekają, więc naciśnięcie zostanie wykryte w dowolnym momencie, nawet gdy światło już się świeci. Jeśli po naciśnięciu użyjesz delay(2000), drugie naciśnięcie podczas oczekiwania zostanie pominięte.
Wyzwanie
ŁatwyZbuduj oświetlenie schodów:
- naciśnięcie natychmiast zapala diodę LED na pinie 13
- 2 sekundy po naciśnięciu światło gaśnie samo
- naciśnięcie, gdy światło jest włączone, rozpoczyna odliczanie 2 sekund od nowa
Naciśnij Run, naciśnij przycisk kilka razy, a następnie Check.
Spróbuj swoich sił
const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000; // jak długo dioda pozostaje włączona
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// gdy przycisk jest wciśnięty: włącz diodę LED i zapamiętaj czas
// gdy od tego momentu upłynie onTime: wyłącz diodę LED
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Odmierzanie czasu bez delay()
1millis()
Zegar millis()Czas w typie unsigned longMiganie bez opóźnieniaDwie diody LED, dwa tempaMiganie podczas przełączania przyciskiemŚwiatło na czas4Precyzyjne odmierzanie czasu
Pomiar za pomocą micros()Gdy licznik millis() się przepełniaStoper z przyciskiemPoćwicz samodzielnie: Edytor online Arduino