Witam wszystkich,
niestety nie jestem w stanie sobie poradzić i muszę poprosić o pomoc.
Mam arduino leonardo, którego zadaniem jest sterowanie określoną sekwencją elektrozaworów.
Wyzwoleniem funkcji jest wartość wynosi między 1000 a 1023 (takie są wahania niestety) wrzucona na jedno z analogowych wejść. Problem polega na tym, że ta wartość podawana jest przez różny czas i w różnych odstępach, przez co program nie działa tak jak powinien.
Moje pytanie brzmi zatem jak 1 sygnał traktować jako 1 i aby sekwencja wykonywała się tylko 1 raz a nie np. x razy kiedy sygnał trwa dłużej niż wykonywanie pętli:
Sygnał (wartość między 1000 - 1023) podawany jest zazwyczaj w odstępach 4-5 s, ale zdarza się że nieco krócej lub dłużej. Oprócz tego może trwać 4-5 s a czasami nawet 10 s. Nie mam pojęcia jak za każdym razem traktować to jako 1 i ten sam sygnał mając do dyspoyzcji tylko to, że stale, w danym czasie ta wartość to > 1000.
Próbowałem dać nawet pętlę while w pętli if, ale to się zapętla i cały czas zachowuje się tak jakby ta wartość na wejściu była powyżej 1000.
Z góry dzięki za pomoc,
Janek
niestety nie jestem w stanie sobie poradzić i muszę poprosić o pomoc.
Mam arduino leonardo, którego zadaniem jest sterowanie określoną sekwencją elektrozaworów.
Wyzwoleniem funkcji jest wartość wynosi między 1000 a 1023 (takie są wahania niestety) wrzucona na jedno z analogowych wejść. Problem polega na tym, że ta wartość podawana jest przez różny czas i w różnych odstępach, przez co program nie działa tak jak powinien.
Moje pytanie brzmi zatem jak 1 sygnał traktować jako 1 i aby sekwencja wykonywała się tylko 1 raz a nie np. x razy kiedy sygnał trwa dłużej niż wykonywanie pętli:
Kod:
if (value > 1000)
{
digitalWrite(12, HIGH);
Serial.println("elektrozawor 1 ON");
Serial.print(F("Wejscie analogowe 2 ma wartosc: "));
Serial.println(value); //
digitalWrite(10,0); //dioda led zielona OFF
delay (220);
digitalWrite(12, LOW);
Serial.println("elektrozawor 1 OFF");
}
Sygnał (wartość między 1000 - 1023) podawany jest zazwyczaj w odstępach 4-5 s, ale zdarza się że nieco krócej lub dłużej. Oprócz tego może trwać 4-5 s a czasami nawet 10 s. Nie mam pojęcia jak za każdym razem traktować to jako 1 i ten sam sygnał mając do dyspoyzcji tylko to, że stale, w danym czasie ta wartość to > 1000.
Próbowałem dać nawet pętlę while w pętli if, ale to się zapętla i cały czas zachowuje się tak jakby ta wartość na wejściu była powyżej 1000.
Z góry dzięki za pomoc,
Janek