Kontynuując propozycję zrobienia tego samego w lepszej kodowo wersji, zobacz czy coś takiego nie będzie dla Ciebie zrozumiałe, a jak bardzo uniwersalne i przejrzyste to jest:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Aby wykonać krok wystarczy zmiana stanu pinów. Więc aby wykonać kilka kroków to trzeba wywołać kilka razy razy funkcję w określonych odstępach. Nie ma konieczności czekania między nimi, tylko można ten czas oddać innym funkcją / procesom. Aby nie dokładać kolejnego elementu to zamiast timerów sprzętowych / programowych jest w przykładzie dana funkcja _ms_delay() wywoływana wielokrotnie do czasu wyzerowania zmiennej timer. Ale struktura jest już przygotowana pod użycie timera programowego / sprzętowego. Argumentem funkcji _ms_delay() jest 1, więc timer określa opóźnienie w ms.
W funkcji move używany jest argument będący jednym z trzech wartości:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
To teraz wystarczy dodać funkcję move która odpowiednio zmieni położenie silnika.
W funkcji move musimy pilnować fazy silnika by odpowiednio ją zmieniać (inaczej w lewo a inaczej w prawo), więc powołujemy statyczną zmienną phase.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jak wysłaliśmy OFF, to tylko wyłączamy silnik. Jak LEWO i PRAWO, to odpowiednio zwiększamy lub zmniejszamy pharse a następnie nowy stan wystawiamy na piny.
Dzięki temu wywołanie OFF wyłączy silnik ale nie zgubi fazy kroków.
--
Pozdrawiam,
Robert
PS. Kod pisany jest na sucho, bo nie mam w tej chwili jak sprawdzić, więc mam nadzieję że nie ma w nim błędów
.