Skocz do zawartości

Problem dotyczący pętli while


Pomocna odpowiedź

Napisano

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

}

 

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

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