Wracając do wątku...
Mam temat do którego nie bardzo wiem jak się zabrać.
Robię sobie sterownik procesu technologicznego, powiedzmy dla uproszczenia sterownik
zarządzający pieczeniem chleba w piekarniku. To tylko przykład dla zobrazowania.
Problem w każdym razie jest taki, ze proces nie biega w koło jak pętla loop()
tylko są to kroki jeden po drugi, aż do zakończenia i wtedy stop.
Normalnie pisząc cokolwiek na Arduino dla każdego "zjawiska" jak obsługa PID, miganie LEDami,
aktualizacja LCD, zapis na SD etc piszę funkcję do której wpadam co jakiś czas (regulowany
millisami()), robie swoje i wypadam.
Nie bardzo mam pomysł jak biegając w pętli mógłbym zrobić np. taki proces:
- sprawdź czy do piekarnika coś włożono ważąc zawartość,
- jeśli wsad zgadza się z oczekiwanym grzejemy piekarnik (PID),
- po osiągnięciu określonej temp. puszczamy parę wodną żeby chleb nie wysechł,
- mierzymy jak chleb rośnie sprawdzając jego ...wysokość
,
- po założonym czasie i gdy chleb jest odpowiednio wysoki wyłączamy grzanie,
- gdy piec ostygnia wzywamy obsługę. koniec.
Przykład od czapy, ale obrazuje problem. Do obsłużenia jest lista zadań następujących
po sobie, nie jednoczesnych, do kolejnego przechodzimy gdy poprzednie jest zakończone.
Oczywiście mogę napisać funkcję robiącą to wszystko po kolei, ale to zablokuje mi
inne funkcje jak przykładowe miganie LEDami
Dopóki nie opuszczę funkcji głównej
procesor nie uruchomi kolejnych w pętli.
Pewnie mógłbym zapisywać stan głównej funkcji - gdzie jest i co robi, wyskakiwać z niej
po paru millisach() a następnie wywoływać ją z parametrami opisującymi ostatnie miejsce
procesu... Mam nadzieję, że istnieje lepszy pomysł
Dość łatwo byłoby podzielić proces na minimalne możliwe etapy, ale niewiele to nie da -
etap, żeby był wykonany może trwać np. kilka sekund, jeśli zostanie przerwany musi być
rozpoczęty od początku. Nie mogę zablokować loop() na ten czas...
Liczyłem trochę na RTOS ale coś mi się wydaje, że nie załatwi sprawy za mnie,
a poza tym pewnie natknę się na wiele problemów których teraz nie znam
Będę wdzięczny za jakiś pomysł jak zabrać się do jeża
PWL