1. Vývojové prostředí
2. Dálkové ovládání
3. Nový projekt
4. První program
5. Formátování kódu
6. Komentáře
7. Proměnná
8. Větvení
9. Cyklus
10. Funkce
11. LEDky
12. LED pásek
13. Sériová linka
14. Koncová tlačítka
15. Práce s tlačítky
16. Ultrazvuk
17. IR senzor
18. Motory
19. Monitorování robotky
20. Serva (hloupá)
Motivace
Práce se servy
21. Úpravy dálkového ovládání
Dokumentace
Příklady
Serva (hloupá)
Motivace
V situacích, kdy má robot s něčím pohybovat, například s klepety pro úchop předmětů, je možné využít serva. Serva jsou speciálním typem motoru, který umožňuje poměrně přesné otáčen i o malé úhly. Oproti klasickým motorům jsou limitovány úhlem, ve kterém se mohou otáčet. Výhodou serv je, že se snaží udržet si daný úhel i když se ho snaží něco pootočit.
Práce se servy
rkServosSetPosition
- Nastaví pozici serva na novou. Očekává číslo serva a nový úhel, jako parametry. Číslo serva je hodnota od 1 do 4. Úhel je možné nastavit v rozsahu-90°
-90°
rkServosGetPosition
- Vrací naposledy navrácenou pozici serva (hodnotu, která byla nastavena posledním voláním funkcerkServosSetPosition
). Vyžaduje číslo serva jako parametr, v rozmezí 1 - 4. Funkce vrací hodnotu v rozsahu -90 až 90 (stupňů).rkServosDisable
- Jakmile není zapotřebí, aby servo drželo svoji pozici, například není zapotřebí nic uchopit, je možné použít touto funkci, která je vypne. Tato funkce vyžaduje jeden parametr a to číslo serva 1 - 4, které má být odpojeno. Tato funkce nevrací žádnou hodnotu.
Úkázka pootočení serva do nové pozice
1
2
3
4
5
6
7
8
#include "robotka.h"
void setup() {
rkConfig cfg;
rkSetup(cfg);
rkServosSetPosition(1, 50); // nastav hodnotu serva 1 na 50 stupnu
}
Předchozí ukzka pootočí servem na úhel 50 stupňů. Následující ukázka ukazuje, jak pohybovat servem od jednoho krajního úhlu k druhému.
Úkázka pootočení serva do nové pozice
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "robotka.h"
void setup() {
rkConfig cfg;
rkSetup(cfg);
while(true){
for(int uhel = -90; uhel <= 90; uhel++ ){ // otacej servem od -90 do 90
rkServosSetPosition(1, 50);
}
for(int uhel = 90; uhel >= -90; uhel-- ){ // otacej servem od 90 do -90
rkServosSetPosition(1, 50);
}
}
rkServosDisable(1);
}
Předchozí ukázka pohybuje servem opakovaně od -90° do 90° a poté od 90° do -90°. Nakonec deaktivuje servo