NXC sterowanie serwomotorem: Różnice pomiędzy wersjami

Z Systemy operacyjne i sieci komputerowe
Przejdź do nawigacji Przejdź do wyszukiwania
 
(Nie pokazano 5 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 33: Linia 33:
  
 
<code>Off(OUT_BC);</code>Zatrzymanie serwomotorów B i C
 
<code>Off(OUT_BC);</code>Zatrzymanie serwomotorów B i C
 +
 +
'''Poniżej filmik ilustrujący przykład 1 i 2'''
 +
 +
<html>
 +
<object width="560" height="315"><param name="movie" value="//www.youtube.com/v/pzqUQvu1p9s?hl=pl_PL&amp;version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="//www.youtube.com/v/pzqUQvu1p9s?hl=pl_PL&amp;version=3" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>
 +
</html>
  
 
==Przykład 2==
 
==Przykład 2==
Linia 87: Linia 93:
  
 
<pre>
 
<pre>
task main()
 
{
 
 
RotateMotor(OUT_BC, 75, 3600);  
 
RotateMotor(OUT_BC, 75, 3600);  
 
RotateMotor(OUT_BC, -75, 3600);
 
RotateMotor(OUT_BC, -75, 3600);
}
 
 
</pre>
 
</pre>
  
Linia 99: Linia 102:
  
 
<code>RotateMotor(OUT_BC, -75, 3600);</code> 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'''
 
<code>RotateMotor(OUT_BC, -75, 3600);</code> 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.
 +
 +
<pre>
 +
RotateMotorEx(OUT_BC, 75, 360, 45, true, true);
 +
</pre>
 +
 +
Użyto <code>RotateMotorEx(port serwomotoru, moc 0 - 100, obrót w stopniach, kąt skrętu, synchronizacja serwomotorów, serwomotory zatrzymują się po rotacji);</code>
 +
 +
[[Category:Lego Mindstorms]]

Aktualna wersja na dzień 19:10, 25 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

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);