NXC sterowanie serwomotorem

Z Systemy operacyjne i sieci komputerowe
Przejdź do nawigacji Przejdź do wyszukiwania
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

Poniżej filmik ilustrujący przykład 1 i 2

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.

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

Przykład 5

Rozszerzona wersja wcześniejszego polecenia.

RotateMotorEx(OUT_BC, 75, 360, 45, true, true);

Użyto RotateMotorEx(port serwomotoru, moc 0 - 100, obrót w stopniach, kąt skrętu, synchronizacja serwomotorów, serwomotory zatrzymują się po rotacji);