• 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
Przerywanie pętli while
#2
Naucz się używać millis zamiast delay. While się nie nadaje, wystarczy zwykły if(a) else, jak ma wysyłać bo ustawiłeś a=1, to sprawdza czy od poprzedniego wysłania minęło odpowiednio dużo czasu.
Przykład z millis jest w Arduino, idea jest prosta, zamiast zatrzymywać program na 1s po zmianie stanu led program pomija zmianę stanu led od poprzedniej zmiany dopóki nie minie kolejna 1s.
Jeśli chcesz wysyłać sekwencję kodów IR w odstępach 1s, to wystarczy z blynk ustawić zmienna a=1, by zatrzymać wysłać a=0.
Potem w funkcji wysyłania IR użyć switch case.
void loop() {
Blynk.run();
if(minela1s)
{
if (a) obslugaIR();
}
}
Blynk sobie działa online cały czas i sprawdza co tam robisz w aplikacji, a obsługaIR co 1s robi coś z wysyłaniem.

void obslugaIR()
{
static uint8_t zmiennaSterujaca=0;
switch(zmiennaSterujaca)
{
case 0:
Serial.println("starplus");
irsend.sendNEC(0x80BF49B6);
zmiennaSterujaca++;
break;
case 1:
Serial.println("starplus");
irsend.sendNEC(0x80BFE11E);
zmiennaSterujaca++;
break;
case 1:
Serial.println("starplus");
irsend.sendNEC(0x80BF49B6);
zmiennaSterujaca=0;
break;
default:
break;
}
}
I to będzie latało w kółko dopóki z Blynka nie ustawisz innego a. Zmienna static w funkcji zapamięta swój stan do kolejnych wywołań, to może być też problem, jeśli ta sekwencja musi się zakończyć, albo zawsze zacząć od początku, można to jakoś ogarnąć jeśli to ważne. Np. monitorować stan a, jeśli poprzednio był 1, a teraz jest 1, to jest to kontynuacja, ale jeśli poprzednio był 0, a teraz 1, to nowa sekwencja i można wyzerować zmienną sterującą w swich.
Jeśli nic nie zrozumiałeś, to nie szkodzi, trzeba zrobić z każdym nowym elementem programowania dziesiątki przykładowych programów wystukanych własnymi palcami i wtedy to samo wchodzi.
W ten sposób można ładować do loop dziesiątki różnych funkcji, których wywołanie warunkowane jest czasowo, ale żadna nie zakłóca działania innej, no przynajmniej względnie.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
Przerywanie pętli while - przez Sauber24 - 12-09-2023, 14:56
RE: Przerywanie pętli while - przez kaczakat - 12-09-2023, 16:35

Skocz do:


Przeglądający: 1 gości