Zapamiętywanie trybu
Część sekcji Odmierzanie czasu bez delay() ścieżki Arduino w Coddy. Lekcja 7 z 18.
Naciśnięcie przycisku trwa ułamek sekundy, ale to, co uruchamia, może trwać znacznie dłużej. Aby działanie trwało także po zwolnieniu przycisku, szkic musi pamiętać, co robi. Zmienna, która do tego służy, nazywa się stanem lub trybem:
int mode = 0; // 0 = wyłączony, 1 = migającyPodziel loop() na dwie części. Najpierw wejścia zmieniają tylko tryb. Następnie reszta pętli wykonuje to, co określa tryb:
// 1. wejścia zmieniają tryb
if (digitalRead(blinkButton) == LOW) {
mode = 1;
}
// 2. tryb decyduje o tym, co się dzieje
if (mode == 1) {
// migaj za pomocą millis()
} else {
digitalWrite(ledPin, LOW);
}Każda liczba oznacza jedną czynność, którą może wykonywać szkic. W komentarzu zapisz, co oznacza każda liczba. Szkic może mieć tyle trybów, ile potrzebuje: 0, 1, 2, 3 i więcej.
Wyzwanie
ŁatwyZielony przycisk jest podłączony do pinu 2, a czerwony do pinu 3.
- zielony ustawia
modena 1, czerwony ustawia go na 0 - gdy
modema wartość 1, dioda LED na pinie 13 miga przy użyciumillis(): 500 ms świeci i 500 ms nie świeci - gdy
modema wartość 0, dioda LED jest wyłączona
Naciśnij Run, naciśnij zielony przycisk, puść go, a następnie naciśnij czerwony. Potem wybierz Check.
Spróbuj swoich sił
const int ledPin = 13;
const int blinkButton = 2; // zielony
const int offButton = 3; // czerwony
int mode = 0; // 0 = wyłączony, 1 = migający
unsigned long previousMillis = 0;
int ledState = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(blinkButton, INPUT_PULLUP);
pinMode(offButton, INPUT_PULLUP);
}
void loop() {
// 1. przyciski zmieniają tylko tryb
// 2. następnie wykonaj to, co nakazuje tryb
}
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 przyciskiem2Maszyny stanów
Zapamiętywanie trybuWybór za pomocą switchNazwane stany z enumMaszyna stanów sygnalizacji świetlnejPrzełączanie trybów przyciskiemPoćwicz samodzielnie: Edytor online Arduino