• 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ą
#6
Na podstawie Twoich wskazówek zrobiłem coś takiego:
Kod:
const int Grzalka = 3;           // Wyjscie przekaznika grzalki
unsigned long time1 = 0;
boolean d1 = 0;
int k1;
void setup(void)
{
  pinMode(Grzalka, OUTPUT);
  digitalWrite(Grzalka, LOW);
  Serial.begin(9600);
  k1=0;
}
void Relay(void)
{
  if (k1<5)
  {
    if ((d1)&&(millis() - time1 > 2000))
    {
      time1 = millis();
      digitalWrite(Grzalka, HIGH);
      d1 = !d1;
    }
 
    if ((!d1)&&(millis() - time1 > 1000))
    {
      time1 = millis();
      digitalWrite(Grzalka, LOW);
      d1 = !d1;
      k1++;
    }
  }
 
  if ((k1==5)&&(millis() - time1 > 10000))
  {
    time1=millis();
    digitalWrite(Grzalka, LOW);
    k1=0;
  }
}
void loop(void)
{
  Relay();
  Serial.println(k1);
}

Wszystko działa jak należy, grzałka jest włączana na okres 1000ms, wyłączana na 2000ms i po wykonaniu 5 razy tej pętli czeka 10000ms ale + 2000ms, czyli wyłącza grzałkę na czas 10000 i odlicza 2000ms z pętli "if ((d1)&&(millis() - time1 > 2000))". Nie mam pomysłu, jak się tego pozbyć. Dodawałem w pętli "if ((k1==5)&&(millis() - time1 > 10000))" d1 = !d1; co pomagało ale wycinało znowu jedno powtórzenie całej głównej pętli. Można by zamiast warunku k1<5 zrobić k1<6 ale będzie się za pierwszym razem uruchamiać znowu 6 razy.

Miałbyś jakąś sugestię?
 
Odpowiedź
  


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

Skocz do:


Przeglądający: 1 gości