Skocz do zawartości

Problem dotyczący pętli while


Elorn

Pomocna odpowiedź

Witam, mam problem dotyczący pętli while w jednej z początkowych lekcji kursu  arduino, oto kod z #3 lekcji

image.thumb.png.9b451b02db2d2a901b1deea82217a085.png 

Rozumiem, że kod działa tak, jak opisałe, czyli:

Jeśli przycisk jest wciśnięty, to

zapal diodę z wyjścia 9

zgaś diodę z wyjścia 8

W przeciwnym wypadku:

zgaś diodę z wyjścia 9

zapal diodę z wyjścia 8

Napisz: Uwaga! Alarm! Okno nie jest zamkniete!

Podczas gdy przycisk z numer 10 jest nie kliknięty

czekaj 25 ms

 

MOJE PYTANIE TO:

Czemu napis "Uwaga! Alarm! Okno nie jest zamkniete!" nie powtarza się co 25 ms? Przecież po 25 ms program powinien chyba się zapętlić i czekać, aż znowu wcisne guzik, jeśli tego nie zrobię, to komenda "else" powie "Uwaga! Alarm! Okno nie jest zamkniete!".

Może ktoś wyjaśnić, czemu tak się nie dzieje?

 

 

poniżej ten sam kod, ale pisany:

void setup(){

  Serial.begin(9600); //Uruchamiamy transmisję



  pinMode(8, OUTPUT); //Wyjście diody czerwonej

  pinMode(9, OUTPUT); //Wyjście diody zielonej

  pinMode(10, INPUT_PULLUP); //Przycisk



  digitalWrite(8, LOW); //Wyłączenie obu diod

  digitalWrite(9, LOW);

}



void loop() {



  if (digitalRead(10) == LOW) { //Jeśli przycisk jest wciśnięty

    digitalWrite(9, HIGH); //Włączenie diody zielonej

    digitalWrite(8, LOW); //Wyłączenie diody czerwonej

  } else { //W przeciwnym wypadku

    digitalWrite(9, LOW); //Wyłączenie diody zielonej

    digitalWrite(8, HIGH); //Włączenie diody czerwonej

    Serial.println("Uwaga! Alarm! Okno nie jest zamkniete!");

   

    while (digitalRead(10) == HIGH) {

      //Podczas, gdy (przycisk z numeru 10 == jest nie kliknięty)

      delay(25); //czekaj 0,025 s

    }



  }

  //Powrót do komendy if (digitalRead(10) == LOW)...

}

 

Link do komentarza
Share on other sites

Jeżeli w while (digitalRead(10) == HIGH) spełni się warunek, to w nieskończoność jest wykonywana zawartość tego, uniemożliwiając wykonywanie innych części programu. Dopiero gdy już wciśniesz przycisk, to wyjdzie z tej pętli

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.