• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
jak wykonać kilka razy pętlę IF i zakończyć ją
#3
Witam, bardzo dziękuję za odpowiedź.
Faktycznie, tak jak pisałeś, pętla for i zastępczo if, która miała odliczyć ilość uruchomień, za szybko powodowała inkrementację. Problem z 5-krotnym wykonaniem pętli rozwiązałem w poniższy sposób:

 
Kod:
if ((frequency>200)&&(frequency<2000)&&(k1<6))
  {
    if (millis()<(czas+czas1))
    {
      digitalWrite(Out, HIGH);
      k1++;
    }
    if (millis()>(czas+czas1)&&(millis()<(czas+czas2)))
    {
      digitalWrite(Out, LOW);
    }
    if (millis()>(czas+czas1+czas2)) czas=millis();
  }
  else
  {
    digitalWrite(Out, LOW);
    czas=millis();
  }


Jednak zdaję sobie sprawę, że nie jest to do końca dobre rozwiązanie i tylko częściowo spełniające moje założenia.

Najlepszym rozwiązaniem dla mnie byłoby aby program sprawdzał częstotliwość na wejściu i na jej podstawie sterował grzałką, i tak:
 - jeśli częstotliwość jest mniejsza niż 200 Hz, program nie włącza grzałki
 - jeśli częstotliwość jest w granicach 200 -15000 Hz wtedy program włącza grzałkę według scenariuszy 1-3. W każdym ze scenariuszy można przyjąć na stałe, iż grzałka jest 5-krotnie włączana na okres czas1 (docelowo na 5 min) po czym wyłączana na okres czas2 (docelowo 10 min) i jeśli w tym czasie nie zmniejszy się częstotliwość o próg niżej (np. z 3->2) czeka godzinę i ponownie uruchamia 5-krotne powtórzenie włącz/wyłącz. Natomiast jeśli w międzyczasie spadnie do progu niżej, program wchodzi do założeń niższego progu i dalej 5-krotnie wykonuje włączenie i wyłączenie grzałki... itd.

Mam nadzieję, że nie namieszałem za bardzo
 
Odpowiedź
  


Wiadomości w tym wątku
RE: jak wykonać kilka razy pętlę IF i zakończyć ją - przez pinelesss - 25-07-2017, 12:28

Skocz do:


Przeglądający: 1 gości