Menu
CoddyTech

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ący

Podziel 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.

challenge icon

Wyzwanie

Łatwy

Zielony przycisk jest podłączony do pinu 2, a czerwony do pinu 3.

  • zielony ustawia mode na 1, czerwony ustawia go na 0
  • gdy mode ma wartość 1, dioda LED na pinie 13 miga przy użyciu millis(): 500 ms świeci i 500 ms nie świeci
  • gdy mode ma 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
}
quiz iconSprawdź się

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()

Poćwicz samodzielnie: Edytor online Arduino