Ok, dziś na spokojnie usiadłem i skleiłem coś, co działa prawie tak jakbym chciał. Nie ma tu programowo wielozadaniowości, ale fizycznie mogę zmieniać prędkość silnika w trakcie obrotu servem itp. Wkleję kod, jak ja to sobie wymyśliłem.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jest tu dużo microswitchy, ale na razie nie chciałem się bawić w obsługę kilku instrukcji za pomocą jednego klawisza, ale będę starał się to poprawić. Jednak jest problem, za który nie bardzo wiem, jak się zabrać. Po wcisnieciu klawisza servo_on następuje obrót,raz w jedną raz w drugą. Gdy wciskamy servo_off to servo zatrzymuje się w danej pozycji i to jest OK, tak to ma wyglądać. Jednak gdy znowu wcisnę servo_on servo szybko się skręca do pozycji 0 i zaczyna się pętla od nowa. Nie jest to pożądany dla mnie efekt, ale rozumiem czemu tak się dzieje, bo pętla w funkcji liczy od 0 więc nic dziwnego, że się tak dzieje. Tylko teraz pytanie jak to zrobić, żeby po zatrzymaniu serva, pętla zaczeła liczyć od momentu zatrzymania? Tą wartość trzeba by zapamiętać i podstawić do pętli for. Nie bardzo wiem jak tu zakombinować.
Ps. wiem, że pewnie forma tak napisanego programu jest tragiczna pewnie, ale nie mialem pomyslu jak pewne rzeczy rozwiązać. Jeśli chodzi o zmianę prędkości silnika w trakcie pracy serva pomyslalem o przerwaniach zewnętrznych, ale jak sobie pomyslalem, że jeden klawisz pod INT0,drugi pod INT1 a trzeci co, pod PCINT któryś ? Stwierdziłem, że chyba jednak nie tędy droga.