NXC sterowanie serwomotorem: Różnice pomiędzy wersjami
Linia 64: | Linia 64: | ||
==Przykład 3== | ==Przykład 3== | ||
+ | |||
+ | Efekt identyczny jak w przykładzie 1 | ||
+ | |||
+ | <pre> | ||
+ | task main() | ||
+ | { | ||
+ | OnFwd(OUT_BC, 75); | ||
+ | Wait(5000); | ||
+ | OnFwd(OUT_BC, -75); | ||
+ | Wait(5000); | ||
+ | Off(OUT_BC); | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | '''Przeanalizujmy''' | ||
+ | |||
+ | <code>OnFwd(OUT_BC, -75);</code> Do jazdy do tyłu wykorzystujemy polecenie do jazdy naprzód z mocą -75. | ||
+ | |||
+ | ==Przykład 4== | ||
Efekt podobny do przykładu 1. Czas jazdy zależny jest od podanej w stopniach liczby obrotów. '''1 rotacja = 360 stopni'''. | Efekt podobny do przykładu 1. Czas jazdy zależny jest od podanej w stopniach liczby obrotów. '''1 rotacja = 360 stopni'''. |
Wersja z 14:17, 6 sty 2014
Przykład 1
Zakładamy, że robot sterowany jest dwoma serwomotorami. W moim przypadku B i C. W pierwszym przykładzie robot pojedzie prosto przez 5 sekund, następnie cofnie się na miejsce startowe.
task main() { OnFwd(OUT_B, 75); OnFwd(OUT_C, 75); Wait(5000); OnRev(OUT_BC, 75); Wait(5000); Off(OUT_BC); }
Przeanalizujmy
task main() { }
Zadanie główne, może być ich oczywiście więcej.
OnFwd(OUT_B, 75);
serwomotor B ma ruszyć naprzód z siłą 75% mocy.
Wait(5000);
Czekaj 5000 milisekund, czyli 5 sekund, czyli wcześniejsze zadanie będzie trwało 5 sekund.
OnRev(OUT_BC, 75);
serwomotory B i C mają ruszyć do tyłu z siłą 75%
Off(OUT_BC);
Zatrzymanie serwomotorów B i C
Przykład 2
Robot pojedzie przez 5 sekund do przodu. Następnie obróci się i wróci przodem na miejsce.
task main() { OnFwd(OUT_B, 75); OnFwd(OUT_C, 75); Wait(5000); OnRev(OUT_C, 75); Wait(2000); OnFwd(OUT_BC, 75); Wait(5000); Off(OUT_BC); }
Przeanalizujmy
Skupimy się tylko na różnicach w stosunku do poprzedniego przykładu.
OnRev(OUT_C, 75); Wait(2000);
Proszę zauważyć, że uruchamiamy tylko jeden serwomotor. W rezultacie robot obróci się.
Przykład 3
Efekt identyczny jak w przykładzie 1
task main() { OnFwd(OUT_BC, 75); Wait(5000); OnFwd(OUT_BC, -75); Wait(5000); Off(OUT_BC); }
Przeanalizujmy
OnFwd(OUT_BC, -75);
Do jazdy do tyłu wykorzystujemy polecenie do jazdy naprzód z mocą -75.
Przykład 4
Efekt podobny do przykładu 1. Czas jazdy zależny jest od podanej w stopniach liczby obrotów. 1 rotacja = 360 stopni.
task main() { RotateMotor(OUT_BC, 75, 3600); RotateMotor(OUT_BC, -75, 3600); }
Przenalizujmy
RotateMotor(OUT_BC, 75, 3600);
Uruchamiamy serwomotory B i C z mocą 75% na 10 pełnych obrotów do przodu (1 obrót = 360 stopni).
RotateMotor(OUT_BC, -75, 3600);
Uruchamiamy serwomotory B i C z mocą 75% na 10 pełnych obrotów do tyłu (1 obrót = 360 stopni). Ruch wsteczny uzyskujemy poprzez -75