<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://3dliga.robotika.sk/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>3D liga wiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="https://3dliga.robotika.sk/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Admin"/>
	<updated>2026-09-23T07:00:34Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=3D_models&amp;diff=1158</id>
		<title>3D models</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=3D_models&amp;diff=1158"/>
		<updated>2026-09-06T17:23:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Táto stránka slúži na ukázanie funkčnosti vytlačených 3D dielov a zároveň ako manuál na ich použitie.&lt;br /&gt;
&lt;br /&gt;
Každá súčiastka má nejakú funkciu, a preto je aj označená farbou, ktorou je vytlačená. Súčiastky taktiež majú svoje označenia, ktoré si pri každej vysvetlíme.&lt;br /&gt;
&lt;br /&gt;
Diery majú priemer 3,3 mm a presne sedia pre skrutky M3. Diery sú od seba centricky vzdialené 8 mm a podlhovasté diery sú tomu prispôsobené, čiže vzdialenosti od jedného konca po druhý sú násobky 8. Spájacie dieliky označujeme podľa počtu dier na šírku × na výšku (plus špeciálne označenie pre ohnuté dieliky). Krabičky a držiaky sú zvyčajne označené podľa elektroniky, pre ktorú sú určené.&lt;br /&gt;
&lt;br /&gt;
Napríklad biely podlhovastý spoj s ôsmimi dierami budeme označovať ako 1×8.&lt;br /&gt;
&lt;br /&gt;
== Typy dielov ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Farba !! Funkcia !! Popis !! Link pre detaily&lt;br /&gt;
|-&lt;br /&gt;
| Biela || Spájanie dielov v jednej a viacero dimenzii a stavba ramena || Dierkované podložky 1×N pre spoj, vertikálne a horizontálne L-profily na spojenie viacerých dimenzií a špeciálne diely na postavenie robotického ramena. || [[Biele diely - detaily|Detaily]]&lt;br /&gt;
|-&lt;br /&gt;
| Žltá || Vyplnenie plochy / základné dosky || Dierkované podložky s rozmermi M × N (1 &amp;lt; M &amp;lt; 8 a 1 &amp;lt; N &amp;lt; 8). || [[Žlté diely - detaily|Detaily]]&lt;br /&gt;
|-&lt;br /&gt;
| Čierna || Pevné uchytenie a prevody || U-profily na pevné uchytenie pre špeciálne prípady a ozubené platne k ozubeným kolesám. || [[Čierne diely - detaily|Detaily]]&lt;br /&gt;
|-&lt;br /&gt;
| Červená || Uchytenie senzorov a káblov || Krabičky a držiaky pre senzory a káble. || [[Červené diely - detaily|Detaily]]&lt;br /&gt;
|-&lt;br /&gt;
| Modrá || Uchytenie servo motorčekov || Krabičky, držiaky a ramená pre servo motorčeky. || [[Modré diely - detaily|Detaily]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Postup ako spajat diely ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;400&amp;quot; height=&amp;quot;710&amp;quot;&amp;gt;AxZRMdCmY5A&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;400&amp;quot; height=&amp;quot;710&amp;quot;&amp;gt;HITWcnDqPCI&amp;lt;/youtube&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=SW_Setup&amp;diff=1157</id>
		<title>SW Setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=SW_Setup&amp;diff=1157"/>
		<updated>2026-09-06T16:55:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Arduino IDE ==&lt;br /&gt;
Na programovanie stavebnice budeme používať vývojové prostredie &#039;&#039;&#039;Arduino IDE 2&#039;&#039;&#039;. Tento návod ťa krok za krokom prevedie inštaláciou a nastavením prostredia tak, aby si mohol/-la začať nahrávať vlastné programy do mikrokontroléra.&lt;br /&gt;
&lt;br /&gt;
Arduino IDE si stiahni na oficiálnej [https://www.arduino.cc/en/software/ stránke Arduina] – vyber verziu zodpovedajúcu tvojmu operačnému systému (Windows, macOS alebo Linux).&lt;br /&gt;
&lt;br /&gt;
[[Image:Arduino Download.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolér ===&lt;br /&gt;
Ako riadiaci čip stavebnice používame &#039;&#039;&#039;Waveshare RP2350-Zero&#039;&#039;&#039;. Je to &amp;quot;mozog&amp;quot; celej stavebnice – obsahuje procesor, pamäť a GPIO piny, cez ktoré komunikuje so všetkými komponentmi (senzormi, motorčekmi aj LED diódami). Komponenty stavebnice sú napájané napätím &#039;&#039;&#039;3,3 V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Aby s ním Arduino IDE vedelo komunikovať, je potrebné doinštalovať príslušný balík podpory dosky (board package) – postup nájdeš nižšie.&lt;br /&gt;
&lt;br /&gt;
[[Image:RP2040-Zero-Pinout.jpg|700px]]&lt;br /&gt;
[[Image:RP2040-Zero-Board.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Inštalácia knižníc ===&lt;br /&gt;
# Otvor Arduino IDE a prejdi do &#039;&#039;&#039;File → Preferences&#039;&#039;&#039;.&lt;br /&gt;
# Do poľa &amp;quot;&#039;&#039;&#039;Additional boards manager URLs&#039;&#039;&#039;&amp;quot; pridaj nasledujúci odkaz:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://github.com/earlephilhower/arduino-pico/releases/download/4.5.2/package_rp2040_index.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
# Potvrď tlačidlom &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
# Otvor &#039;&#039;&#039;Tools → Board → Boards Manager&#039;&#039;&#039; a vyhľadaj &#039;&#039;&#039;&amp;quot;Raspberry Pi Pico/RP2040&amp;quot;&#039;&#039;&#039; (tento balík obsahuje aj podporu pre &#039;&#039;&#039;RP2350&#039;&#039;&#039;).&lt;br /&gt;
# Nainštaluj balík od autora &#039;&#039;&#039;Earle F. Philhower, III&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Pico Get Start 06.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Ďalej je potrebné nainštalovať knižnice pre senzory, ktoré stavebnica používa:&lt;br /&gt;
# V Arduino IDE otvor &#039;&#039;&#039;Tools → Manage Libraries&#039;&#039;&#039; (alebo klikni na ikonu knižníc v ľavom paneli).&lt;br /&gt;
# Vyhľadaj &#039;&#039;&#039;&amp;quot;VL53L0X&amp;quot;&#039;&#039;&#039; a nainštaluj knižnicu od autora &#039;&#039;&#039;Pololu&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:VL53L0X-lib.png|300px]]&lt;br /&gt;
&lt;br /&gt;
# Následne vyhľadaj &#039;&#039;&#039;&amp;quot;Adafruit BNO055&amp;quot;&#039;&#039;&#039; a nainštaluj knižnicu.&lt;br /&gt;
# Ak sa zobrazí výzva na inštaláciu závislostí od &#039;&#039;&#039;Adafruit&#039;&#039;&#039;, potvrď aj tieto.&lt;br /&gt;
&lt;br /&gt;
[[Image:BNO055_install.png|300px]]&lt;br /&gt;
&lt;br /&gt;
=== Prvé nahratie programu – režim BOOTSEL ===&lt;br /&gt;
Mikrokontrolér očakáva program vo formáte &#039;&#039;&#039;.uf2&#039;&#039;&#039;. Pri úplne prvom nahrávaní ešte doska odmieta s počítačom komunikovať – preto ani Arduino IDE zatiaľ nevie zistiť, o aký čip ide (napr. funkcia &amp;quot;Get Board Info&amp;quot; nič nevráti). Riešením je dosku &amp;quot;zobudiť&amp;quot; prepnutím do špeciálneho režimu &#039;&#039;&#039;BOOTSEL&#039;&#039;&#039;, v ktorom sa hlási ako obyčajný USB disk a dá sa na ňu nahrať program priamo.&lt;br /&gt;
&lt;br /&gt;
# Stlač a &#039;&#039;&#039;podrž tlačidlo BOOT&#039;&#039;&#039; na doske RP2350-Zero.&lt;br /&gt;
# Počas držania tlačidla &#039;&#039;&#039;zapoj USB kábel&#039;&#039;&#039; do počítača.&lt;br /&gt;
# &#039;&#039;&#039;Uvoľni tlačidlo BOOT&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Na počítači sa objaví nová jednotka (podobne ako USB flash disk) s názvom &#039;&#039;&#039;RP2350&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Skopíruj si tento jednoduchý kód do svojho prvého projektu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Použi &#039;&#039;&#039;Sketch → Export Compiled Binary&#039;&#039;&#039; (alebo skratku &amp;lt;code&amp;gt;Ctrl+Alt+S&amp;lt;/code&amp;gt;). Arduino IDE kód skompiluje a uloží súbor &amp;lt;code&amp;gt;.uf2&amp;lt;/code&amp;gt; &#039;&#039;&#039;do priečinka projektu&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Následne súbor &#039;&#039;&#039;.uf2&#039;&#039;&#039; pretiahni (drag &amp;amp; drop) do jednotky &#039;&#039;&#039;RP2350&#039;&#039;&#039; – po nahratí sa doska automaticky reštartuje, program sa spustí a doska sa už bude počítaču hlásiť ako sériové zariadenie.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=Vx-Y7pCRSJY Video s ukážkou celého postupu] (fyzický postup je rovnaký pre RP2040 aj RP2350).&lt;br /&gt;
&lt;br /&gt;
=== Výber dosky a portu ===&lt;br /&gt;
Keďže doska už komunikuje s počítačom z predchádzajúceho kroku, objaví sa v Arduino IDE ako sériový port. Teraz je potrebné v IDE zvoliť správnu dosku a port, aby sa dali nahrávať ďalšie programy:&lt;br /&gt;
# V menu &#039;&#039;&#039;Tools → Board&#039;&#039;&#039; vyhľadaj a vyber &#039;&#039;&#039;&amp;quot;Generic RP2350&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
# V menu &#039;&#039;&#039;Tools → Port&#039;&#039;&#039; vyber port, na ktorom sa zariadenie objavilo (napr. &amp;lt;code&amp;gt;COM3&amp;lt;/code&amp;gt; na Windows alebo &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; na Linuxe).&lt;br /&gt;
&lt;br /&gt;
=== Automatický upload ===&lt;br /&gt;
Po prvom manuálnom nahratí firmvéru už môžeš ďalšie programy nahrávať priamo z Arduino IDE, bez potreby prepínania do BOOTSEL režimu:&lt;br /&gt;
# Zapoj dosku do počítača.&lt;br /&gt;
# Over, že máš v &#039;&#039;&#039;Tools&#039;&#039;&#039; vybranú dosku (&#039;&#039;&#039;Generic RP2350&#039;&#039;&#039;) a správny port (pozri predchádzajúcu sekciu).&lt;br /&gt;
# Kód nahráš kliknutím na tlačidlo &#039;&#039;&#039;→&#039;&#039;&#039; (šípka) v ľavom hornom rohu, alebo klávesovou skratkou &#039;&#039;&#039;Ctrl+U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:generic_2350_port.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Buzzer_-_setup&amp;diff=1153</id>
		<title>Buzzer - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Buzzer_-_setup&amp;diff=1153"/>
		<updated>2026-09-06T16:53:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sirénka je už pripravená - jeden pin bol prehodený tak, aby ich vzdialenosť bola s jednou prázdnou dierou uprostred, čierny pin sa pripája na zem (čierny GND) a červený na niektorý žltý signálny pin.&lt;br /&gt;
&lt;br /&gt;
[[Image:setup-buzzer.jpg|250px]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:Setup-buzzer.jpg&amp;diff=1152</id>
		<title>Súbor:Setup-buzzer.jpg</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:Setup-buzzer.jpg&amp;diff=1152"/>
		<updated>2026-09-06T16:53:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Buzzer_-_setup&amp;diff=1151</id>
		<title>Buzzer - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Buzzer_-_setup&amp;diff=1151"/>
		<updated>2026-09-06T16:52:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: Vytvorená stránka „Sirénka je už pripravená - jeden pin bol prehodený tak, aby ich vzdialenosť bola s jednou prázdnou dierou uprostred, čierny pin sa pripája na zem (čierny GND) a červený na niektorý žltý signálny pin.  500px“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sirénka je už pripravená - jeden pin bol prehodený tak, aby ich vzdialenosť bola s jednou prázdnou dierou uprostred, čierny pin sa pripája na zem (čierny GND) a červený na niektorý žltý signálny pin.&lt;br /&gt;
&lt;br /&gt;
[[Image:setup-buzzer.jpg|500px]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:TouchSetup6.jpg&amp;diff=1150</id>
		<title>Súbor:TouchSetup6.jpg</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:TouchSetup6.jpg&amp;diff=1150"/>
		<updated>2026-09-06T16:49:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin nahral novú verziu Súbor:TouchSetup6.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:TouchSetup6.jpg&amp;diff=1149</id>
		<title>Súbor:TouchSetup6.jpg</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:TouchSetup6.jpg&amp;diff=1149"/>
		<updated>2026-09-06T16:45:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Touch_sensor_-_setup&amp;diff=1148</id>
		<title>Touch sensor - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Touch_sensor_-_setup&amp;diff=1148"/>
		<updated>2026-09-06T16:44:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Naradie Ikonka.png | 140px]]&lt;br /&gt;
[[File:Taviaca Pistol Ikonka.png | 140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png | 140px]]&lt;br /&gt;
&lt;br /&gt;
== Popis ==&lt;br /&gt;
&lt;br /&gt;
Dotykový modul (postavený na čipčeku TTP223) nahrádza klasické mechanické tlačidlo bez toho, aby mal akékoľvek pohyblivé časti. Namiesto fyzického stlačenia deteguje dotyk &#039;&#039;&#039;kapacitne&#039;&#039;&#039; – na malej kovovej ploche na doštičke meria zmenu kapacity, ktorá nastane, keď sa jej dotkne prst. Vďaka tomu sa nemá čo mechanicky opotrebovať a funguje spoľahlivo aj po tisíckach dotykov.&lt;br /&gt;
&lt;br /&gt;
Modul má len tri piny – &#039;&#039;&#039;VCC&#039;&#039;&#039;, &#039;&#039;&#039;GND&#039;&#039;&#039; a &#039;&#039;&#039;I/O&#039;&#039;&#039;. V pokoji (bez dotyku) je na I/O nízka úroveň (LOW), a hneď ako sa dotkneš plochy, výstup skočí na vysokú úroveň (HIGH). Toto je tzv. &#039;&#039;&#039;momentary&#039;&#039;&#039; režim (predvolený) – výstup kopíruje aktuálny stav dotyku: kým držíš prst na ploche, zostáva HIGH, po pustení sa vráti na LOW. Na zadnej strane modulu sa dá spájkovacou prepojkou prepnúť aj do &#039;&#039;&#039;toggle&#039;&#039;&#039; režimu, kde by každý dotyk prepínal výstup medzi HIGH/LOW ako vypínač – pre tento návod si však vystačíme s predvoleným nastavením.&lt;br /&gt;
&lt;br /&gt;
Keďže ide o jeden obyčajný digitálny výstup, na RP2350-Zero sa číta rovnako ako bežné tlačidlo (napr. cez &amp;lt;code&amp;gt;digitalRead()&amp;lt;/code&amp;gt;) – netreba naň žiadny komunikačný protokol ako I2C alebo UART.&lt;br /&gt;
&lt;br /&gt;
== Príprava (spájkovanie a vkladanie do krabičky) ==&lt;br /&gt;
Naspájkovanie hrebeňových pinov nie je nutné, dá sa priletovať aj priamo dupont káble, opäť však zo spodnej strany senzora. Tieto káble je následne potrebné spevniť tavnou pištoľou, keďže sa pri ohýbaní opotrebúvajú.&lt;br /&gt;
Pri zapájaní si dávaj veľký pozor na VCC a GND. Ak tieto dva piny vymeníš a pustíš prúd, súčiastku jednoducho spáliš, keďže nie je chránená diódou.&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:TouchSetup1.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup2.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup3.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup4.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup5.jpg|300px]]&lt;br /&gt;
[[Image:TouchSetup6.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Zapojenie ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin senzora !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;I/O&#039;&#039;&#039; || GP6&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1147</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1147"/>
		<updated>2026-09-06T15:27:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot-Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program zapína motory postupne po jednom, aby ste si prípadne mohli ešte opraviť ich otočenie voči modrej pripojenej súčiastke. Robot by pri 90-stupňových polohách motorov mal vyzerať ako na videu po zapnutí.&lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
Najskôr naprogramujte základné riadenie robota pomocou joysticku. Joystick má len dva stupne voľnosti, preto je vhodné nejakým spôsobom prepínať medzi zvolenou dvojicou kĺbov, ktoré pomocou neho práve riadime. My sme si zvolili prepínanie prvým dotykovým sennzorom a signalizáciu pommocou farebnej LED. &lt;br /&gt;
&lt;br /&gt;
# Naklonenie joysticku do jednej alebo druhej strany začne otáčať motorom v príslušnom kĺbe do jednej alebo druhej strany;&lt;br /&gt;
# Vrátenie joysticku do neutrálnej polohy uvedie rameno do pokoja na tom mieste, kde sa práve nachádza;&lt;br /&gt;
# Dotyk (a následné pustenie) prvého dotykového senzora vymení dvojicu kĺbov, ktoré sa riadia joystickom.&lt;br /&gt;
&lt;br /&gt;
Všimnite si, že hodnoty z joysticku sa menia pomerne rýchlo už pri jeho jemnom naklonení.&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* nájdite hraničné hodnoty pre jednotlivé servá, za ktorými ďalší pohyb nie je mechanicky možný&lt;br /&gt;
* zabezpečte podmienkami v programe, že sa servo za tieto hranice nedostane (ideálne by hranice mohli byť flexibilné vzhľadom na polohu v ktorej sa rameno nachádza)&lt;br /&gt;
* pri rôzne prudkom naklonení joysticku sa motory budú otáčať rôznou rýchlosťou a farebná LED bude signalizovať aj smer aj rýchlosť otáčania&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
Program z predchádzajúceho cvičenia vylepšíme tak, že počas riadenia ramena joystickom bude možné zapnúť a zastaviť nahrávanie jeho pohybov a neskôr túto zapamätanú postupnosť znovu autonómne zopakovať.&lt;br /&gt;
&lt;br /&gt;
# program najskôr funguje rovnako ako program v predchádzajúcej úlohe&lt;br /&gt;
# po stlačení (a pustení) druhého dotykového senzora sa zapne nahrávanie (signalizované farebnou LED)&lt;br /&gt;
# od tohoto okamihu sa po každom kliknutí tlačidlom joysticku uloží aktuálna poloha všetkých 4 motorov do zoznamu zaznamenaných polôh&lt;br /&gt;
# poloha sa zaznamenáva ako uhol serva - okrem zaḱladne, pre ktorú sa zaznamenávajú jednotlivé časy potrebné na otočenie aj bez kliknutí vždy po zmene rýchlosti otáčania ramena (alebo zastavení)&lt;br /&gt;
# po opätovnom stlačení druhého dotykového senzora sa nahrávanie ukončí (záznam ostáva v pamäti) a robota je zasa možné riadiť bez ukladania jeho polôh&lt;br /&gt;
# po kliknutí na tlačidlo joysticku sa zapamätaný záznam v pomalej rýchlosti (ale plynule, bez prestávok) prehrá - jednotlivé konfigurácie ramena sa postupne dosahujú pomocou plynulých pohybov motorov&lt;br /&gt;
# po dokončení prehrávania záznamu je ho možné prehrať znovu, riadiť servo pomocou joysticku, alebo program pokračuje 2. krokom pre nový záznam pohybu &lt;br /&gt;
&lt;br /&gt;
Ukážka možného riešenia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* pridajte možnosť &amp;quot;exportu&amp;quot; a &amp;quot;importu&amp;quot; zadanej postupnosti pohybov, export vypíše na výstup sériového portu v takom istom formáte ako ho import dokáže načítať - takýmto spôsobom si môžeme skopírovať z konzoly vyexportované postupnosti, uložiť si ich do textového súboru na počítači a neskôr ich odtiaľ vložiť do konzoly po zvolení funkcie import a znovu vykonať&lt;br /&gt;
* umožnite nastaviť rýchlosť pohybov pri opakovaní naučenej postupnosti&lt;br /&gt;
* vymeňte continuous servo za obyčajné servo - rameno bude mať síce menší pracovný priestor, ale otáčanie základne bude riadené presne  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
Táto úloha je priestor pre Vašu tvorivosť. Výsledkom by malo byť malé demo, v ktorom rameno autonómne vykoná niekoľko krokov, pričom bude manipulovať/prenášať nejaké predmety, nielen sa pohybovať na rôzne miesto v pracovnom priestore.&lt;br /&gt;
&lt;br /&gt;
Inšpirovať sa môžete aj týmto videom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo - počas vykonávania pohybu dotyk senzora spôsobí okamžité zastavenie&lt;br /&gt;
* opakovateľnosť - postupnosť skončí na rovnakom mieste ako začína, takže sa dá spustiť niekoľkokrát za sebou bez zmeny polohy ramena medzi opakovanými štartami&lt;br /&gt;
* možnosť riadiť rameno pred spustením dema/po jeho zastavení joystickom ako v predchádzajúcich úlohách, demo sa môže štartovať napr. kliknutím joystickom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude rameno robiť &amp;quot;užitočnú&amp;quot; prácu podľa aktuálnych požiadaviek operátora. V jeho pracovnom priestore zadefinujeme niekoľko pozícií, označíme ich napr. A, B, C, D a naprogramujeme presuny ramena medzi týmito pozíciami. Pokyny budeme postupne zadávať cez sériovú linku jeden za druhým a rameno ich bude vykonávať,  napr. prelož predmet z miesta A na miesto C. &lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* niektoré miesta môžu byť nielen priamo dole na stole, ale vyššie, pričom na tom mieste bude košík/krabička, nad ktorou rameno predmet uvoľní, aby spadol do košíka&lt;br /&gt;
* pridajte možnosť &amp;quot;resetnúť&amp;quot;/&amp;quot;inicializovať&amp;quot; polohu základne na dohodnutom mieste&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pomocou nejakého príkazu zadaného pred samotnou požiadavkou na presun&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota&lt;br /&gt;
* umožnite operátorovi interaktívne zadať požiadavku na zopakovanie uchopenia predmetu, ak by sa náhodou nepodarilo na prvý raz&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
Vylepšíme predchádzajúci program tak, aby namiesto jedného pokynu umožnil zadať postupnosť viacerých pokynov, ktoré potom naraz jeden po druhom vykoná - napr. prelož predmet z A na C, potom iný z D na A, potom ďalší z B na D, atď.&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo na zastavenie postupnosti v ktoromkoľvek okamihu&lt;br /&gt;
* korekcia pohybu základne - pomocou druhého tlačidla je kedykoľvek možné zastaviť vykonávanie pohybu a otočiť joystickom rameno, aby sme ho nastavili do požadovanej polohy pre nasledujúce cieľové miesto, ak rameno práve vykonáva nejaký pohyb, alebo do &amp;quot;nulovej&amp;quot; polohy, ak pohyb práve nevykonáva&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota pre každý pohyb v postupnosti zvlášť&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pre každý prenášaný predmet zvlášť&lt;br /&gt;
* umožnite používateľovi zadefinovať postupnosti pohybov ako makrá, ktoré sa potom dajú vyvolať jedným znakom prijatým cez sériovú linku, alebo dotykovým senzorom, či joystickom&lt;br /&gt;
* upravte program tak, aby mal vedomosť o tom, ktoré miesta sú obsadené predmetmi a dovolí vykonať presun iba na prázdne miesto, v opačnom prípade sa vykonávanie sekvencie preruší&lt;br /&gt;
* vytvorte plánovací program, do ktorého sa zadá počiatočná a cieľová konfigurácia, program potom naplánuje postupnosť krokov a aj ich vykoná, napr: ŠTART: A-zelený, B-modrý, C-červený, D-prázdne miesto, CIEĽ: A-modrý, B-červený, C-zelený, D-prázdne miesto.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
V robotických aplikáciách nás často zaujíma momentálna poloha riadeného koncového člena v priestore - v našom prípade uzatvárateľnej ruky namontovanej na konci ramena. Program, ktorý riadi rameno v každom okamihu pozná uhly, podľa ktorých sú otočené jednotlivé stupne voľnosti - v tejto úlohe nás bude zaujímať iba poloha ruky v rovine ramena. Rovina ramena sa celá otáča pomocou základne, ale keďže ju máme riadenú pomocou continuous serva, určovanie tejto polohy by bolo priveľmi nepresné. Uvažujme rovinu ramena - súradnica &#039;&#039;x&#039;&#039; bude určovať ako ďaleko od okraja podstavca pred robotom sa ruka nachádza a súradnica &#039;&#039;y&#039;&#039; bude určovať v akej výške ruka je. Vstupom do výpočtu sú teda dva uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, určujúce do akého uhla sú otočené servá umiestnené nad otočnou základňou a výstupom bude poloha ramena &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039; (môžeme uvažovať napr. referenčný bod na začiatku uchopovacieho priestoru ramena - čiže krajná poloha uchopovaného predmetu. Ak sa na rameno pozrieme z boku, vidíme, že má topológiu uzavretého 5-uhoľníka, pričom jedna strana je predĺžená a na jej konci je upevnené rameno. Pomocou stredoškolskej matematiky vieme odvodiť vzorčeky pre &#039;&#039;x&#039;&#039; a &#039;&#039;y&#039;&#039; na základne vstupného &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, keď poznáme dĺžky jednotlivých strán päťuholníka (pripomíname, že vzdialenosť susedných dier na dieloch stavebnice je 8 mm).   &lt;br /&gt;
&lt;br /&gt;
[[Image:topologia_ramena.png]]&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napr. nejak takto (terminál zobrazuje informáciu vo formáte [&#039;&#039;alfa&#039;&#039;,&#039;&#039;beta&#039;&#039;] -&amp;gt; [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;]. Robota riadime priamo joystickom a výpočet neustále prepočítava polohu ruky v rovine ramena.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, bude priamočiare upraviť výpočet tak, aby určoval polohu v priestore [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;,&#039;&#039;z&#039;&#039;] nielen v rovine&lt;br /&gt;
* teoretický výpočet sa vždy bude trochu líšiť od skutočnej polohy ramena, pretože v každom voľnom kĺbe je vôľa (a teda chyba) približne rádu milimetrov - a tá sa cez mechanickú konštrukciu znásobuje a tiež preto, že motory sa neotáčajú dokonale presne a lineárne, zmerajte veľkosť tejto chyby v rôznych polohách ramena&lt;br /&gt;
* pokúste sa vymyslieť nejaký spôsob kalibrácie/korekcie, ktorý zlepší výslednú presnosť &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná/inverzná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
Ešte užitočnejší výpočet robí presný opak - pre zadanú cieľovú pozíciu ruky [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] nájde uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, také, že ak servá nastavíme do uhlov &#039;&#039;alfa&#039;&#039; a &#039;&#039;beta&#039;&#039;, tak sa ruka dostane na požadované súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] v rovine ramena. Vytvorte program, ktorý dovolí cez sériový port zadať ľubovoľné dostupné súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;], vypočíta uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039; a ruku presunie na požadovanú pozíciu, alebo oznámi, že sa to nedá, ak je poloha mimo mechanicky dostupný rozsah. &lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
* urobte test - pre veľa generovaných pozícií alfa, beta najskôr pomocou doprednej kinematiky vypočítajte [x,y] a potom cez inverznú kinematiku vypočítajte alfa, beta - porovnajte, či ste dostali rovnaké hodnoty a ak nie, aká veľká bola chyba&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, umožnite zadať priestorové súradnice [x,y,z], na ktoré sa ruka presunie&lt;br /&gt;
* doplňte inverznú kinematiku do programu riadeného manipulátora - cieľová poloha sa bude dať zadať nielen ako A,B,C,D ale priamo súradnicami&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.4. Micromouse ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Myš ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotickú myš podľa [[Basic robot - Micro-mouse|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program otestuje servá na pohyb a potom neustále zobrazuje hodnoty zo senzorov. V okamihu, keď sa na sériovej konzole zobrazí text kalibrácia je potrebné pootáčať ho do rôznych smerov, aby sa správne nakalibroval IMU senzor. &lt;br /&gt;
&lt;br /&gt;
==== 2.4.2. Farebná hra s IMU ====&lt;br /&gt;
&lt;br /&gt;
Začneme programom, ktorý otestuje interciálny senzor (IMU). Robot bude zobrazovať farbu a vydávať zvuk - napríklad na PIN 14 pripojíme sirénku (buzzer). &lt;br /&gt;
&lt;br /&gt;
# po spustení programu a inicializácii sa pohybmi do 8 nakalibruje IMU senzor&lt;br /&gt;
# program postupne vygeneruje 20 náhodných čísel, ktoré reprezentujú 6 rôznych farieb a zvukov a nim zodpovedajúcich 6 rôznych pohybov&lt;br /&gt;
# po zobrazení farby na zabudovanej RGB LED a vydaní priradeného zvuku (každá farba má nejaký priradený tón) sa čaká, kým používateľ neotočí robota do požadovanej polohy (podľa príslušnej osi aspoň o 70 stupňov, pričom podľa ostatných osí nie je vychýlený viac ako 10 stupňov&lt;br /&gt;
# nakoniec sa zobrazí celkový čas, ktorý používateľ potreboval na nájdenie všetkých 20 polôh a po chvíli program pokračuje znovu krokom 2&lt;br /&gt;
&lt;br /&gt;
Inšpirácia pre Vaše riešenie (na videu je farba RGB LED pre niektoré odtiene trochu zle viditeľná): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;ymOgkeYMo4w&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte hru tak, aby mala viacero úrovní - farby postupne pribúdajú v každej ďalšej úrovni&lt;br /&gt;
* za otočenie robota nesprávnym smerom získa hráč trestné sekundy&lt;br /&gt;
* kombinácie farieb: robot najskôr zobrazí tri rôzne farby, hráč si ich musí zapamätať a potom robota postupne pootáčať &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.4.3. Sledovanie objektu pomocou IR senzorov ====&lt;br /&gt;
&lt;br /&gt;
Cieľom tohto cvičenia je vyskúšať si spracovanie hodnôt z laserových senzov na meranie vzdialenosti.&lt;br /&gt;
&lt;br /&gt;
# po inicializácii a kalibrácii IMU sa robot rozbehne na chvíľu vpred&lt;br /&gt;
# pokiaľ sa pred robotom nachádza nejaký objekt, bude sa pohybovať naďalej vpred&lt;br /&gt;
# keď predmet zmizne, po niekoľkých sekundách robot zastaví&lt;br /&gt;
# ak sa predmet vyskytne napravo alebo naľavo robota - zachytí ho niektorý bočný IR senzor, robot sa otočí tým smerom (ideálne využitím IMU) a pokračuje krokom 2 &lt;br /&gt;
&lt;br /&gt;
Inšpirácia pre riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;WKRXE7CttdU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot príde blízko predmetu, zastane&lt;br /&gt;
* robot bude regulovať rýchlosť podľa toho ako ďaleko sa pred ním predmet nachádza&lt;br /&gt;
* ak sa dlhšie žiaden predmet nevyskytne, robot hľadá predmet otáčaním sa na mieste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.4.4. Rovný pohyb pomocou IMU ====&lt;br /&gt;
&lt;br /&gt;
V tomto cvičení vytvoríme užitočnú procedúru, ktorá umožní korigovať stratu smeru pri bežnom pohybe pomocou servomotorov. Program bude neustále sledovať natočenie robota pomocou IMU a ak sa odchýli od pôvodne určeného smeru, tak pohyb skoriguje.&lt;br /&gt;
&lt;br /&gt;
# po inicializácii a kalibrácii IMU robot čaká, kým pred sebou neuvidí nejaký predmet, ktorý má sledovať&lt;br /&gt;
# zapamätá si aktuálny smer pred začiatkom pohybu a rozbehne sa vpred&lt;br /&gt;
# neustále monitoruje svoje natočenie a ak sa jeho smer pohybu vychýli na jednu alebo druhú stranu, upraví rýchlosti servomotorov (ak si trúfate, môžete naladiť PD alebo PID regulátor, ale najjednoduchšie riešenie je reagovať na rôzne veľké vychýlenie vopred upravením rýchlostí o pevne určené konštanty). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Upozornenie:  IMU typu BNO055, ktorý máme v stavebnici bežne využíva 9 stupňov voľnosti (trojosový akcelerometer, trojosový gyroskop a trojosový magnetometer) a teda bude citlivý na prítomnosť železných, alebo iných magneticky aktívnych predmetov vo svojom okolí. V interiéri v železobetónovej budove môže byť magnetické pole Zeme, na ktoré sa čiastočne spolieha nerovnomerné a preto pohyby nemusia byť také, ako by sme vždy očakávali. Našťastie, má aj režim, keď využíva iba 6 stupňov voľnosti - a vtedy nepotrebuje ani úvodnú kalibráciu - do inicializačnej funkcie begin() treba poslať argument OPERATION_MODE_IMUPLUS. Druhá možnosť by bolo nahradiť interne počítanú orientáciu výpočtom pomocou vlastnej/knižničnej funkcie. Ukazuje sa, že 6DOF funguje lepšie ako 9DOF, aj keď v našich riešeniach na videách nižšie sme všade využili režim 9DOF.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu (s 9DOF):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;p01wAUntr6Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* overte ako funguje korekcia pri rôznych rýchlostiach pohybu - je potrebné upraviť korekčné konštanty?&lt;br /&gt;
* vyskúšajte nahradiť zabudovaný výpočet z 9 stupňov voľnosti prepnutím režimu na 6DOF, prípadne softvérovým výpočtom pomocou Mahony filtra, ktorý je implementovaný napríklad v knižnici Adafruit AHRS, s funkciou &amp;lt;code&amp;gt;updateIMU(gx, gy, gz, ax, ay, az, dt);&amp;lt;/code&amp;gt; uistite sa, že odovzdávate hodnoty v správnych jednotkách. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.4.5. Štvorec pomocou IMU ====&lt;br /&gt;
&lt;br /&gt;
V tomto programe využijeme procedúru z predchádzajúceho cvičenia, aby sme naprogramovali pohyb do štvorca:&lt;br /&gt;
&lt;br /&gt;
# najskôr prebehne inicializácia a kalibrácia IMU&lt;br /&gt;
# robot sa nejaký pevne stanovený čas pohybuje vpred a koriguje svoj smer, aby išiel čo najpresnejšie rovno&lt;br /&gt;
# zastane a otočí sa o 90 stupňov&lt;br /&gt;
# pokračuje krokom 2&lt;br /&gt;
&lt;br /&gt;
Príklad riešenia (9DOF):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;N6arWySMh_U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* po spustení robota pred jeho IR senzorom niekoľkokrát zamávame, čím určíme počet vrcholov pravidelného mnohouholníka (trojuholník, štvorec, päťuholník...), ktorého tvar potom bude kopírovať&lt;br /&gt;
* dĺžku strany štvorca určíme rukou pred dopredu smerujúcim IR senzorom - robot sa bude pohybovať dovtedy, kým pred sebou vidí predmet - ostatné strany budú mať rovnakú veľkosť&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.4.6. Skry sa do rohu ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe využijeme relatívnu zmenu hodnôt IR senzorov, aby sa robot mohol nasmerovať ku stene a dostať do rohu. &lt;br /&gt;
&lt;br /&gt;
# po inicializácii a kalibrácii:&lt;br /&gt;
# robot sa začne pomaly otáčať na mieste vpravo&lt;br /&gt;
# ak sa vzdialenosť k prekážke smerom vpred zväčšuje, zmení smer otáčania na doľava&lt;br /&gt;
# kým sa vzdialenosť k prekážke smerom vpred zmenšuje, pokračuje v otáčaní, potom zastane&lt;br /&gt;
# rozbehne sa vpred - pričom koriguje svoj smer pomocou IMU, až kým nepríde ku stene&lt;br /&gt;
# tam sa otočí o 90 stupňov vpravo&lt;br /&gt;
# pohybuje sa vpred (a koriguje smer pomocou IMU), až kým sa nedostane ku stene (čiže do rohu)&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu (9DOF):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;snkYLDLg3Ow&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa pokúsi nájsť roh priamo - pri otáčaní sa vzdialenosť bude zväčšovať, až kým nesmeruje priamo do rohu, kam sa vydá priamou cestou (šikmo)&lt;br /&gt;
* v menšej obdĺžnikovej miestnosti (väčšej krabici) sa otočí o 360 stupňov, nájde najbližší zo 4 rohov a presunie sa do neho&lt;br /&gt;
&lt;br /&gt;
==== 2.4.7. Mapovanie steny chodby pomocou IR senzorov ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude robot počas pohybu vpred postupne zaznamenávať vzdialenosť k prekážke na jednom z bočných senzorov. Keď robot vpredu zaznamená predmet, zastane a na sériovej konzole zobrazí namerané údaje vo forme ASCII pseudografiky. Môžete využiť napríklad dátovú štruktúru pole. Uistite sa, že program nebude zapisovať mimo rozsah poľa. Počas pohybu vpred a merania bude robot zároveň korigovať smer pohybu pomocou IMU.&lt;br /&gt;
&lt;br /&gt;
Inšpiratívne riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;H-yv8C5rjpo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot zmapuje a zobrazí obe strany chodby &lt;br /&gt;
* robot je vnútri obdĺžnikovej miestnosti, v ktorej sú rozmiestnené (aj pri stenách aj v strede) rôzne predmety, prejde popri všsetkých 4 stenách a potom zobrazí mapu celej miestnosti&lt;br /&gt;
* robot po zmapovaní chodby a jej zobrazení (s číslami riadkov) umožní zadať číslo riadku - ktorým sa určí miesto do ktorého sa má presunúť, ale pri presune nebude používať čas, ale mapu (pomocou sledovania hodnôt senzora a mapy sa bude snažiť neustále v tejto 1-rozmernej mape &amp;quot;lokalizovať&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.4.8. Bludisko pomocou IR senzorov použitím pravidla pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
Podobne ako v prípade robota s čiarovými senzormi sa bude robot pohybovať v bludisku pravidlom pravej ruky. Tento raz bludisko nebude vyznačené čiernou čiarou na podlahe ale bude to skutočné bludisko so stenami. Budeme predpokladať, že všetky steny sú pravouhlé a chodbičky v ňom majú vhodnú šírku, aby sa tam robot vošiel.  Pomocou IR senzorov robot nájde odbočky, slepé uličky a križovatky. &lt;br /&gt;
&lt;br /&gt;
V našom riešení s 9DOF senzorom si robot na začiatku zapamätá absolútnu orientáciu a namiesto relatívnych 90-stupňových otočiek sa vždy otáča vzhľadom na túto absolútnu orientáciu. V uličke sa ale snaží vycentrovať a ak sa dostáva k niektorej stene, bočí od nej, aby nenabúral.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mccPeqTYFZc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte 6DOF orientáciu - či relatívne otočenia budú aj po viacerých zákrutách stále konzistentné - ak nie, skúste nájsť rovnováhu medzi dvoma informáciami - relatívnymi otočeniami pomocou 6DOF a globálneho nasmerovania pomocou kompasu.&lt;br /&gt;
* robot počas prechodu cez bludisko vytvára v pamäti mapu, ktorú nakoniec uloží do EEPROM (emulovanej v programovej pamäti Flash, ale pomocou knižnice EEPROM), po spustení programu na vyžiadanie cez sériovú linku mapu zobrazí v konzole&lt;br /&gt;
* upravte program tak, že ak robot nezačne pri vchode do bludiska, ale v jeho strede a zacyklí sa (vráti sa na z inej strany na miesto, kde už bol), dostane sa z bludiska von.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_my%C5%A1i_v_bludisku&amp;diff=1146</id>
		<title>Návod na poskladanie myši v bludisku</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_my%C5%A1i_v_bludisku&amp;diff=1146"/>
		<updated>2026-09-06T15:20:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania myši v bludisku===&lt;br /&gt;
&lt;br /&gt;
Toto je manuál na to, aby ste si mohli jednoducho poskladať svoju robotickú myš v bludisku.&lt;br /&gt;
&lt;br /&gt;
Úplné základy montáže sú vysvetlené v sekcii [[3D models]], ale detaily budú vysvetlené v texte pod obrázkami.&lt;br /&gt;
&lt;br /&gt;
Pôjdeme krok po kroku a postupne sa vaša myš bude formovať.&lt;br /&gt;
&lt;br /&gt;
Pre začiatok si najprv prichystáme všetky komponenty a súčiastky, ktoré budeme potrebovať.&lt;br /&gt;
&lt;br /&gt;
Okrem nich sa vám zíde aj menšie nástroje, napríklad kliešte a skrutkovač, na uťahovanie matíc na ťažšie dostupných miestach.&lt;br /&gt;
&lt;br /&gt;
Neponáhľajte sa a pri každom kroku si najprv pozrite priložené obrázky – ušetríte si tak čas aj prípadné komplikácie.&lt;br /&gt;
&lt;br /&gt;
V tomto robotovi budete musieť aj niečo jednoduché napájkovať. Budete informovaní v danom kroku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| Čierne || 2x1-U || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | Biele || 1x2-1x2-L || 4&lt;br /&gt;
|-&lt;br /&gt;
| 3x1-3x1-L || 3&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-2x1-L || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x5 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na guličku || 1&lt;br /&gt;
|-&lt;br /&gt;
| Modré ||  Servo YZ1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Červené || Držiak káblov || 1&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na laserový senzor || 3&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na gyroskop || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Mechanické súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~20&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~20&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~40&lt;br /&gt;
|-&lt;br /&gt;
| Podporná gulička || 1&lt;br /&gt;
|-&lt;br /&gt;
| Hrebeň || 2x4&lt;br /&gt;
|-&lt;br /&gt;
| Kolesá s gumovou podrážkou || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 2&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Laserový senzor || 3&lt;br /&gt;
|-&lt;br /&gt;
| Gyroskop || 1&lt;br /&gt;
|-&lt;br /&gt;
| Napájanie batériek || 1&lt;br /&gt;
|-&lt;br /&gt;
| Krátke káble || 12x2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:MicroMouseManualImage1.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage2.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage3.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage4.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage5.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage6.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage7.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage8.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage9.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage10.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V prvom kroku si prichystáme motorčeky s kolesami pre riadenie. Modré krabičky sa jednoducho dajú spojiť s L-profilmi tak, že sa vloží matica zo spodu krabičky do priehradky. Následne sa napolohuje tak, aby sa do matice naskrutkovala skrutka, ktorá spojí L-profil s krabičkou, ako je uvedené na obrázku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage12.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage13.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage14.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage15.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V druhom kroku si dávajte pozor na otočenie RP2350 modulu a napájacieho modulu. Najprv si ich napolohujte a spojte s prvým motorčekom. Následne pripojte druhý motorček. Posledný obrázok je iba náhľad zo strany RP2350 modulu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage17.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage19.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage18.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage20.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage21.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tretí krok odporúčame pridržať si matice prstom, jemne priskrutkovať, nastaviť komponenty tak, ako sú na obrázku, a následne silnejšie priskrutkovať. Otočenie laserových modulov je voliteľné, ale odporúčame ho tak, ako je na obrázku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage23.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage24.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage25.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage26.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage28.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage29.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage30.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Takisto aj v štvrtom kroku môže byť laserový modul otočený o 180°, ale odporúčame, aby snímač (čierna škatuľka) bol dole. Pripevnenie k telu robota musí byť presne ako na obrázku, inak by bol predok robota vyvýšený a predný snímač by nemusel vidieť objekty pod robotom.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage32.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage33.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage34.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage35.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage36.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage37.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage38.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre jednoduchšie uchytenie na robota vyberte dlhšie skrutky a spoj 1x2, ktorý bude v tomto prípade slúžiť ako podložka na uchytenie. Otočenie skrutiek je voliteľné, vyberte si, ako je vám vhodnejšie, ale odporúčame tak, ako je na obrázku. Gyroskop by mal byť vývodom (pinmi/káblami) nahor, aby sa vedel zapojiť do RP2350.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage39.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage40.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage41.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Jednoduché uchytenie káblov pre servo motorčeky.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| Ľavé servo || GP1&lt;br /&gt;
|-&lt;br /&gt;
| Pravé servo || GP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage42.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage43.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage44.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage45.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage46.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage47.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Oznam: v krokoch 7 a 8 si dávajte veľký pozor na zapojenie pinov. Nemusí vám potom dobre fungovať snímanie vzdialenosti a stratíte tým veľa času hľadaním problému.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
V tomto kroku budete musieť pripájkovať dva hrebene so štyrmi pinmi. Dôvodom tohto kroku je, že chceme prepojiť I2C piny (SDA spolu a SCL spolu) laserových modulov. Pre jednoduchosť a lepší prehľad budeme používať fialovú farbu pre SDA a sivú pre SCL (u gyroskopu aj u laserov).&lt;br /&gt;
&lt;br /&gt;
Budeme zapájať:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! I2C signál !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Gyroskop || SDA || GP4&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP5&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Ľavý laser || SDA || GP6&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP7&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Pravý laser || SDA || GP6&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP7&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Predný laser || SDA || GP6&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dôvodom takéhoto zapojenia je to, že gyroskop je na zbernici I2C0 a lasery na zbernici I2C1. V [https://www.waveshare.com/wiki/RP2350-Zero#Arduino_IDE_Series datasheete] nájdete lepšie viditeľný pinout pre I2C zbernice. Ďalej budeme cez I2C1 a XSHUT piny prepínať adresy, cez ktoré budeme komunikovať s jednotlivými laserovými modulmi. Ďalší krok je zapojenie týchto XSHUT pinov.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage49.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage50.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage51.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage52.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage53.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage54.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage55.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku sme pre zjednodušenie vybrali farby káblov: biela – VCC, čierna – GND, hnedá – XSHUT piny.&lt;br /&gt;
&lt;br /&gt;
Zapojenie:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT ľavý laser || GP8&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT pravý laser || GP12&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT predný laser || GP13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage56.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage57.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage58.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage59.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage60.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si môžete uhladiť káble tak, aby robotík vyzeral krásne. Keď ste sa dostali sem, tak gratulujeme. Zvládli ste postaviť svoju jednoduchú myš v bludisku! :)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=HW_Setup&amp;diff=1145</id>
		<title>HW Setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=HW_Setup&amp;diff=1145"/>
		<updated>2026-09-06T14:46:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Táto stránka slúži na prípravu hardvéru pre stavebnicu. Pre každú súčiastku tu nájdete postup ako ju pripraviť na použitie - či treba niečo prispájkovať, do akej krabičky/držiaka sa dá pripevniť, prípadne veľmi jednoduchý test správnosti funkčnosti. V časti [[Electronics|Electronics]] sa o každej súčiastke dozviete viac. Ideálne je vhodné najskôr prejsť cez všetky súčiastky podľa tejto stránky, vďaka čomu sa zorientujeme, čo všetko v stavebnici máme, a potom pokračovať ďalej tutoriálom, ktorý sa odkazuje na jednotlivé podrobnosti z časti Electronics.&lt;br /&gt;
&lt;br /&gt;
Pri každej súčiastke budete potrebovať niektoré náradie, ako napríklad skrutkovač s kliešťami alebo taviacu pištoľ, alebo letovačku. Budeme vás pri tom vždy na začiatku stránky informovať pomocou takýchto ikoniek.&lt;br /&gt;
&lt;br /&gt;
[[File:Naradie Ikonka.png|140px]]&lt;br /&gt;
[[File:Taviaca Pistol Ikonka.png|140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png|140px]]&lt;br /&gt;
&lt;br /&gt;
== Zoznam súčiastok ==&lt;br /&gt;
* [[RP2350_-_setup|Riadiaca jednotka a baterkový modul]]&lt;br /&gt;
* [[HC-SR04 - setup|Ultrazvukový senzor HC-SR04]]&lt;br /&gt;
* [[VL53L0X - setup|Laserový ToF senzor vzdialenosti VL53L0X]]&lt;br /&gt;
* [[Touch sensor - setup|Dotykový senzor]]&lt;br /&gt;
* [[KY-53 - setup|Mikrofón KY-53]]&lt;br /&gt;
* [[BNO055 - setup|Gyroskop BNO055]]&lt;br /&gt;
* [[QRT-8A a multiplexer - setup|Čiarový senzor QRT-8A + multiplexer]]&lt;br /&gt;
* [[RGB LED - setup|LED modul]]&lt;br /&gt;
* [[SG90 - setup|Servo SG90]]&lt;br /&gt;
* [[Buzzer - setup|Bzučiak]]&lt;br /&gt;
* [[Joystick - setup|Analógový joystick]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=HW_Setup&amp;diff=1144</id>
		<title>HW Setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=HW_Setup&amp;diff=1144"/>
		<updated>2026-09-06T14:45:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Táto stránka slúži na prípravu hardvéru pre stavebnicu. Pre každú súčiastku tu nájdete postup ako ju pripraviť na použitie - či treba niečo prispájkovať, do akej krabičky/držiaka sa dá pripevniť, prípadne veľmi jednoduchý test správnosti funkčnosti. V časti [[Electronics|Electronics]] sa o každej súčiastke dozviete viac. Ideálne je vhodné najskôr prejsť cez všetky súčiastky podľa tejto stránky, vďaka čomu sa zorientujeme, čo všetko v stavebnici máme, a potom pokračovať ďalej tutoriálom, ktorý sa odkazuje na jednotlivé podrobnosti z časti Electronics.&lt;br /&gt;
&lt;br /&gt;
Pri každej súčiastke budete potrebovať niektoré náradie, ako napríklad skrutkovač s kliešťami alebo taviacu pištoľ, alebo letovačku. Budeme vás pri tom vždy na začiatku stránky informovať pomocou takýchto ikoniek.&lt;br /&gt;
&lt;br /&gt;
[[File:Naradie Ikonka.png|140px]]&lt;br /&gt;
[[File:Taviaca Pistol Ikonka.png|140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png|140px]]&lt;br /&gt;
&lt;br /&gt;
== Zoznam súčiastok ==&lt;br /&gt;
* [[RP2350_-_manual|Riadiaca jednotka a baterkový modul]]&lt;br /&gt;
* [[HC-SR04 - setup|Ultrazvukový senzor HC-SR04]]&lt;br /&gt;
* [[VL53L0X - setup|Laserový ToF senzor vzdialenosti VL53L0X]]&lt;br /&gt;
* [[Touch sensor - setup|Dotykový senzor]]&lt;br /&gt;
* [[KY-53 - setup|Mikrofón KY-53]]&lt;br /&gt;
* [[BNO055 - setup|Gyroskop BNO055]]&lt;br /&gt;
* [[QRT-8A a multiplexer - setup|Čiarový senzor QRT-8A + multiplexer]]&lt;br /&gt;
* [[RGB LED - setup|LED modul]]&lt;br /&gt;
* [[SG90 - setup|Servo SG90]]&lt;br /&gt;
* [[Buzzer - setup|Bzučiak]]&lt;br /&gt;
* [[Joystick - setup|Analógový joystick]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=KY-53_-_manual&amp;diff=1143</id>
		<title>KY-53 - manual</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=KY-53_-_manual&amp;diff=1143"/>
		<updated>2026-09-06T14:43:42Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin premiestnil stránku KY-53 - manual na KY-53 - setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#presmeruj [[KY-53 - setup]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=KY-038_-_setup&amp;diff=1142</id>
		<title>KY-038 - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=KY-038_-_setup&amp;diff=1142"/>
		<updated>2026-09-06T14:43:42Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin premiestnil stránku KY-53 - manual na KY-53 - setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ky038.jpeg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Popis ==&lt;br /&gt;
&lt;br /&gt;
Modul KY-038 je senzor na detekciu zvuku, ktorý pozostáva z elektretového mikrofónu a komparátora. Vie rozoznať, či hlasitosť zvuku prekročila nastavenú hranicu, prípadne dokáže priebežne merať jej aktuálnu úroveň.&lt;br /&gt;
&lt;br /&gt;
== Príprava (vkladanie do držiaka) ==&lt;br /&gt;
&lt;br /&gt;
Senzor prichádza naspájkovaný, čiže nám stačí ho vložiť do držiaka nižšie na obrázkoch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicrophoneSetup9.jpg|300px]]&lt;br /&gt;
[[File:MicrophoneSetup2.jpg|300px]]&lt;br /&gt;
[[File:MicrophoneSetup3.jpg|300px]]&lt;br /&gt;
[[File:MicrophoneSetup4.jpg|300px]]&lt;br /&gt;
[[File:MicrophoneSetup5.jpg|300px]]&lt;br /&gt;
[[File:MicrophoneSetup6.jpg|300px]]&lt;br /&gt;
[[File:MicrophoneSetup7.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Máme dva druhy držiakov, do každého sa mikrofón KY-038 jednoducho zacvakne a môže sa ďalej pripevniť k stavebnici.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zapojenie ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin modulu !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D0&#039;&#039;&#039; (digitálny výstup) || GP5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;A0&#039;&#039;&#039; (analógový výstup) || GP26 (ADC0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Citlivosť mikrofónu sa dá nastaviť &#039;&#039;&#039;otočnou skrutkou&#039;&#039;&#039; na modrej krabičke priamo na module.&lt;br /&gt;
&lt;br /&gt;
Modul má dva výstupy:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Výstup !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Digitálny (D0)&#039;&#039;&#039; || Vysiela iba 0 alebo 1 – buď zvuk zachytil, alebo nie&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Analógový (A0)&#039;&#039;&#039; || Vysiela hodnotu podľa hlasitosti a frekvencie zvuku – čím hlasnejší zvuk, tým vyššia hodnota&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Touch_sensor_-_manual&amp;diff=1141</id>
		<title>Touch sensor - manual</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Touch_sensor_-_manual&amp;diff=1141"/>
		<updated>2026-09-06T14:43:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin premiestnil stránku Touch sensor - manual na Touch sensor - setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#presmeruj [[Touch sensor - setup]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Touch_sensor_-_setup&amp;diff=1140</id>
		<title>Touch sensor - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Touch_sensor_-_setup&amp;diff=1140"/>
		<updated>2026-09-06T14:43:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin premiestnil stránku Touch sensor - manual na Touch sensor - setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Naradie Ikonka.png | 140px]]&lt;br /&gt;
[[File:Taviaca Pistol Ikonka.png | 140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png | 140px]]&lt;br /&gt;
&lt;br /&gt;
== Popis ==&lt;br /&gt;
&lt;br /&gt;
Dotykový modul (postavený na čipčeku TTP223) nahrádza klasické mechanické tlačidlo bez toho, aby mal akékoľvek pohyblivé časti. Namiesto fyzického stlačenia deteguje dotyk &#039;&#039;&#039;kapacitne&#039;&#039;&#039; – na malej kovovej ploche na doštičke meria zmenu kapacity, ktorá nastane, keď sa jej dotkne prst. Vďaka tomu sa nemá čo mechanicky opotrebovať a funguje spoľahlivo aj po tisíckach dotykov.&lt;br /&gt;
&lt;br /&gt;
Modul má len tri piny – &#039;&#039;&#039;VCC&#039;&#039;&#039;, &#039;&#039;&#039;GND&#039;&#039;&#039; a &#039;&#039;&#039;I/O&#039;&#039;&#039;. V pokoji (bez dotyku) je na I/O nízka úroveň (LOW), a hneď ako sa dotkneš plochy, výstup skočí na vysokú úroveň (HIGH). Toto je tzv. &#039;&#039;&#039;momentary&#039;&#039;&#039; režim (predvolený) – výstup kopíruje aktuálny stav dotyku: kým držíš prst na ploche, zostáva HIGH, po pustení sa vráti na LOW. Na zadnej strane modulu sa dá spájkovacou prepojkou prepnúť aj do &#039;&#039;&#039;toggle&#039;&#039;&#039; režimu, kde by každý dotyk prepínal výstup medzi HIGH/LOW ako vypínač – pre tento návod si však vystačíme s predvoleným nastavením.&lt;br /&gt;
&lt;br /&gt;
Keďže ide o jeden obyčajný digitálny výstup, na RP2350-Zero sa číta rovnako ako bežné tlačidlo (napr. cez &amp;lt;code&amp;gt;digitalRead()&amp;lt;/code&amp;gt;) – netreba naň žiadny komunikačný protokol ako I2C alebo UART.&lt;br /&gt;
&lt;br /&gt;
== Príprava (spájkovanie a vkladanie do krabičky) ==&lt;br /&gt;
Naspájkovanie hrebeňových pinov nie je nutné, dá sa priletovať aj priamo dupont káble, opäť však zo spodnej strany senzora. Tieto káble je následne potrebné spevniť tavnou pištoľou, keďže sa pri ohýbaní opotrebúvajú.&lt;br /&gt;
Pri zapájaní si dávaj veľký pozor na VCC a GND. Ak tieto dva piny vymeníš a pustíš prúd, súčiastku jednoducho spáliš, keďže nie je chránená diódou.&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:TouchSetup1.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup2.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup3.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup4.jpg|300px]]&lt;br /&gt;
[[File:TouchSetup5.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Zapojenie ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin senzora !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;I/O&#039;&#039;&#039; || GP6&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=VL53L0X_-_manual&amp;diff=1139</id>
		<title>VL53L0X - manual</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=VL53L0X_-_manual&amp;diff=1139"/>
		<updated>2026-09-06T14:42:20Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin premiestnil stránku VL53L0X - manual na VL53L0X - setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#presmeruj [[VL53L0X - setup]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=VL53L0X_-_setup&amp;diff=1138</id>
		<title>VL53L0X - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=VL53L0X_-_setup&amp;diff=1138"/>
		<updated>2026-09-06T14:42:20Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin premiestnil stránku VL53L0X - manual na VL53L0X - setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Taviaca Pistol Ikonka.png|140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png|140px]]&lt;br /&gt;
&lt;br /&gt;
== Popis ==&lt;br /&gt;
&lt;br /&gt;
VL53L0X je laserový senzor vzdialenosti (Time-of-Flight), ktorý meria vzdialenosť pomocou odrazeného laserového lúča. Vďaka tomu dokáže presne určiť, ako ďaleko sa nachádza prekážka pred robotom.&lt;br /&gt;
&lt;br /&gt;
== Príprava (spájkovanie) ==&lt;br /&gt;
&lt;br /&gt;
Senzor sa dodáva bez naletovaných vývodov, takže je pred použitím potrebné ho pripraviť – buď naspájkovať hrebeňové piny, alebo priamo dupont káble. Pri spájkovaní dupont káblov odporúčame ich ešte prilepiť tavnou pištoľou, aby sa spoj pri manipulácii neopotrebúval.&lt;br /&gt;
&lt;br /&gt;
[[Image:VL53L0X.jpg|300px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:LaserSetup3.jpg|300px]]&lt;br /&gt;
[[File:LaserSetup4.jpg|300px]]&lt;br /&gt;
[[File:LaserSetup1.jpg|300px]]&lt;br /&gt;
[[File:LaserSetup2.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zapojenie ==&lt;br /&gt;
&lt;br /&gt;
Senzor komunikuje cez zbernicu [[RP2350-Zero/I2C|&#039;&#039;&#039;I2C&#039;&#039;&#039;]] – potrebuje iba 4 vodiče:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin senzora !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SDA&#039;&#039;&#039; || GP4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SCL&#039;&#039;&#039; || GP5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=HW_Setup&amp;diff=1137</id>
		<title>HW Setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=HW_Setup&amp;diff=1137"/>
		<updated>2026-09-06T14:40:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Táto stránka slúži na prípravu hardvéru pre stavebnicu. Pre každú súčiastku tu nájdete postup ako ju pripraviť na použitie - či treba niečo prispájkovať, do akej krabičky/držiaka sa dá pripevniť, prípadne veľmi jednoduchý test správnosti funkčnosti. V časti [[Electronics|Electronics]] sa o každej súčiastke dozviete viac. Ideálne je vhodné najskôr prejsť cez všetky súčiastky podľa tejto stránky, vďaka čomu sa zorientujeme, čo všetko v stavebnici máme, a potom pokračovať ďalej tutoriálom, ktorý sa odkazuje na jednotlivé podrobnosti z časti Electronics.&lt;br /&gt;
&lt;br /&gt;
Pri každej súčiastke budete potrebovať niektoré náradie, ako napríklad skrutkovač s kliešťami alebo taviacu pištoľ, alebo letovačku. Budeme vás pri tom vždy na začiatku stránky informovať pomocou takýchto ikoniek.&lt;br /&gt;
&lt;br /&gt;
[[File:Naradie Ikonka.png|140px]]&lt;br /&gt;
[[File:Taviaca Pistol Ikonka.png|140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png|140px]]&lt;br /&gt;
&lt;br /&gt;
== Zoznam súčiastok ==&lt;br /&gt;
* [[RP2350_-_manual|Riadiaca jednotka a baterkový modul]]&lt;br /&gt;
* [[HC-SR04 - setup|Ultrazvukový senzor HC-SR04]]&lt;br /&gt;
* [[VL53L0X - manual|Laserový ToF senzor vzdialenosti VL53L0X]]&lt;br /&gt;
* [[Touch sensor - manual|Dotykový senzor]]&lt;br /&gt;
* [[KY-53 - manual|Mikrofón KY-53]]&lt;br /&gt;
* [[BNO055 - setup|Gyroskop BNO055]]&lt;br /&gt;
* [[QRT-8A a multiplexer - manual|Čiarový senzor QRT-8A + multiplexer]]&lt;br /&gt;
* [[RGB LED - manual|LED modul]]&lt;br /&gt;
* [[SG90 - manual|Servo SG90]]&lt;br /&gt;
* [[Buzzer - manual|Bzučiak]]&lt;br /&gt;
* [[Joystick - manual|Analógový joystick]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=HC-SR04_-_setup&amp;diff=1136</id>
		<title>HC-SR04 - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=HC-SR04_-_setup&amp;diff=1136"/>
		<updated>2026-09-06T14:39:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HW Setup|naspäť do zoznamu]] | [[Ultrazvukovy_senzor_HC-SR04_-_manual|viac podrobností o elektronickej súčiastke HC-SR04]]&lt;br /&gt;
&lt;br /&gt;
[[File:Letovanie Ikonka.png|140px]]&lt;br /&gt;
&lt;br /&gt;
== Popis ==&lt;br /&gt;
&lt;br /&gt;
Jeden z prvých senzorov, ktoré treba sprevádzkovať, je samotný ultrazvukový senzor HC-SR04p, ktorý vyzerá ako oči. Senzor sa napája 3,3 V, ktoré môžeme získať buď priamo z napájania, alebo z pripojenej dosky RP2350 – takže ho môžeme jednoducho napojiť priamo na dosku.&lt;br /&gt;
&lt;br /&gt;
== Príprava (spájkovanie a vkladanie do krabičky) ==&lt;br /&gt;
&lt;br /&gt;
Senzor neprichádza s naspájkovanými vývodmi. Ohnuté hrebeňové piny treba naspájkovať zo spodu, ako je uvedené na obrázkoch – je to preto, aby sa senzor zmestil do krabičky, ktorá je preň určená. Naspájkovanie hrebeňových pinov nie je nutné, dá sa priletovať aj priamo dupont káble, opäť však zo spodnej strany senzora. Tieto káble je následne potrebné spevniť tavnou pištoľou, keďže sa pri ohýbaní opotrebúvajú.&lt;br /&gt;
&lt;br /&gt;
Pri zapájaní si dávaj veľký pozor na VCC a GND. Ak tieto dva piny vymeníš a pustíš prúd, súčiastku jednoducho spáliš, keďže nie je chránená diódou.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoombaImage2.jpg|300px]]&lt;br /&gt;
[[File:RoombaImage4.jpg|300px]]&lt;br /&gt;
[[File:RoombaImage3.jpg|300px]]&lt;br /&gt;
[[File:RoombaImage6.jpg|300px]]&lt;br /&gt;
[[File:RoombaImage7.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ultrazvukový senzor sa z jednej strany jednoducho vloží a z druhej strany zaklapne. Treba počuť kliknutie, inak bude senzor v krabičke voľne poletovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zapojenie ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin senzora !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TRIG&#039;&#039;&#039; || GP6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ECHO&#039;&#039;&#039; || GP7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Ultrazvukovy_senzor_HC-SR04_-_manual&amp;diff=1135</id>
		<title>Ultrazvukovy senzor HC-SR04 - manual</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Ultrazvukovy_senzor_HC-SR04_-_manual&amp;diff=1135"/>
		<updated>2026-09-06T14:37:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ultrazvukový senzor ===&lt;br /&gt;
&lt;br /&gt;
[[Electronics | Späť do zoznamu]] | [[HC-SR04 - setup|HW príprava senzora HC-SR04]]&lt;br /&gt;
&lt;br /&gt;
Ultrazvukový senzor &#039;&#039;&#039;HC-SR04&#039;&#039;&#039; sa v niečom podobá na pasívnu sirénku, pomocou ktorej sa dá generovať zvuk rýchlym zapínaním a vypínaním bzučiaka. Teraz použijeme podobný princíp – ale na iný účel: &#039;&#039;&#039;meranie vzdialenosti&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Senzor HC-SR04 má na sebe zabudovaný reproduktor aj mikrofón:&lt;br /&gt;
* &#039;&#039;&#039;Reproduktor&#039;&#039;&#039; vyšle krátky ultrazvukový impulz cez pin &#039;&#039;&#039;TRIG&#039;&#039;&#039;&lt;br /&gt;
* Impulz sa odrazí od objektu pred senzorom a vráti sa späť&lt;br /&gt;
* &#039;&#039;&#039;Mikrofón&#039;&#039;&#039; zachytí odrazený signál a vyšle ho cez pin &#039;&#039;&#039;ECHO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Celý tento proces trvá nejaký čas – a práve z tohto času vieme vypočítať vzdialenosť.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Note|Rýchlosť zvuku vo vzduchu je približne &#039;&#039;&#039;343 metrov za sekundu&#039;&#039;&#039; (alebo 0,0343 cm/µs). Keďže zvuk musí prejsť vzdialenosť dvakrát (tam aj späť), výsledok delíme 2.}}--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pozor – nie každý objekt odrazí ultrazvuk spoľahlivo. Mäkké a porézne materiály (napr. látka, molitan) zvuk pohlcujú namiesto odrazu, a senzor ich nemusí detekovať.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Zapojenie &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin senzora !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 5V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TRIG&#039;&#039;&#039; || GP6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ECHO&#039;&#039;&#039; || GP7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Kód – meranie času impulzu &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:#CCFFCC&amp;quot;&amp;gt;&#039;&#039;&#039;Vyskúšaj toto:&#039;&#039;&#039;&amp;lt;/span&amp;gt; Skopíruj a spusti nasledujúci program. Otvor sériový monitor (9600 baud) a pohybuj rukou pred senzorom. Sleduj ako sa mení nameraná vzdialenosť.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
const int TRIG = 6;&lt;br /&gt;
const int ECHO = 7;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(TRIG, OUTPUT);&lt;br /&gt;
  pinMode(ECHO, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Funkcia odošle impulz a vráti nameraný čas v mikrosekundách&lt;br /&gt;
long measurePulse() {&lt;br /&gt;
  digitalWrite(TRIG, LOW);&lt;br /&gt;
  delayMicroseconds(2);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(TRIG, HIGH);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  digitalWrite(TRIG, LOW);&lt;br /&gt;
&lt;br /&gt;
  return pulseIn(ECHO, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  long trvanie = measurePulse();&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Čas: &amp;quot;);&lt;br /&gt;
  Serial.print(trvanie);&lt;br /&gt;
&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Princíp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:HC-SR04-visual.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Novinka !! Vysvetlenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pulseIn(pin, HIGH)&amp;lt;/code&amp;gt; || Čaká kým pin prejde do stavu HIGH, potom meria ako dlho v ňom zostane. Vráti čas v mikrosekundách.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;digitalWrite(TRIG, HIGH)&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;delayMicroseconds(10)&amp;lt;/code&amp;gt; || Odošleme presne 10µs impulz – to je požiadavka senzora HC-SR04 na spustenie merania.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trvanie * 0.0343 / 2.0&amp;lt;/code&amp;gt; || Prepočet: čas (µs) × rýchlosť zvuku (cm/µs) ÷ 2 (tam aj späť) = vzdialenosť v cm.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Dátový typ pre desatinné čísla – na rozdiel od &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;, ktorý uchováva iba celé čísla.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1127</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1127"/>
		<updated>2026-09-06T11:38:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot-Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program zapína motory postupne po jednom, aby ste si prípadne mohli ešte opraviť ich otočenie voči modrej pripojenej súčiastke. Robot by pri 90-stupňových polohách motorov mal vyzerať ako na videu po zapnutí.&lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
Najskôr naprogramujte základné riadenie robota pomocou joysticku. Joystick má len dva stupne voľnosti, preto je vhodné nejakým spôsobom prepínať medzi zvolenou dvojicou kĺbov, ktoré pomocou neho práve riadime. My sme si zvolili prepínanie prvým dotykovým sennzorom a signalizáciu pommocou farebnej LED. &lt;br /&gt;
&lt;br /&gt;
# Naklonenie joysticku do jednej alebo druhej strany začne otáčať motorom v príslušnom kĺbe do jednej alebo druhej strany;&lt;br /&gt;
# Vrátenie joysticku do neutrálnej polohy uvedie rameno do pokoja na tom mieste, kde sa práve nachádza;&lt;br /&gt;
# Dotyk (a následné pustenie) prvého dotykového senzora vymení dvojicu kĺbov, ktoré sa riadia joystickom.&lt;br /&gt;
&lt;br /&gt;
Všimnite si, že hodnoty z joysticku sa menia pomerne rýchlo už pri jeho jemnom naklonení.&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* nájdite hraničné hodnoty pre jednotlivé servá, za ktorými ďalší pohyb nie je mechanicky možný&lt;br /&gt;
* zabezpečte podmienkami v programe, že sa servo za tieto hranice nedostane (ideálne by hranice mohli byť flexibilné vzhľadom na polohu v ktorej sa rameno nachádza)&lt;br /&gt;
* pri rôzne prudkom naklonení joysticku sa motory budú otáčať rôznou rýchlosťou a farebná LED bude signalizovať aj smer aj rýchlosť otáčania&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
Program z predchádzajúceho cvičenia vylepšíme tak, že počas riadenia ramena joystickom bude možné zapnúť a zastaviť nahrávanie jeho pohybov a neskôr túto zapamätanú postupnosť znovu autonómne zopakovať.&lt;br /&gt;
&lt;br /&gt;
# program najskôr funguje rovnako ako program v predchádzajúcej úlohe&lt;br /&gt;
# po stlačení (a pustení) druhého dotykového senzora sa zapne nahrávanie (signalizované farebnou LED)&lt;br /&gt;
# od tohoto okamihu sa po každom kliknutí tlačidlom joysticku uloží aktuálna poloha všetkých 4 motorov do zoznamu zaznamenaných polôh&lt;br /&gt;
# poloha sa zaznamenáva ako uhol serva - okrem zaḱladne, pre ktorú sa zaznamenávajú jednotlivé časy potrebné na otočenie aj bez kliknutí vždy po zmene rýchlosti otáčania ramena (alebo zastavení)&lt;br /&gt;
# po opätovnom stlačení druhého dotykového senzora sa nahrávanie ukončí (záznam ostáva v pamäti) a robota je zasa možné riadiť bez ukladania jeho polôh&lt;br /&gt;
# po kliknutí na tlačidlo joysticku sa zapamätaný záznam v pomalej rýchlosti (ale plynule, bez prestávok) prehrá - jednotlivé konfigurácie ramena sa postupne dosahujú pomocou plynulých pohybov motorov&lt;br /&gt;
# po dokončení prehrávania záznamu je ho možné prehrať znovu, riadiť servo pomocou joysticku, alebo program pokračuje 2. krokom pre nový záznam pohybu &lt;br /&gt;
&lt;br /&gt;
Ukážka možného riešenia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* pridajte možnosť &amp;quot;exportu&amp;quot; a &amp;quot;importu&amp;quot; zadanej postupnosti pohybov, export vypíše na výstup sériového portu v takom istom formáte ako ho import dokáže načítať - takýmto spôsobom si môžeme skopírovať z konzoly vyexportované postupnosti, uložiť si ich do textového súboru na počítači a neskôr ich odtiaľ vložiť do konzoly po zvolení funkcie import a znovu vykonať&lt;br /&gt;
* umožnite nastaviť rýchlosť pohybov pri opakovaní naučenej postupnosti&lt;br /&gt;
* vymeňte continuous servo za obyčajné servo - rameno bude mať síce menší pracovný priestor, ale otáčanie základne bude riadené presne  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
Táto úloha je priestor pre Vašu tvorivosť. Výsledkom by malo byť malé demo, v ktorom rameno autonómne vykoná niekoľko krokov, pričom bude manipulovať/prenášať nejaké predmety, nielen sa pohybovať na rôzne miesto v pracovnom priestore.&lt;br /&gt;
&lt;br /&gt;
Inšpirovať sa môžete aj týmto videom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo - počas vykonávania pohybu dotyk senzora spôsobí okamžité zastavenie&lt;br /&gt;
* opakovateľnosť - postupnosť skončí na rovnakom mieste ako začína, takže sa dá spustiť niekoľkokrát za sebou bez zmeny polohy ramena medzi opakovanými štartami&lt;br /&gt;
* možnosť riadiť rameno pred spustením dema/po jeho zastavení joystickom ako v predchádzajúcich úlohách, demo sa môže štartovať napr. kliknutím joystickom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude rameno robiť &amp;quot;užitočnú&amp;quot; prácu podľa aktuálnych požiadaviek operátora. V jeho pracovnom priestore zadefinujeme niekoľko pozícií, označíme ich napr. A, B, C, D a naprogramujeme presuny ramena medzi týmito pozíciami. Pokyny budeme postupne zadávať cez sériovú linku jeden za druhým a rameno ich bude vykonávať,  napr. prelož predmet z miesta A na miesto C. &lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* niektoré miesta môžu byť nielen priamo dole na stole, ale vyššie, pričom na tom mieste bude košík/krabička, nad ktorou rameno predmet uvoľní, aby spadol do košíka&lt;br /&gt;
* pridajte možnosť &amp;quot;resetnúť&amp;quot;/&amp;quot;inicializovať&amp;quot; polohu základne na dohodnutom mieste&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pomocou nejakého príkazu zadaného pred samotnou požiadavkou na presun&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota&lt;br /&gt;
* umožnite operátorovi interaktívne zadať požiadavku na zopakovanie uchopenia predmetu, ak by sa náhodou nepodarilo na prvý raz&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
Vylepšíme predchádzajúci program tak, aby namiesto jedného pokynu umožnil zadať postupnosť viacerých pokynov, ktoré potom naraz jeden po druhom vykoná - napr. prelož predmet z A na C, potom iný z D na A, potom ďalší z B na D, atď.&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo na zastavenie postupnosti v ktoromkoľvek okamihu&lt;br /&gt;
* korekcia pohybu základne - pomocou druhého tlačidla je kedykoľvek možné zastaviť vykonávanie pohybu a otočiť joystickom rameno, aby sme ho nastavili do požadovanej polohy pre nasledujúce cieľové miesto, ak rameno práve vykonáva nejaký pohyb, alebo do &amp;quot;nulovej&amp;quot; polohy, ak pohyb práve nevykonáva&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota pre každý pohyb v postupnosti zvlášť&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pre každý prenášaný predmet zvlášť&lt;br /&gt;
* umožnite používateľovi zadefinovať postupnosti pohybov ako makrá, ktoré sa potom dajú vyvolať jedným znakom prijatým cez sériovú linku, alebo dotykovým senzorom, či joystickom&lt;br /&gt;
* upravte program tak, aby mal vedomosť o tom, ktoré miesta sú obsadené predmetmi a dovolí vykonať presun iba na prázdne miesto, v opačnom prípade sa vykonávanie sekvencie preruší&lt;br /&gt;
* vytvorte plánovací program, do ktorého sa zadá počiatočná a cieľová konfigurácia, program potom naplánuje postupnosť krokov a aj ich vykoná, napr: ŠTART: A-zelený, B-modrý, C-červený, D-prázdne miesto, CIEĽ: A-modrý, B-červený, C-zelený, D-prázdne miesto.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
V robotických aplikáciách nás často zaujíma momentálna poloha riadeného koncového člena v priestore - v našom prípade uzatvárateľnej ruky namontovanej na konci ramena. Program, ktorý riadi rameno v každom okamihu pozná uhly, podľa ktorých sú otočené jednotlivé stupne voľnosti - v tejto úlohe nás bude zaujímať iba poloha ruky v rovine ramena. Rovina ramena sa celá otáča pomocou základne, ale keďže ju máme riadenú pomocou continuous serva, určovanie tejto polohy by bolo priveľmi nepresné. Uvažujme rovinu ramena - súradnica &#039;&#039;x&#039;&#039; bude určovať ako ďaleko od okraja podstavca pred robotom sa ruka nachádza a súradnica &#039;&#039;y&#039;&#039; bude určovať v akej výške ruka je. Vstupom do výpočtu sú teda dva uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, určujúce do akého uhla sú otočené servá umiestnené nad otočnou základňou a výstupom bude poloha ramena &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039; (môžeme uvažovať napr. referenčný bod na začiatku uchopovacieho priestoru ramena - čiže krajná poloha uchopovaného predmetu. Ak sa na rameno pozrieme z boku, vidíme, že má topológiu uzavretého 5-uhoľníka, pričom jedna strana je predĺžená a na jej konci je upevnené rameno. Pomocou stredoškolskej matematiky vieme odvodiť vzorčeky pre &#039;&#039;x&#039;&#039; a &#039;&#039;y&#039;&#039; na základne vstupného &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, keď poznáme dĺžky jednotlivých strán päťuholníka (pripomíname, že vzdialenosť susedných dier na dieloch stavebnice je 8 mm).   &lt;br /&gt;
&lt;br /&gt;
[[Image:topologia_ramena.png]]&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napr. nejak takto (terminál zobrazuje informáciu vo formáte [&#039;&#039;alfa&#039;&#039;,&#039;&#039;beta&#039;&#039;] -&amp;gt; [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;]. Robota riadime priamo joystickom a výpočet neustále prepočítava polohu ruky v rovine ramena.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, bude priamočiare upraviť výpočet tak, aby určoval polohu v priestore [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;,&#039;&#039;z&#039;&#039;] nielen v rovine&lt;br /&gt;
* teoretický výpočet sa vždy bude trochu líšiť od skutočnej polohy ramena, pretože v každom voľnom kĺbe je vôľa (a teda chyba) približne rádu milimetrov - a tá sa cez mechanickú konštrukciu znásobuje a tiež preto, že motory sa neotáčajú dokonale presne a lineárne, zmerajte veľkosť tejto chyby v rôznych polohách ramena&lt;br /&gt;
* pokúste sa vymyslieť nejaký spôsob kalibrácie/korekcie, ktorý zlepší výslednú presnosť &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná/inverzná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
Ešte užitočnejší výpočet robí presný opak - pre zadanú cieľovú pozíciu ruky [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] nájde uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, také, že ak servá nastavíme do uhlov &#039;&#039;alfa&#039;&#039; a &#039;&#039;beta&#039;&#039;, tak sa ruka dostane na požadované súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] v rovine ramena. Vytvorte program, ktorý dovolí cez sériový port zadať ľubovoľné dostupné súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;], vypočíta uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039; a ruku presunie na požadovanú pozíciu, alebo oznámi, že sa to nedá, ak je poloha mimo mechanicky dostupný rozsah. &lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
* urobte test - pre veľa generovaných pozícií alfa, beta najskôr pomocou doprednej kinematiky vypočítajte [x,y] a potom cez inverznú kinematiku vypočítajte alfa, beta - porovnajte, či ste dostali rovnaké hodnoty a ak nie, aká veľká bola chyba&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, umožnite zadať priestorové súradnice [x,y,z], na ktoré sa ruka presunie&lt;br /&gt;
* doplňte inverznú kinematiku do programu riadeného manipulátora - cieľová poloha sa bude dať zadať nielen ako A,B,C,D ale priamo súradnicami&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.4. Micromouse ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Myš ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotickú myš podľa [[Basic robot - Micro-mouse|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program otestuje servá na pohyb a potom neustále zobrazuje hodnoty zo senzorov. V okamihu, keď sa na sériovej konzole zobrazí text kalibrácia je potrebné pootáčať ho do rôznych smerov, aby sa správne nakalibroval IMU senzor. &lt;br /&gt;
&lt;br /&gt;
==== 2.4.2. Farebná hra s IMU ====&lt;br /&gt;
&lt;br /&gt;
Začneme programom, ktorý otestuje interciálny senzor (IMU). Robot bude zobrazovať farbu a vydávať zvuk - napríklad na PIN 14 pripojíme sirénku (buzzer). &lt;br /&gt;
&lt;br /&gt;
# po spustení programu a inicializácii sa pohybmi do 8 nakalibruje IMU senzor&lt;br /&gt;
# program postupne vygeneruje 20 náhodných čísel, ktoré reprezentujú 6 rôznych farieb a zvukov a nim zodpovedajúcich 6 rôznych pohybov&lt;br /&gt;
# po zobrazení farby na zabudovanej RGB LED a vydaní priradeného zvuku (každá farba má nejaký priradený tón) sa čaká, kým používateľ neotočí robota do požadovanej polohy (podľa príslušnej osi aspoň o 70 stupňov, pričom podľa ostatných osí nie je vychýlený viac ako 10 stupňov&lt;br /&gt;
# nakoniec sa zobrazí celkový čas, ktorý používateľ potreboval na nájdenie všetkých 20 polôh a po chvíli program pokračuje znovu krokom 2&lt;br /&gt;
&lt;br /&gt;
Inšpirácia pre Vaše riešenie (na videu je farba RGB LED pre niektoré odtiene trochu zle viditeľná): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;ymOgkeYMo4w&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte hru tak, aby mala viacero úrovní - farby postupne pribúdajú v každej ďalšej úrovni&lt;br /&gt;
* za otočenie robota nesprávnym smerom získa hráč trestné sekundy&lt;br /&gt;
* kombinácie farieb: robot najskôr zobrazí tri rôzne farby, hráč si ich musí zapamätať a potom robota postupne pootáčať &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.4.3. Sledovanie objektu pomocou IR senzorov ====&lt;br /&gt;
&lt;br /&gt;
Cieľom tohto cvičenia je vyskúšať si spracovanie hodnôt z laserových senzov na meranie vzdialenosti.&lt;br /&gt;
&lt;br /&gt;
# po inicializácii a kalibrácii IMU sa robot rozbehne na chvíľu vpred&lt;br /&gt;
# pokiaľ sa pred robotom nachádza nejaký objekt, bude sa pohybovať naďalej vpred&lt;br /&gt;
# keď predmet zmizne, po niekoľkých sekundách robot zastaví&lt;br /&gt;
# ak sa predmet vyskytne napravo alebo naľavo robota - zachytí ho niektorý bočný IR senzor, robot sa otočí tým smerom (ideálne využitím IMU) a pokračuje krokom 2 &lt;br /&gt;
&lt;br /&gt;
Inšpirácia pre riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;WKRXE7CttdU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot príde blízko predmetu, zastane&lt;br /&gt;
* robot bude regulovať rýchlosť podľa toho ako ďaleko sa pred ním predmet nachádza&lt;br /&gt;
* ak sa dlhšie žiaden predmet nevyskytne, robot hľadá predmet otáčaním sa na mieste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.4.4. Rovný pohyb pomocou IMU ====&lt;br /&gt;
&lt;br /&gt;
V tomto cvičení vytvoríme užitočnú procedúru, ktorá umožní korigovať stratu smeru pri bežnom pohybe pomocou servomotorov. Program bude neustále sledovať natočenie robota pomocou IMU a ak sa odchýli od pôvodne určeného smeru, tak pohyb skoriguje.&lt;br /&gt;
&lt;br /&gt;
# po inicializácii a kalibrácii IMU robot čaká, kým pred sebou neuvidí nejaký predmet, ktorý má sledovať&lt;br /&gt;
# zapamätá si aktuálny smer pred začiatkom pohybu a rozbehne sa vpred&lt;br /&gt;
# neustále monitoruje svoje natočenie a ak sa jeho smer pohybu vychýli na jednu alebo druhú stranu, upraví rýchlosti servomotorov (ak si trúfate, môžete naladiť PD alebo PID regulátor, ale najjednoduchšie riešenie je reagovať na rôzne veľké vychýlenie vopred upravením rýchlostí o pevne určené konštanty). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Upozornenie:  IMU typu BNO055, ktorý máme v stavebnici bežne využíva 9 stupňov voľnosti (trojosový akcelerometer, trojosový gyroskop a trojosový magnetometer) a teda bude citlivý na prítomnosť železných, alebo iných magneticky aktívnych predmetov vo svojom okolí. V interiéri v železobetónovej budove môže byť magnetické pole Zeme, na ktoré sa čiastočne spolieha nerovnomerné a preto pohyby nemusia byť také, ako by sme vždy očakávali. Našťastie, má aj režim, keď využíva iba 6 stupňov voľnosti - a vtedy nepotrebuje ani úvodnú kalibráciu - do inicializačnej funkcie begin() treba poslať argument OPERATION_MODE_IMUPLUS. Druhá možnosť by bolo nahradiť interne počítanú orientáciu výpočtom pomocou vlastnej/knižničnej funkcie. Ukazuje sa, že 6DOF funguje lepšie ako 9DOF, aj keď v našich riešeniach na videách nižšie sme všade využili režim 9DOF.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu (s 9DOF):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;p01wAUntr6Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* overte ako funguje korekcia pri rôznych rýchlostiach pohybu - je potrebné upraviť korekčné konštanty?&lt;br /&gt;
* vyskúšajte nahradiť zabudovaný výpočet z 9 stupňov voľnosti prepnutím režimu na 6DOF, prípadne softvérovým výpočtom pomocou Mahony filtra, ktorý je implementovaný napríklad v knižnici Adafruit AHRS, s funkciou &amp;lt;code&amp;gt;updateIMU(gx, gy, gz, ax, ay, az, dt);&amp;lt;/code&amp;gt; uistite sa, že odovzdávate hodnoty v správnych jednotkách. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.4.5. Štvorec pomocou IMU ====&lt;br /&gt;
&lt;br /&gt;
V tomto programe využijeme procedúru z predchádzajúceho cvičenia, aby sme naprogramovali pohyb do štvorca:&lt;br /&gt;
&lt;br /&gt;
# najskôr prebehne inicializácia a kalibrácia IMU&lt;br /&gt;
# robot sa nejaký pevne stanovený čas pohybuje vpred a koriguje svoj smer, aby išiel čo najpresnejšie rovno&lt;br /&gt;
# zastane a otočí sa o 90 stupňov&lt;br /&gt;
# pokračuje krokom 2&lt;br /&gt;
&lt;br /&gt;
Príklad riešenia (9DOF):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;N6arWySMh_U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* po spustení robota pred jeho IR senzorom niekoľkokrát zamávame, čím určíme počet vrcholov pravidelného mnohouholníka (trojuholník, štvorec, päťuholník...), ktorého tvar potom bude kopírovať&lt;br /&gt;
* dĺžku strany štvorca určíme rukou pred dopredu smerujúcim IR senzorom - robot sa bude pohybovať dovtedy, kým pred sebou vidí predmet - ostatné strany budú mať rovnakú veľkosť&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.4.6. Skry sa do rohu ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe využijeme relatívnu zmenu hodnôt IR senzorov, aby sa robot mohol nasmerovať ku stene a dostať do rohu. &lt;br /&gt;
&lt;br /&gt;
# po inicializácii a kalibrácii:&lt;br /&gt;
# robot sa začne pomaly otáčať na mieste vpravo&lt;br /&gt;
# ak sa vzdialenosť k prekážke smerom vpred zväčšuje, zmení smer otáčania na doľava&lt;br /&gt;
# kým sa vzdialenosť k prekážke smerom vpred zmenšuje, pokračuje v otáčaní, potom zastane&lt;br /&gt;
# rozbehne sa vpred - pričom koriguje svoj smer pomocou IMU, až kým nepríde ku stene&lt;br /&gt;
# tam sa otočí o 90 stupňov vpravo&lt;br /&gt;
# pohybuje sa vpred (a koriguje smer pomocou IMU), až kým sa nedostane ku stene (čiže do rohu)&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu (9DOF):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;snkYLDLg3Ow&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa pokúsi nájsť roh priamo - pri otáčaní sa vzdialenosť bude zväčšovať, až kým nesmeruje priamo do rohu, kam sa vydá priamou cestou (šikmo)&lt;br /&gt;
* v menšej obdĺžnikovej miestnosti (väčšej krabici) sa otočí o 360 stupňov, nájde najbližší zo 4 rohov a presunie sa do neho&lt;br /&gt;
&lt;br /&gt;
==== 2.4.7. Mapovanie steny chodby pomocou IR senzorov ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude robot počas pohybu vpred postupne zaznamenávať vzdialenosť k prekážke na jednom z bočných senzorov. Keď robot vpredu zaznamená predmet, zastane a na sériovej konzole zobrazí namerané údaje vo forme ASCII pseudografiky. Môžete využiť napríklad dátovú štruktúru pole. Uistite sa, že program nebude zapisovať mimo rozsah poľa. Počas pohybu vpred a merania bude robot zároveň korigovať smer pohybu pomocou IMU.&lt;br /&gt;
&lt;br /&gt;
Inšpiratívne riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;H-yv8C5rjpo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* robot zmapuje a zobrazí obe strany chodby &lt;br /&gt;
* robot je vnútri obdĺžnikovej miestnosti, v ktorej sú rozmiestnené (aj pri stenách aj v strede) rôzne predmety, prejde popri všsetkých 4 stenách a potom zobrazí mapu celej miestnosti&lt;br /&gt;
* robot po zmapovaní chodby a jej zobrazení (s číslami riadkov) umožní zadať číslo riadku - ktorým sa určí miesto do ktorého sa má presunúť, ale pri presune nebude používať čas, ale mapu (pomocou sledovania hodnôt senzora a mapy sa bude snažiť neustále v tejto 1-rozmernej mape &amp;quot;lokalizovať&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.4.8. Bludisko pomocou IR senzorov použitím pravidla pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
Podobne ako v prípade robota s čiarovými senzormi sa bude robot pohybovať v bludisku pravidlom pravej ruky. Tento raz bludisko nebude vyznačené čiernou čiarou na podlahe ale bude to skutočné bludisko so stenami. Budeme predpokladať, že všetky steny sú pravouhlé a chodbičky v ňom majú vhodnú šírku, aby sa tam robot vošiel.  Pomocou IR senzorov robot nájde odbočky, slepé uličky a križovatky. &lt;br /&gt;
&lt;br /&gt;
V našom riešení s 9DOF senzorom si robot na začiatku zapamätá absolútnu orientáciu a namiesto relatívnych 90-stupňových otočiek sa vždy otáča vzhľadom na túto absolútnu orientáciu. V uličke sa ale snaží vycentrovať a ak sa dostáva k niektorej stene, bočí od nej, aby nenabúral.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mccPeqTYFZc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte 6DOF orientáciu - či relatívne otočenia budú aj po viacerých zákrutách stále konzistentné - ak nie, skúste nájsť rovnováhu medzi dvoma informáciami - relatívnymi otočeniami pomocou 6DOF a globálneho nasmerovania pomocou kompasu.&lt;br /&gt;
* robot počas prechodu cez bludisko vytvára v pamäti mapu, ktorú nakoniec uloží do EEPROM (emulovanej v programovej pamäti Flash, ale pomocou knižnice EEPROM), po spustení programu na vyžiadanie cez sériovú linku mapu zobrazí v konzole&lt;br /&gt;
* upravte program tak, že ak robot nezačne pri vchode do bludiska, ale v jeho strede a zacyklí sa (vráti sa na z inej strany na miesto, kde už bol), dostane sa z bludiska von.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1125</id>
		<title>Basic robot - Micro-mouse</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1125"/>
		<updated>2026-09-06T07:53:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ďalší robot, ktorého sme pre vás pripravili je Micro mouse (odvar z myši v bludisku).&lt;br /&gt;
Tento robotik po zlozeni bude vlozeny do bludiska, v ktorom sa bude moct pohybovat vdaka svojim trom laser distance senzorom primontovane na troch stranach. Pre to aby mys isla rovno zaistuje gyroskop a jednoduchy algoritmus na usmernenie robotika.&lt;br /&gt;
Dalej budeme musiet navrhnut algoritmus ako sa bude pohybovat.&lt;br /&gt;
Bude to narocnejsie na programovanie, ale za to sa viacej naucite nie len o stavebnici ale o tom co su algoritmi.&lt;br /&gt;
Samotny algoritmus bude vysvetleny v sekcii [[SW Setup]], ale najprv sa pustme do stavania.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie myši v bludisku |  Návod na skladanie myši v bludisku]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť činnosť testovacieho programu - najskôr inicializuje všetky tri IR senzory a IMU senzor - ktorý sa pri štarte kalibruje, vtedy je potrebné robotom čo najviac pootáčať do všetkých smerov. Po úspešnej inicializácii senzorov vyskúša krátke jednoduché pohyby 360-stupňovými servami a napokon donekonečna zobrazuje aktuálne prečítané hodnoty zo senzorov: vzdialenosť vľavo, vpred a vpravo a orientácia robota: yaw - otočenie okolo zvislej osi, pitch - otočenie okolo vodorovnej osi pozdĺežnej v smere jazdy robota a roll - otočenie okolo vodorovnej osi kolmej na smer jazdy robota. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;6ydBQDTeRiM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý test na overenie, že obe servá, všetky tri laserové senzory a IMU senzor fungujú tak, ako majú. Ak adresa pre IMU 0x29 nefunguje, vyskúšajte 0x28.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;VL53L0X.h&amp;gt;    //VL553L0X by Pololu   (testovane s verziou 1.3.1)&lt;br /&gt;
#include &amp;lt;Adafruit_BNO055.h&amp;gt;  // testovane s verziou 1.6.4&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
// GPIO piny podla manualu &lt;br /&gt;
const int PIN_SERVO_LAVE    = 1;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 2;&lt;br /&gt;
const int PIN_XSHUT_LAVY    = 8;&lt;br /&gt;
const int PIN_XSHUT_PRAVY   = 12;&lt;br /&gt;
const int PIN_XSHUT_PREDNY  = 13;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP        = 93;&lt;br /&gt;
&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
&lt;br /&gt;
VL53L0X meracLavy;&lt;br /&gt;
VL53L0X meracPravy;&lt;br /&gt;
VL53L0X meracPredny;&lt;br /&gt;
&lt;br /&gt;
const int ADRESA_LAVY = 0x34;&lt;br /&gt;
const int ADRESA_PRAVY = 0x36;&lt;br /&gt;
const int ADRESA_PREDNY = 0x38;&lt;br /&gt;
&lt;br /&gt;
const int BNO055_ADRESA = 0x29;&lt;br /&gt;
&lt;br /&gt;
Adafruit_BNO055 orientacia(55, BNO055_ADRESA, &amp;amp;Wire);&lt;br /&gt;
&lt;br /&gt;
void zablikaj()&lt;br /&gt;
{&lt;br /&gt;
  for (int i = 0; i &amp;lt; 7; i++)&lt;br /&gt;
  {&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(30, 30, 30));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  pinMode(PIN_XSHUT_LAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_LAVY, HIGH);  // zacneme konfigurovat lavy&lt;br /&gt;
  pinMode(PIN_XSHUT_PRAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, LOW);&lt;br /&gt;
  pinMode(PIN_XSHUT_PREDNY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, LOW);&lt;br /&gt;
&lt;br /&gt;
  servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
  servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
&lt;br /&gt;
  zablikaj();  // pre istotu cakame na seriovy port v arduino IDE&lt;br /&gt;
&lt;br /&gt;
  Wire1.setSDA(6);  // pre istotu nastavenie default pinov I2C1&lt;br /&gt;
  Wire1.setSCL(7);  &lt;br /&gt;
  Wire1.begin();&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme prvy a nastavime mu adresu&lt;br /&gt;
  meracLavy.setBus(&amp;amp;Wire1);&lt;br /&gt;
&lt;br /&gt;
  if (!meracLavy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Lavy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracLavy.setAddress(ADRESA_LAVY);&lt;br /&gt;
  meracLavy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Lavy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, HIGH);   // spristupnime pravy na konfiguraciu (lavy uz nekoliduje, je na inej adrese)&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme druhy a nastavime mu adresu&lt;br /&gt;
  meracPravy.setBus(&amp;amp;Wire1);&lt;br /&gt;
  &lt;br /&gt;
  if (!meracPravy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Pravy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracPravy.setAddress(ADRESA_PRAVY);&lt;br /&gt;
  meracPravy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Pravy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, HIGH);   // napokon spristupnime predny na konfiguraciu (ostatne dva uz nekoliduju)&lt;br /&gt;
  meracPredny.setBus(&amp;amp;Wire1);&lt;br /&gt;
  if (!meracPredny.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Predny senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  meracPredny.setAddress(ADRESA_PREDNY);&lt;br /&gt;
  meracPredny.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Predny OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  delay(100);&lt;br /&gt;
  // zacneme merat na vsetkych troch senzoroch&lt;br /&gt;
  meracLavy.startContinuous();&lt;br /&gt;
  meracPravy.startContinuous();&lt;br /&gt;
  meracPredny.startContinuous();&lt;br /&gt;
&lt;br /&gt;
  Wire.setSDA(4);&lt;br /&gt;
  Wire.setSCL(5);&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
&lt;br /&gt;
  if (!orientacia.begin())&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;Nepodarilo sa inicializovat IMU senzor.&amp;quot;);&lt;br /&gt;
    while (1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  uint8_t system, gyro, accel, mag;&lt;br /&gt;
  do {&lt;br /&gt;
    orientacia.getCalibration(&amp;amp;system, &amp;amp;gyro, &amp;amp;accel, &amp;amp;mag);&lt;br /&gt;
    if (system &amp;lt; 1) {&lt;br /&gt;
      Serial.println(&amp;quot;Kalibracia IMU...&amp;quot;);&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
  } while (system != 3);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Senzory inicializovane, poloz robota, spustam test motorov...&amp;quot;);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void stop()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int x = 0;&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  fwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  bwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  left();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  right();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  stop();&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
      Serial.print(x++);&lt;br /&gt;
      Serial.print(&amp;quot;: &amp;quot;);&lt;br /&gt;
      Serial.print(meracLavy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracLavy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPredny.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPredny.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPravy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPravy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);      &lt;br /&gt;
      &lt;br /&gt;
      imu::Vector&amp;lt;3&amp;gt; euler = orientacia.getVector(Adafruit_BNO055::VECTOR_EULER);&lt;br /&gt;
      Serial.print(&amp;quot;,   yaw: &amp;quot;); Serial.print(euler.x());&lt;br /&gt;
      Serial.print(&amp;quot;, pitch: &amp;quot;); Serial.print(euler.y());&lt;br /&gt;
      Serial.print(&amp;quot;, roll: &amp;quot;); Serial.println(euler.z());&lt;br /&gt;
      delay(100);&lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1071</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1071"/>
		<updated>2026-08-31T06:33:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot-Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program zapína motory postupne po jednom, aby ste si prípadne mohli ešte opraviť ich otočenie voči modrej pripojenej súčiastke. Robot by pri 90-stupňových polohách motorov mal vyzerať ako na videu po zapnutí.&lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
Najskôr naprogramujte základné riadenie robota pomocou joysticku. Joystick má len dva stupne voľnosti, preto je vhodné nejakým spôsobom prepínať medzi zvolenou dvojicou kĺbov, ktoré pomocou neho práve riadime. My sme si zvolili prepínanie prvým dotykovým sennzorom a signalizáciu pommocou farebnej LED. &lt;br /&gt;
&lt;br /&gt;
# Naklonenie joysticku do jednej alebo druhej strany začne otáčať motorom v príslušnom kĺbe do jednej alebo druhej strany;&lt;br /&gt;
# Vrátenie joysticku do neutrálnej polohy uvedie rameno do pokoja na tom mieste, kde sa práve nachádza;&lt;br /&gt;
# Dotyk (a následné pustenie) prvého dotykového senzora vymení dvojicu kĺbov, ktoré sa riadia joystickom.&lt;br /&gt;
&lt;br /&gt;
Všimnite si, že hodnoty z joysticku sa menia pomerne rýchlo už pri jeho jemnom naklonení.&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* nájdite hraničné hodnoty pre jednotlivé servá, za ktorými ďalší pohyb nie je mechanicky možný&lt;br /&gt;
* zabezpečte podmienkami v programe, že sa servo za tieto hranice nedostane (ideálne by hranice mohli byť flexibilné vzhľadom na polohu v ktorej sa rameno nachádza)&lt;br /&gt;
* pri rôzne prudkom naklonení joysticku sa motory budú otáčať rôznou rýchlosťou a farebná LED bude signalizovať aj smer aj rýchlosť otáčania&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
Program z predchádzajúceho cvičenia vylepšíme tak, že počas riadenia ramena joystickom bude možné zapnúť a zastaviť nahrávanie jeho pohybov a neskôr túto zapamätanú postupnosť znovu autonómne zopakovať.&lt;br /&gt;
&lt;br /&gt;
# program najskôr funguje rovnako ako program v predchádzajúcej úlohe&lt;br /&gt;
# po stlačení (a pustení) druhého dotykového senzora sa zapne nahrávanie (signalizované farebnou LED)&lt;br /&gt;
# od tohoto okamihu sa po každom kliknutí tlačidlom joysticku uloží aktuálna poloha všetkých 4 motorov do zoznamu zaznamenaných polôh&lt;br /&gt;
# poloha sa zaznamenáva ako uhol serva - okrem zaḱladne, pre ktorú sa zaznamenávajú jednotlivé časy potrebné na otočenie aj bez kliknutí vždy po zmene rýchlosti otáčania ramena (alebo zastavení)&lt;br /&gt;
# po opätovnom stlačení druhého dotykového senzora sa nahrávanie ukončí (záznam ostáva v pamäti) a robota je zasa možné riadiť bez ukladania jeho polôh&lt;br /&gt;
# po kliknutí na tlačidlo joysticku sa zapamätaný záznam v pomalej rýchlosti (ale plynule, bez prestávok) prehrá - jednotlivé konfigurácie ramena sa postupne dosahujú pomocou plynulých pohybov motorov&lt;br /&gt;
# po dokončení prehrávania záznamu je ho možné prehrať znovu, riadiť servo pomocou joysticku, alebo program pokračuje 2. krokom pre nový záznam pohybu &lt;br /&gt;
&lt;br /&gt;
Ukážka možného riešenia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* pridajte možnosť &amp;quot;exportu&amp;quot; a &amp;quot;importu&amp;quot; zadanej postupnosti pohybov, export vypíše na výstup sériového portu v takom istom formáte ako ho import dokáže načítať - takýmto spôsobom si môžeme skopírovať z konzoly vyexportované postupnosti, uložiť si ich do textového súboru na počítači a neskôr ich odtiaľ vložiť do konzoly po zvolení funkcie import a znovu vykonať&lt;br /&gt;
* umožnite nastaviť rýchlosť pohybov pri opakovaní naučenej postupnosti&lt;br /&gt;
* vymeňte continuous servo za obyčajné servo - rameno bude mať síce menší pracovný priestor, ale otáčanie základne bude riadené presne  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
Táto úloha je priestor pre Vašu tvorivosť. Výsledkom by malo byť malé demo, v ktorom rameno autonómne vykoná niekoľko krokov, pričom bude manipulovať/prenášať nejaké predmety, nielen sa pohybovať na rôzne miesto v pracovnom priestore.&lt;br /&gt;
&lt;br /&gt;
Inšpirovať sa môžete aj týmto videom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo - počas vykonávania pohybu dotyk senzora spôsobí okamžité zastavenie&lt;br /&gt;
* opakovateľnosť - postupnosť skončí na rovnakom mieste ako začína, takže sa dá spustiť niekoľkokrát za sebou bez zmeny polohy ramena medzi opakovanými štartami&lt;br /&gt;
* možnosť riadiť rameno pred spustením dema/po jeho zastavení joystickom ako v predchádzajúcich úlohách, demo sa môže štartovať napr. kliknutím joystickom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude rameno robiť &amp;quot;užitočnú&amp;quot; prácu podľa aktuálnych požiadaviek operátora. V jeho pracovnom priestore zadefinujeme niekoľko pozícií, označíme ich napr. A, B, C, D a naprogramujeme presuny ramena medzi týmito pozíciami. Pokyny budeme postupne zadávať cez sériovú linku jeden za druhým a rameno ich bude vykonávať,  napr. prelož predmet z miesta A na miesto C. &lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* niektoré miesta môžu byť nielen priamo dole na stole, ale vyššie, pričom na tom mieste bude košík/krabička, nad ktorou rameno predmet uvoľní, aby spadol do košíka&lt;br /&gt;
* pridajte možnosť &amp;quot;resetnúť&amp;quot;/&amp;quot;inicializovať&amp;quot; polohu základne na dohodnutom mieste&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pomocou nejakého príkazu zadaného pred samotnou požiadavkou na presun&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota&lt;br /&gt;
* umožnite operátorovi interaktívne zadať požiadavku na zopakovanie uchopenia predmetu, ak by sa náhodou nepodarilo na prvý raz&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
Vylepšíme predchádzajúci program tak, aby namiesto jedného pokynu umožnil zadať postupnosť viacerých pokynov, ktoré potom naraz jeden po druhom vykoná - napr. prelož predmet z A na C, potom iný z D na A, potom ďalší z B na D, atď.&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo na zastavenie postupnosti v ktoromkoľvek okamihu&lt;br /&gt;
* korekcia pohybu základne - pomocou druhého tlačidla je kedykoľvek možné zastaviť vykonávanie pohybu a otočiť joystickom rameno, aby sme ho nastavili do požadovanej polohy pre nasledujúce cieľové miesto, ak rameno práve vykonáva nejaký pohyb, alebo do &amp;quot;nulovej&amp;quot; polohy, ak pohyb práve nevykonáva&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota pre každý pohyb v postupnosti zvlášť&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pre každý prenášaný predmet zvlášť&lt;br /&gt;
* umožnite používateľovi zadefinovať postupnosti pohybov ako makrá, ktoré sa potom dajú vyvolať jedným znakom prijatým cez sériovú linku, alebo dotykovým senzorom, či joystickom&lt;br /&gt;
* upravte program tak, aby mal vedomosť o tom, ktoré miesta sú obsadené predmetmi a dovolí vykonať presun iba na prázdne miesto, v opačnom prípade sa vykonávanie sekvencie preruší&lt;br /&gt;
* vytvorte plánovací program, do ktorého sa zadá počiatočná a cieľová konfigurácia, program potom naplánuje postupnosť krokov a aj ich vykoná, napr: ŠTART: A-zelený, B-modrý, C-červený, D-prázdne miesto, CIEĽ: A-modrý, B-červený, C-zelený, D-prázdne miesto.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
V robotických aplikáciách nás často zaujíma momentálna poloha riadeného koncového člena v priestore - v našom prípade uzatvárateľnej ruky namontovanej na konci ramena. Program, ktorý riadi rameno v každom okamihu pozná uhly, podľa ktorých sú otočené jednotlivé stupne voľnosti - v tejto úlohe nás bude zaujímať iba poloha ruky v rovine ramena. Rovina ramena sa celá otáča pomocou základne, ale keďže ju máme riadenú pomocou continuous serva, určovanie tejto polohy by bolo priveľmi nepresné. Uvažujme rovinu ramena - súradnica &#039;&#039;x&#039;&#039; bude určovať ako ďaleko od okraja podstavca pred robotom sa ruka nachádza a súradnica &#039;&#039;y&#039;&#039; bude určovať v akej výške ruka je. Vstupom do výpočtu sú teda dva uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, určujúce do akého uhla sú otočené servá umiestnené nad otočnou základňou a výstupom bude poloha ramena &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039; (môžeme uvažovať napr. referenčný bod na začiatku uchopovacieho priestoru ramena - čiže krajná poloha uchopovaného predmetu. Ak sa na rameno pozrieme z boku, vidíme, že má topológiu uzavretého 5-uhoľníka, pričom jedna strana je predĺžená a na jej konci je upevnené rameno. Pomocou stredoškolskej matematiky vieme odvodiť vzorčeky pre &#039;&#039;x&#039;&#039; a &#039;&#039;y&#039;&#039; na základne vstupného &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, keď poznáme dĺžky jednotlivých strán päťuholníka (pripomíname, že vzdialenosť susedných dier na dieloch stavebnice je 8 mm).   &lt;br /&gt;
&lt;br /&gt;
[[Image:topologia_ramena.png]]&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napr. nejak takto (terminál zobrazuje informáciu vo formáte [&#039;&#039;alfa&#039;&#039;,&#039;&#039;beta&#039;&#039;] -&amp;gt; [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;]. Robota riadime priamo joystickom a výpočet neustále prepočítava polohu ruky v rovine ramena.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, bude priamočiare upraviť výpočet tak, aby určoval polohu v priestore [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;,&#039;&#039;z&#039;&#039;] nielen v rovine&lt;br /&gt;
* teoretický výpočet sa vždy bude trochu líšiť od skutočnej polohy ramena, pretože v každom voľnom kĺbe je vôľa (a teda chyba) približne rádu milimetrov - a tá sa cez mechanickú konštrukciu znásobuje a tiež preto, že motory sa neotáčajú dokonale presne a lineárne, zmerajte veľkosť tejto chyby v rôznych polohách ramena&lt;br /&gt;
* pokúste sa vymyslieť nejaký spôsob kalibrácie/korekcie, ktorý zlepší výslednú presnosť &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná/inverzná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
Ešte užitočnejší výpočet robí presný opak - pre zadanú cieľovú pozíciu ruky [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] nájde uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, také, že ak servá nastavíme do uhlov &#039;&#039;alfa&#039;&#039; a &#039;&#039;beta&#039;&#039;, tak sa ruka dostane na požadované súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] v rovine ramena. Vytvorte program, ktorý dovolí cez sériový port zadať ľubovoľné dostupné súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;], vypočíta uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039; a ruku presunie na požadovanú pozíciu, alebo oznámi, že sa to nedá, ak je poloha mimo mechanicky dostupný rozsah. &lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
* urobte test - pre veľa generovaných pozícií alfa, beta najskôr pomocou doprednej kinematiky vypočítajte [x,y] a potom cez inverznú kinematiku vypočítajte alfa, beta - porovnajte, či ste dostali rovnaké hodnoty a ak nie, aká veľká bola chyba&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, umožnite zadať priestorové súradnice [x,y,z], na ktoré sa ruka presunie&lt;br /&gt;
* doplňte inverznú kinematiku do programu riadeného manipulátora - cieľová poloha sa bude dať zadať nielen ako A,B,C,D ale priamo súradnicami&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.4. Micromouse ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;ymOgkeYMo4w&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1070</id>
		<title>Basic robot - Micro-mouse</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1070"/>
		<updated>2026-08-30T19:35:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ďalší robot, ktorého sme pre vás pripravili je Micro mouse (odvar z myši v bludisku).&lt;br /&gt;
Tento robotik po zlozeni bude vlozeny do bludiska, v ktorom sa bude moct pohybovat vdaka svojim trom laser distance senzorom primontovane na troch stranach. Pre to aby mys isla rovno zaistuje gyroskop a jednoduchy algoritmus na usmernenie robotika.&lt;br /&gt;
Dalej budeme musiet navrhnut algoritmus ako sa bude pohybovat.&lt;br /&gt;
Bude to narocnejsie na programovanie, ale za to sa viacej naucite nie len o stavebnici ale o tom co su algoritmi.&lt;br /&gt;
Samotny algoritmus bude vysvetleny v sekcii [[SW Setup]], ale najprv sa pustme do stavania.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie myši v bludisku |  Návod na skladanie myši v bludisku]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť činnosť testovacieho programu - najskôr inicializuje všetky tri IR senzory a IMU senzor - ktorý sa pri štarte kalibruje, vtedy je potrebné robotom čo najviac pootáčať do všetkých smerov. Po úspešnej inicializácii senzorov vyskúša krátke jednoduché pohyby 360-stupňovými servami a napokon donekonečna zobrazuje aktuálne prečítané hodnoty zo senzorov: vzdialenosť vľavo, vpred a vpravo a orientácia robota: yaw - otočenie okolo zvislej osi, pitch - otočenie okolo vodorovnej osi pozdĺežnej v smere jazdy robota a roll - otočenie okolo vodorovnej osi kolmej na smer jazdy robota. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;6ydBQDTeRiM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý test na overenie, že obe servá, všetky tri laserové senzory a IMU senzor fungujú tak, ako majú. Ak adresa pre IMU 0x29 nefunguje, vyskúšajte 0x28.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;VL53L0X.h&amp;gt;    //VL553L0X by Pololu   (testovane s verziou 1.3.1)&lt;br /&gt;
#include &amp;lt;Adafruit_BNO055.h&amp;gt;  // testovane s verziou 1.6.4&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
// GPIO piny podla manualu &lt;br /&gt;
const int PIN_SERVO_LAVE    = 1;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 2;&lt;br /&gt;
const int PIN_XSHUT_LAVY    = 8;&lt;br /&gt;
const int PIN_XSHUT_PRAVY   = 12;&lt;br /&gt;
const int PIN_XSHUT_PREDNY  = 13;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP        = 93;&lt;br /&gt;
&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
&lt;br /&gt;
VL53L0X meracLavy;&lt;br /&gt;
VL53L0X meracPravy;&lt;br /&gt;
VL53L0X meracPredny;&lt;br /&gt;
&lt;br /&gt;
const int ADRESA_LAVY = 0x34;&lt;br /&gt;
const int ADRESA_PRAVY = 0x36;&lt;br /&gt;
const int ADRESA_PREDNY = 0x38;&lt;br /&gt;
&lt;br /&gt;
const int BNO055_ADRESA = 0x29;&lt;br /&gt;
&lt;br /&gt;
Adafruit_BNO055 orientacia(55, BNO055_ADRESA, &amp;amp;Wire);&lt;br /&gt;
&lt;br /&gt;
void zablikaj()&lt;br /&gt;
{&lt;br /&gt;
  for (int i = 0; i &amp;lt; 7; i++)&lt;br /&gt;
  {&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(30, 30, 30));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  pinMode(PIN_XSHUT_LAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_LAVY, HIGH);  // zacneme konfigurovat lavy&lt;br /&gt;
  pinMode(PIN_XSHUT_PRAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, LOW);&lt;br /&gt;
  pinMode(PIN_XSHUT_PREDNY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, LOW);&lt;br /&gt;
&lt;br /&gt;
  servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
  servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
&lt;br /&gt;
  zablikaj();  // pre istotu cakame na seriovy port v arduino IDE&lt;br /&gt;
&lt;br /&gt;
  Wire1.setSDA(6);  // pre istotu nastavenie default pinov I2C1&lt;br /&gt;
  Wire1.setSCL(7);  &lt;br /&gt;
  Wire1.begin();&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme prvy a nastavime mu adresu&lt;br /&gt;
  meracLavy.setBus(&amp;amp;Wire1);&lt;br /&gt;
&lt;br /&gt;
  if (!meracLavy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Lavy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracLavy.setAddress(ADRESA_LAVY);&lt;br /&gt;
  meracLavy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Lavy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, HIGH);   // spristupnime pravy na konfiguraciu (lavy uz nekoliduje, je na inej adrese)&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme druhy a nastavime mu adresu&lt;br /&gt;
  meracPravy.setBus(&amp;amp;Wire1);&lt;br /&gt;
  &lt;br /&gt;
  if (!meracPravy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Pravy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracPravy.setAddress(ADRESA_PRAVY);&lt;br /&gt;
  meracPravy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Pravy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, HIGH);   // napokon spristupnime predny na konfiguraciu (ostatne dva uz nekoliduju)&lt;br /&gt;
  meracPredny.setBus(&amp;amp;Wire1);&lt;br /&gt;
  if (!meracPredny.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Predny senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  meracPredny.setAddress(ADRESA_PREDNY);&lt;br /&gt;
  meracPredny.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Predny OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  delay(100);&lt;br /&gt;
  // zacneme merat na vsetkych troch senzoroch&lt;br /&gt;
  meracLavy.startContinuous();&lt;br /&gt;
  meracPravy.startContinuous();&lt;br /&gt;
  meracPredny.startContinuous();&lt;br /&gt;
&lt;br /&gt;
  Wire.setSDA(4);&lt;br /&gt;
  Wire.setSCL(5);&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
&lt;br /&gt;
  if (!orientacia.begin())&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;Nepodarilo sa inicializovat IMU senzor.&amp;quot;);&lt;br /&gt;
    while (1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  uint8_t system, gyro, accel, mag;&lt;br /&gt;
  do {&lt;br /&gt;
    orientacia.getCalibration(&amp;amp;system, &amp;amp;gyro, &amp;amp;accel, &amp;amp;mag);&lt;br /&gt;
    if (system &amp;lt; 1) {&lt;br /&gt;
      Serial.println(&amp;quot;Kalibracia IMU...&amp;quot;);&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
  } while (system &amp;lt; 1);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Senzory inicializovane, poloz robota, spustam test motorov...&amp;quot;);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void stop()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int x = 0;&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  fwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  bwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  left();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  right();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  stop();&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
      Serial.print(x++);&lt;br /&gt;
      Serial.print(&amp;quot;: &amp;quot;);&lt;br /&gt;
      Serial.print(meracLavy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracLavy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPredny.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPredny.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPravy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPravy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);      &lt;br /&gt;
      &lt;br /&gt;
      imu::Vector&amp;lt;3&amp;gt; euler = orientacia.getVector(Adafruit_BNO055::VECTOR_EULER);&lt;br /&gt;
      Serial.print(&amp;quot;,   yaw: &amp;quot;); Serial.print(euler.x());&lt;br /&gt;
      Serial.print(&amp;quot;, pitch: &amp;quot;); Serial.print(euler.y());&lt;br /&gt;
      Serial.print(&amp;quot;, roll: &amp;quot;); Serial.println(euler.z());&lt;br /&gt;
      delay(100);&lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1069</id>
		<title>Basic robot - Micro-mouse</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1069"/>
		<updated>2026-08-30T19:31:20Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ďalší robot, ktorého sme pre vás pripravili je Micro mouse (odvar z myši v bludisku).&lt;br /&gt;
Tento robotik po zlozeni bude vlozeny do bludiska, v ktorom sa bude moct pohybovat vdaka svojim trom laser distance senzorom primontovane na troch stranach. Pre to aby mys isla rovno zaistuje gyroskop a jednoduchy algoritmus na usmernenie robotika.&lt;br /&gt;
Dalej budeme musiet navrhnut algoritmus ako sa bude pohybovat.&lt;br /&gt;
Bude to narocnejsie na programovanie, ale za to sa viacej naucite nie len o stavebnici ale o tom co su algoritmi.&lt;br /&gt;
Samotny algoritmus bude vysvetleny v sekcii [[SW Setup]], ale najprv sa pustme do stavania.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie myši v bludisku |  Návod na skladanie myši v bludisku]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť činnosť testovacieho programu - najskôr inicializuje všetky tri IR senzory a IMU senzor - ktorý sa pri štarte kalibruje, vtedy je potrebné robotom čo najviac pootáčať do všetkých smerov. Po úspešnej inicializácii senzorov vyskúša krátke jednoduché pohyby 360-stupňovými servami a napokon donekonečna zobrazuje aktuálne prečítané hodnoty zo senzorov: vzdialenosť vľavo, vpred a vpravo a orientácia robota: yaw - otočenie okolo zvislej osi, pitch - otočenie okolo vodorovnej osi pozdĺežnej v smere jazdy robota a roll - otočenie okolo vodorovnej osi kolmej na smer jazdy robota. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;6ydBQDTeRiM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý test na overenie, že obe servá, všetky tri laserové senzory a IMU senzor fungujú tak, ako majú. Ak adresa pre IMU 0x29 nefunguje, vyskúšajte 0x28.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;VL53L0X.h&amp;gt;    //VL553L0X by Pololu   (testovane s verziou 1.3.1)&lt;br /&gt;
#include &amp;lt;Adafruit_BNO055.h&amp;gt;  // testovane s verziou 1.6.4&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
// GPIO piny podla manualu &lt;br /&gt;
const int PIN_SERVO_LAVE    = 1;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 2;&lt;br /&gt;
const int PIN_XSHUT_LAVY    = 8;&lt;br /&gt;
const int PIN_XSHUT_PRAVY   = 12;&lt;br /&gt;
const int PIN_XSHUT_PREDNY  = 13;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP        = 93;&lt;br /&gt;
&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
&lt;br /&gt;
VL53L0X meracLavy;&lt;br /&gt;
VL53L0X meracPravy;&lt;br /&gt;
VL53L0X meracPredny;&lt;br /&gt;
&lt;br /&gt;
const int ADRESA_LAVY = 0x34;&lt;br /&gt;
const int ADRESA_PRAVY = 0x36;&lt;br /&gt;
const int ADRESA_PREDNY = 0x38;&lt;br /&gt;
&lt;br /&gt;
const int BNO055_ADRESA = 0x29;&lt;br /&gt;
&lt;br /&gt;
Adafruit_BNO055 orientacia(55, BNO055_ADRESA, &amp;amp;Wire);&lt;br /&gt;
&lt;br /&gt;
void zablikaj()&lt;br /&gt;
{&lt;br /&gt;
  for (int i = 0; i &amp;lt; 7; i++)&lt;br /&gt;
  {&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(30, 30, 30));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  pinMode(PIN_XSHUT_LAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_LAVY, HIGH);  // zacneme konfigurovat lavy&lt;br /&gt;
  pinMode(PIN_XSHUT_PRAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, LOW);&lt;br /&gt;
  pinMode(PIN_XSHUT_PREDNY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, LOW);&lt;br /&gt;
&lt;br /&gt;
  servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
  servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
&lt;br /&gt;
  zablikaj();  // pre istotu cakame na seriovy port v arduino IDE&lt;br /&gt;
&lt;br /&gt;
  Wire1.setSDA(6);  // pre istotu nastavenie default pinov I2C1&lt;br /&gt;
  Wire1.setSCL(7);  &lt;br /&gt;
  Wire1.begin();&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme prvy a nastavime mu adresu&lt;br /&gt;
  meracLavy.setBus(&amp;amp;Wire1);&lt;br /&gt;
&lt;br /&gt;
  if (!meracLavy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Lavy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracLavy.setAddress(ADRESA_LAVY);&lt;br /&gt;
  meracLavy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Lavy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, HIGH);   // spristupnime pravy na konfiguraciu (lavy uz nekoliduje, je na inej adrese)&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme druhy a nastavime mu adresu&lt;br /&gt;
  meracPravy.setBus(&amp;amp;Wire1);&lt;br /&gt;
  &lt;br /&gt;
  if (!meracPravy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Pravy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracPravy.setAddress(ADRESA_PRAVY);&lt;br /&gt;
  meracPravy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Pravy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, HIGH);   // napokon spristupnime predny na konfiguraciu (ostatne dva uz nekoliduju)&lt;br /&gt;
  meracPredny.setBus(&amp;amp;Wire1);&lt;br /&gt;
  if (!meracPredny.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Predny senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  meracPredny.setAddress(ADRESA_PREDNY);&lt;br /&gt;
  meracPredny.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Predny OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  delay(100);&lt;br /&gt;
  // zacneme merat na vsetkych troch senzoroch&lt;br /&gt;
  meracLavy.startContinuous();&lt;br /&gt;
  meracPravy.startContinuous();&lt;br /&gt;
  meracPredny.startContinuous();&lt;br /&gt;
&lt;br /&gt;
  Wire.setSDA(4);&lt;br /&gt;
  Wire.setSCL(5);&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
&lt;br /&gt;
  if (!orientacia.begin())&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;Nepodarilo sa inicializovat IMU senzor.&amp;quot;);&lt;br /&gt;
    while (1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  uint8_t system, gyro, accel, mag;&lt;br /&gt;
  do {&lt;br /&gt;
    orientacia.getCalibration(&amp;amp;system, &amp;amp;gyro, &amp;amp;accel, &amp;amp;mag);&lt;br /&gt;
    if (system &amp;lt; 1) {&lt;br /&gt;
      Serial.println(&amp;quot;Kalibracia IMU...&amp;quot;);&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
  } while (system &amp;lt; 1);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Senzory inicializovane, poloz robota, spustam test motorov...&amp;quot;);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void stop()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int x = 0;&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  fwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  bwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  left();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  right();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  stop();&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
      Serial.print(x++);&lt;br /&gt;
      Serial.print(&amp;quot;: &amp;quot;);&lt;br /&gt;
      Serial.print(meracLavy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracLavy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPredny.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPredny.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPravy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPravy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);      &lt;br /&gt;
      &lt;br /&gt;
      imu::Vector&amp;lt;3&amp;gt; euler = orientacia.getVector(Adafruit_BNO055::VECTOR_EULER);&lt;br /&gt;
      Serial.print(&amp;quot;,   yaw: &amp;quot;); Serial.print(euler.x());&lt;br /&gt;
      Serial.print(&amp;quot;, pitch: &amp;quot;); Serial.print(euler.y());&lt;br /&gt;
      Serial.print(&amp;quot;, roll: &amp;quot;); Serial.println(euler.z());&lt;br /&gt;
      delay(100);&lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1068</id>
		<title>Basic robot - Micro-mouse</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Micro-mouse&amp;diff=1068"/>
		<updated>2026-08-30T19:20:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ďalší robot, ktorého sme pre vás pripravili je Micro mouse (odvar z myši v bludisku).&lt;br /&gt;
Tento robotik po zlozeni bude vlozeny do bludiska, v ktorom sa bude moct pohybovat vdaka svojim trom laser distance senzorom primontovane na troch stranach. Pre to aby mys isla rovno zaistuje gyroskop a jednoduchy algoritmus na usmernenie robotika.&lt;br /&gt;
Dalej budeme musiet navrhnut algoritmus ako sa bude pohybovat.&lt;br /&gt;
Bude to narocnejsie na programovanie, ale za to sa viacej naucite nie len o stavebnici ale o tom co su algoritmi.&lt;br /&gt;
Samotny algoritmus bude vysvetleny v sekcii [[SW Setup]], ale najprv sa pustme do stavania.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie myši v bludisku |  Návod na skladanie myši v bludisku]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť činnosť testovacieho programu - najskôr inicializuje všetky tri IR senzory a IMU senzor - ktorý sa pri štarte kalibruje, vtedy je potrebné robotom čo najviac pootáčať do všetkých smerov. Po úspešnej inicializácii senzorov vyskúša krátke jednoduché pohyby 360-stupňovými servami a napokon donekonečna zobrazuje aktuálne prečítané hodnoty zo senzorov: vzdialenosť vľavo, vpred a vpravo a orientácia robota: yaw - otočenie okolo zvislej osi, pitch - otočenie okolo vodorovnej osi pozdĺežnej v smere jazdy robota a roll - otočenie okolo vodorovnej osi kolmej na smer jazdy robota. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fgdgdgf&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý test na overenie, že obe servá, všetky tri laserové senzory a IMU senzor fungujú tak, ako majú. Ak adresa pre IMU 0x29 nefunguje, vyskúšajte 0x28.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;VL53L0X.h&amp;gt;    //VL553L0X by Pololu   (testovane s verziou 1.3.1)&lt;br /&gt;
#include &amp;lt;Adafruit_BNO055.h&amp;gt;  // testovane s verziou 1.6.4&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
// GPIO piny podla manualu &lt;br /&gt;
const int PIN_SERVO_LAVE    = 1;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 2;&lt;br /&gt;
const int PIN_XSHUT_LAVY    = 8;&lt;br /&gt;
const int PIN_XSHUT_PRAVY   = 12;&lt;br /&gt;
const int PIN_XSHUT_PREDNY  = 13;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP        = 93;&lt;br /&gt;
&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
&lt;br /&gt;
VL53L0X meracLavy;&lt;br /&gt;
VL53L0X meracPravy;&lt;br /&gt;
VL53L0X meracPredny;&lt;br /&gt;
&lt;br /&gt;
const int ADRESA_LAVY = 0x34;&lt;br /&gt;
const int ADRESA_PRAVY = 0x36;&lt;br /&gt;
const int ADRESA_PREDNY = 0x38;&lt;br /&gt;
&lt;br /&gt;
const int BNO055_ADRESA = 0x29;&lt;br /&gt;
&lt;br /&gt;
Adafruit_BNO055 orientacia(55, BNO055_ADRESA, &amp;amp;Wire);&lt;br /&gt;
&lt;br /&gt;
void zablikaj()&lt;br /&gt;
{&lt;br /&gt;
  for (int i = 0; i &amp;lt; 7; i++)&lt;br /&gt;
  {&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(30, 30, 30));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  pinMode(PIN_XSHUT_LAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_LAVY, HIGH);  // zacneme konfigurovat lavy&lt;br /&gt;
  pinMode(PIN_XSHUT_PRAVY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, LOW);&lt;br /&gt;
  pinMode(PIN_XSHUT_PREDNY, OUTPUT);&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, LOW);&lt;br /&gt;
&lt;br /&gt;
  servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
  servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
&lt;br /&gt;
  zablikaj();  // pre istotu cakame na seriovy port v arduino IDE&lt;br /&gt;
&lt;br /&gt;
  Wire1.setSDA(6);  // pre istotu nastavenie default pinov I2C1&lt;br /&gt;
  Wire1.setSCL(7);  &lt;br /&gt;
  Wire1.begin();&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme prvy a nastavime mu adresu&lt;br /&gt;
  meracLavy.setBus(&amp;amp;Wire1);&lt;br /&gt;
&lt;br /&gt;
  if (!meracLavy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Lavy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracLavy.setAddress(ADRESA_LAVY);&lt;br /&gt;
  meracLavy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Lavy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PRAVY, HIGH);   // spristupnime pravy na konfiguraciu (lavy uz nekoliduje, je na inej adrese)&lt;br /&gt;
  &lt;br /&gt;
  // inicializujeme druhy a nastavime mu adresu&lt;br /&gt;
  meracPravy.setBus(&amp;amp;Wire1);&lt;br /&gt;
  &lt;br /&gt;
  if (!meracPravy.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Pravy senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
  meracPravy.setAddress(ADRESA_PRAVY);&lt;br /&gt;
  meracPravy.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Pravy OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(PIN_XSHUT_PREDNY, HIGH);   // napokon spristupnime predny na konfiguraciu (ostatne dva uz nekoliduju)&lt;br /&gt;
  meracPredny.setBus(&amp;amp;Wire1);&lt;br /&gt;
  if (!meracPredny.init()) {&lt;br /&gt;
    Serial.println(&amp;quot;Predny senzor nenajdeny!&amp;quot;);&lt;br /&gt;
    while (1);  // zastav program&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  meracPredny.setAddress(ADRESA_PREDNY);&lt;br /&gt;
  meracPredny.setTimeout(500);&lt;br /&gt;
  Serial.println(&amp;quot;Predny OK&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  delay(100);&lt;br /&gt;
  // zacneme merat na vsetkych troch senzoroch&lt;br /&gt;
  meracLavy.startContinuous();&lt;br /&gt;
  meracPravy.startContinuous();&lt;br /&gt;
  meracPredny.startContinuous();&lt;br /&gt;
&lt;br /&gt;
  Wire.setSDA(4);&lt;br /&gt;
  Wire.setSCL(5);&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
&lt;br /&gt;
  if (!orientacia.begin())&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;Nepodarilo sa inicializovat IMU senzor.&amp;quot;);&lt;br /&gt;
    while (1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  uint8_t system, gyro, accel, mag;&lt;br /&gt;
  do {&lt;br /&gt;
    orientacia.getCalibration(&amp;amp;system, &amp;amp;gyro, &amp;amp;accel, &amp;amp;mag);&lt;br /&gt;
    if (system &amp;lt; 1) {&lt;br /&gt;
      Serial.println(&amp;quot;Kalibracia IMU...&amp;quot;);&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
  } while (system &amp;lt; 1);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Senzory inicializovane, poloz robota, spustam test motorov...&amp;quot;);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bwd()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void stop()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left()&lt;br /&gt;
{&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int x = 0;&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  fwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  bwd();&lt;br /&gt;
  delay(700);&lt;br /&gt;
  left();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  right();&lt;br /&gt;
  delay(500);&lt;br /&gt;
  stop();&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
      Serial.print(x++);&lt;br /&gt;
      Serial.print(&amp;quot;: &amp;quot;);&lt;br /&gt;
      Serial.print(meracLavy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracLavy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPredny.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPredny.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
      Serial.print(meracPravy.readRangeContinuousMillimeters());&lt;br /&gt;
      if (meracPravy.timeoutOccurred()) Serial.print(&amp;quot;TIMEOUT&amp;quot;);      &lt;br /&gt;
      &lt;br /&gt;
      imu::Vector&amp;lt;3&amp;gt; euler = orientacia.getVector(Adafruit_BNO055::VECTOR_EULER);&lt;br /&gt;
      Serial.print(&amp;quot;,   yaw: &amp;quot;); Serial.print(euler.x());&lt;br /&gt;
      Serial.print(&amp;quot;, pitch: &amp;quot;); Serial.print(euler.y());&lt;br /&gt;
      Serial.print(&amp;quot;, roll: &amp;quot;); Serial.println(euler.z());&lt;br /&gt;
      delay(100);&lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_my%C5%A1i_v_bludisku&amp;diff=1059</id>
		<title>Návod na poskladanie myši v bludisku</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_my%C5%A1i_v_bludisku&amp;diff=1059"/>
		<updated>2026-08-30T08:29:42Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania myši v bludisku===&lt;br /&gt;
&lt;br /&gt;
Toto je manuál na to, aby ste si mohli jednoducho poskladať svoju robotickú myš v bludisku.&lt;br /&gt;
&lt;br /&gt;
Úplné základy montáže sú vysvetlené v sekcii [[3D models]], ale detaily budú vysvetlené v texte pod obrázkami.&lt;br /&gt;
&lt;br /&gt;
Pôjdeme krok po kroku a postupne sa vaša myš bude formovať.&lt;br /&gt;
&lt;br /&gt;
Pre začiatok si najprv prichystáme všetky komponenty a súčiastky, ktoré budeme potrebovať.&lt;br /&gt;
&lt;br /&gt;
Okrem nich sa vám zíde aj menšie nástroje, napríklad kliešte a skrutkovač, na uťahovanie matíc na ťažšie dostupných miestach.&lt;br /&gt;
&lt;br /&gt;
Neponáhľajte sa a pri každom kroku si najprv pozrite priložené obrázky – ušetríte si tak čas aj prípadné komplikácie.&lt;br /&gt;
&lt;br /&gt;
V tomto robotovi budete musieť aj niečo jednoduché napájkovať. Budete informovaní v danom kroku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| Čierne || 2x1-U || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | Biele || 1x2-1x2-L || 4&lt;br /&gt;
|-&lt;br /&gt;
| 3x1-3x1-L || 3&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-2x1-L || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x5 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na guličku || 1&lt;br /&gt;
|-&lt;br /&gt;
| Modré ||  Servo YZ1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Červené || Držiak káblov || 1&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na laserový senzor || 3&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na gyroskop || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Mechanické súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~20&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~20&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~40&lt;br /&gt;
|-&lt;br /&gt;
| Podporná gulička || 1&lt;br /&gt;
|-&lt;br /&gt;
| Hrebeň || 2x4&lt;br /&gt;
|-&lt;br /&gt;
| Kolesá s gumovou podrážkou || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 2&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Laserový senzor || 3&lt;br /&gt;
|-&lt;br /&gt;
| Gyroskop || 1&lt;br /&gt;
|-&lt;br /&gt;
| Napájanie batériek || 1&lt;br /&gt;
|-&lt;br /&gt;
| Krátke káble || 12x2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:MicroMouseManualImage1.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage2.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage3.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage4.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage5.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage6.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage7.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage8.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage9.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage10.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V prvom kroku si prichystáme motorčeky s kolesami pre riadenie. Modré krabičky sa jednoducho dajú spojiť s L-profilmi tak, že sa vloží matica zo spodu krabičky do priehradky. Následne sa napolohuje tak, aby sa do matice naskrutkovala skrutka, ktorá spojí L-profil s krabičkou, ako je uvedené na obrázku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage12.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage13.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage14.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage15.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V druhom kroku si dávajte pozor na otočenie RP2350 modulu a napájacieho modulu. Najprv si ich napolohujte a spojte s prvým motorčekom. Následne pripojte druhý motorček. Posledný obrázok je iba náhľad zo strany RP2350 modulu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage17.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage19.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage18.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage20.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage21.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tretí krok odporúčame pridržať si matice prstom, jemne priskrutkovať, nastaviť komponenty tak, ako sú na obrázku, a následne silnejšie priskrutkovať. Otočenie laserových modulov je voliteľné, ale odporúčame ho tak, ako je na obrázku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage23.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage24.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage25.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage26.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage28.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage29.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage30.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Takisto aj v štvrtom kroku môže byť laserový modul otočený o 180°, ale odporúčame, aby snímač (čierna škatuľka) bol dole. Pripevnenie k telu robota musí byť presne ako na obrázku, inak by bol predok robota vyvýšený a predný snímač by nemusel vidieť objekty pod robotom.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage32.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage33.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage34.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage35.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage36.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage37.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage38.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre jednoduchšie uchytenie na robota vyberte dlhšie skrutky a spoj 1x2, ktorý bude v tomto prípade slúžiť ako podložka na uchytenie. Otočenie skrutiek je voliteľné, vyberte si, ako je vám vhodnejšie, ale odporúčame tak, ako je na obrázku. Gyroskop by mal byť vývodom (pinmi/káblami) nahor, aby sa vedel zapojiť do RP2350.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage39.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage40.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage41.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Jednoduché uchytenie káblov pre servo motorčeky.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| Ľavé servo || GP1&lt;br /&gt;
|-&lt;br /&gt;
| Pravé servo || GP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage42.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage43.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage44.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage45.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage46.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage47.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Oznam: v krokoch 7 a 8 si dávajte veľký pozor na zapojenie pinov. Nemusí vám potom dobre fungovať snímanie vzdialenosti a stratíte tým veľa času hľadaním problému.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
V tomto kroku budete musieť pripájkovať dva hrebene so štyrmi pinmi. Dôvodom tohto kroku je, že chceme prepojiť I2C piny (SDA spolu a SCL spolu) laserových modulov. Pre jednoduchosť a lepší prehľad budeme používať fialovú farbu pre SDA a sivú pre SCL (u gyroskopu aj u laserov).&lt;br /&gt;
&lt;br /&gt;
Budeme zapájať:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! I2C signál !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Gyroskop || SDA || GP4&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP5&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Ľavý laser || SDA || GP6&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP7&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Pravý laser || SDA || GP10&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP11&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Predný laser || SDA || GP14&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dôvodom takéhoto zapojenia je to, že gyroskop je na zbernici I2C0 a lasery na zbernici I2C1. V [https://www.waveshare.com/wiki/RP2350-Zero#Arduino_IDE_Series datasheete] nájdete lepšie viditeľný pinout pre I2C zbernice. Ďalej budeme cez I2C1 a XSHUT piny prepínať adresy, cez ktoré budeme komunikovať s jednotlivými laserovými modulmi. Ďalší krok je zapojenie týchto XSHUT pinov.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage49.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage50.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage51.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage52.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage53.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage54.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage55.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku sme pre zjednodušenie vybrali farby káblov: biela – VCC, čierna – GND, hnedá – XSHUT piny.&lt;br /&gt;
&lt;br /&gt;
Zapojenie:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT ľavý laser || GP8&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT pravý laser || GP12&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT predný laser || GP13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage56.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage57.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage58.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage59.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage60.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si môžete uhladiť káble tak, aby robotík vyzeral krásne. Keď ste sa dostali sem, tak gratulujeme. Zvládli ste postaviť svoju jednoduchú myš v bludisku! :)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_my%C5%A1i_v_bludisku&amp;diff=1058</id>
		<title>Návod na poskladanie myši v bludisku</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_my%C5%A1i_v_bludisku&amp;diff=1058"/>
		<updated>2026-08-30T08:29:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania myši v bludisku===&lt;br /&gt;
&lt;br /&gt;
Toto je manuál na to, aby ste si mohli jednoducho poskladať svoju robotickú myš v bludisku.&lt;br /&gt;
&lt;br /&gt;
Úplné základy montáže sú vysvetlené v sekcii [[3D models]], ale detaily budú vysvetlené v texte pod obrázkami.&lt;br /&gt;
&lt;br /&gt;
Pôjdeme krok po kroku a postupne sa vaša myš bude formovať.&lt;br /&gt;
&lt;br /&gt;
Pre začiatok si najprv prichystáme všetky komponenty a súčiastky, ktoré budeme potrebovať.&lt;br /&gt;
&lt;br /&gt;
Okrem nich sa vám zíde aj menšie nástroje, napríklad kliešte a skrutkovač, na uťahovanie matíc na ťažšie dostupných miestach.&lt;br /&gt;
&lt;br /&gt;
Neponáhľajte sa a pri každom kroku si najprv pozrite priložené obrázky – ušetríte si tak čas aj prípadné komplikácie.&lt;br /&gt;
&lt;br /&gt;
V tomto robotovi budete musieť aj niečo jednoduché napájkovať. Budete informovaní v danom kroku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| Čierne || 2x1-U || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | Biele || 1x2-1x2-L || 4&lt;br /&gt;
|-&lt;br /&gt;
| 3x1-3x1-L || 3&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-2x1-L || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x5 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na guličku || 1&lt;br /&gt;
|-&lt;br /&gt;
| Modré ||  Servo YZ1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Červené || Držiak káblov || 1&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na laserový senzor || 3&lt;br /&gt;
|-&lt;br /&gt;
| Držiak na gyroskop || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Mechanické súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~20&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~20&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~40&lt;br /&gt;
|-&lt;br /&gt;
| Podporná gulička || 1&lt;br /&gt;
|-&lt;br /&gt;
| Hrebeň || 2x4&lt;br /&gt;
|-&lt;br /&gt;
| Kolesá s gumovou podrážkou || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 2&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Laserový senzor || 3&lt;br /&gt;
|-&lt;br /&gt;
| Gyroskop || 1&lt;br /&gt;
|-&lt;br /&gt;
| Napájanie batériek || 1&lt;br /&gt;
|-&lt;br /&gt;
| Krátke káble || 12x2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:MicroMouseManualImage1.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage2.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage3.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage4.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage5.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage6.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage7.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage8.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage9.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage10.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V prvom kroku si prichystáme motorčeky s kolesami pre riadenie. Modré krabičky sa jednoducho dajú spojiť s L-profilmi tak, že sa vloží matica zo spodu krabičky do priehradky. Následne sa napolohuje tak, aby sa do matice naskrutkovala skrutka, ktorá spojí L-profil s krabičkou, ako je uvedené na obrázku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage12.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage13.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage14.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage15.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V druhom kroku si dávajte pozor na otočenie RP2350 modulu a napájacieho modulu. Najprv si ich napolohujte a spojte s prvým motorčekom. Následne pripojte druhý motorček. Posledný obrázok je iba náhľad zo strany RP2350 modulu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage17.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage19.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage18.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage20.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage21.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tretí krok odporúčame pridržať si matice prstom, jemne priskrutkovať, nastaviť komponenty tak, ako sú na obrázku, a následne silnejšie priskrutkovať. Otočenie laserových modulov je voliteľné, ale odporúčame ho tak, ako je na obrázku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage23.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage24.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage25.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage26.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage28.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage29.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage30.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Takisto aj v štvrtom kroku môže byť laserový modul otočený o 180°, ale odporúčame, aby snímač (čierna škatuľka) bol dole. Pripevnenie k telu robota musí byť presne ako na obrázku, inak by bol predok robota vyvýšený a predný snímač by nemusel vidieť objekty pod robotom.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage32.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage33.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage34.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage35.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage36.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage37.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage38.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre jednoduchšie uchytenie na robota vyberte dlhšie skrutky a spoj 1x2, ktorý bude v tomto prípade slúžiť ako podložka na uchytenie. Otočenie skrutiek je voliteľné, vyberte si, ako je vám vhodnejšie, ale odporúčame tak, ako je na obrázku. Gyroskop by mal byť vývodom (pinmi/káblami) nahor, aby sa vedel zapojiť do RP2350.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage39.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage40.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage41.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Jednoduché uchytenie káblov pre servo motorčeky.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| Ľavé servo || GP1&lt;br /&gt;
|-&lt;br /&gt;
| Pravé servo || GP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage42.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage43.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage44.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage45.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage46.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage47.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Oznam: v krokoch 7 a 8 si dávajte veľký pozor na zapojenie pinov. Nemusí vám potom dobre fungovať snímanie vzdialenosti a stratíte tým veľa času hľadaním problému.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
V tomto kroku budete musieť pripájkovať dva hrebene so štyrmi pinmi. Dôvodom tohto kroku je, že chceme prepojiť I2C piny (SDA spolu a SCL spolu) laserových modulov. Pre jednoduchosť a lepší prehľad budeme používať fialovú farbu pre SDA a sivú pre SCL (u gyroskopu aj u laserov).&lt;br /&gt;
&lt;br /&gt;
Budeme zapájať:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! I2C signál !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Gyroskop || SDA || GP4&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP5&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Ľavý laser || SDA || GP6&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP7&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Pravý laser || SDA || GP10&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP11&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Predný laser || SDA || GP14&lt;br /&gt;
|-&lt;br /&gt;
| SCL || GP15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dôvodom takéhoto zapojenia je to, že gyroskop je na zbernici I2C0 a lasery na zbernici I2C1. V [https://www.waveshare.com/wiki/RP2350-Zero#Arduino_IDE_Series datasheete] nájdete lepšie viditeľný pinout pre I2C zbernice. Ďalej budeme cez I2C1 a XSHUT piny prepínať adresy, cez ktoré budeme komunikovať s jednotlivými laserovými modulmi. Ďalší krok je zapojenie týchto XSHUT pinov.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage49.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage50.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage51.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage52.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage53.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage54.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage55.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku sme pre zjednodušenie vybrali farby káblov: biela – VCC, čierna – GND, hnedá – XSHUT piny.&lt;br /&gt;
&lt;br /&gt;
Zapojenie:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT ľavý laser || GP8&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT pravý laser || GP12&lt;br /&gt;
|-&lt;br /&gt;
| XSHUT predný laser || GP13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MicroMouseManualImage56.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage57.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage58.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage59.jpg | 300px]]&lt;br /&gt;
[[File:MicroMouseManualImage60.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si môžete uhladiť káble tak, aby robotík vyzeral krásne. Keď ste sa dostali sem, tak gratulujeme. Zvládli ste postaviť svoju jednoduchú myš v bludisku! :)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1057</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1057"/>
		<updated>2026-08-30T07:37:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot-Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program zapína motory postupne po jednom, aby ste si prípadne mohli ešte opraviť ich otočenie voči modrej pripojenej súčiastke. Robot by pri 90-stupňových polohách motorov mal vyzerať ako na videu po zapnutí.&lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
Najskôr naprogramujte základné riadenie robota pomocou joysticku. Joystick má len dva stupne voľnosti, preto je vhodné nejakým spôsobom prepínať medzi zvolenou dvojicou kĺbov, ktoré pomocou neho práve riadime. My sme si zvolili prepínanie prvým dotykovým sennzorom a signalizáciu pommocou farebnej LED. &lt;br /&gt;
&lt;br /&gt;
# Naklonenie joysticku do jednej alebo druhej strany začne otáčať motorom v príslušnom kĺbe do jednej alebo druhej strany;&lt;br /&gt;
# Vrátenie joysticku do neutrálnej polohy uvedie rameno do pokoja na tom mieste, kde sa práve nachádza;&lt;br /&gt;
# Dotyk (a následné pustenie) prvého dotykového senzora vymení dvojicu kĺbov, ktoré sa riadia joystickom.&lt;br /&gt;
&lt;br /&gt;
Všimnite si, že hodnoty z joysticku sa menia pomerne rýchlo už pri jeho jemnom naklonení.&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* nájdite hraničné hodnoty pre jednotlivé servá, za ktorými ďalší pohyb nie je mechanicky možný&lt;br /&gt;
* zabezpečte podmienkami v programe, že sa servo za tieto hranice nedostane (ideálne by hranice mohli byť flexibilné vzhľadom na polohu v ktorej sa rameno nachádza)&lt;br /&gt;
* pri rôzne prudkom naklonení joysticku sa motory budú otáčať rôznou rýchlosťou a farebná LED bude signalizovať aj smer aj rýchlosť otáčania&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
Program z predchádzajúceho cvičenia vylepšíme tak, že počas riadenia ramena joystickom bude možné zapnúť a zastaviť nahrávanie jeho pohybov a neskôr túto zapamätanú postupnosť znovu autonómne zopakovať.&lt;br /&gt;
&lt;br /&gt;
# program najskôr funguje rovnako ako program v predchádzajúcej úlohe&lt;br /&gt;
# po stlačení (a pustení) druhého dotykového senzora sa zapne nahrávanie (signalizované farebnou LED)&lt;br /&gt;
# od tohoto okamihu sa po každom kliknutí tlačidlom joysticku uloží aktuálna poloha všetkých 4 motorov do zoznamu zaznamenaných polôh&lt;br /&gt;
# poloha sa zaznamenáva ako uhol serva - okrem zaḱladne, pre ktorú sa zaznamenávajú jednotlivé časy potrebné na otočenie aj bez kliknutí vždy po zmene rýchlosti otáčania ramena (alebo zastavení)&lt;br /&gt;
# po opätovnom stlačení druhého dotykového senzora sa nahrávanie ukončí (záznam ostáva v pamäti) a robota je zasa možné riadiť bez ukladania jeho polôh&lt;br /&gt;
# po kliknutí na tlačidlo joysticku sa zapamätaný záznam v pomalej rýchlosti (ale plynule, bez prestávok) prehrá - jednotlivé konfigurácie ramena sa postupne dosahujú pomocou plynulých pohybov motorov&lt;br /&gt;
# po dokončení prehrávania záznamu je ho možné prehrať znovu, riadiť servo pomocou joysticku, alebo program pokračuje 2. krokom pre nový záznam pohybu &lt;br /&gt;
&lt;br /&gt;
Ukážka možného riešenia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* pridajte možnosť &amp;quot;exportu&amp;quot; a &amp;quot;importu&amp;quot; zadanej postupnosti pohybov, export vypíše na výstup sériového portu v takom istom formáte ako ho import dokáže načítať - takýmto spôsobom si môžeme skopírovať z konzoly vyexportované postupnosti, uložiť si ich do textového súboru na počítači a neskôr ich odtiaľ vložiť do konzoly po zvolení funkcie import a znovu vykonať&lt;br /&gt;
* umožnite nastaviť rýchlosť pohybov pri opakovaní naučenej postupnosti&lt;br /&gt;
* vymeňte continuous servo za obyčajné servo - rameno bude mať síce menší pracovný priestor, ale otáčanie základne bude riadené presne  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
Táto úloha je priestor pre Vašu tvorivosť. Výsledkom by malo byť malé demo, v ktorom rameno autonómne vykoná niekoľko krokov, pričom bude manipulovať/prenášať nejaké predmety, nielen sa pohybovať na rôzne miesto v pracovnom priestore.&lt;br /&gt;
&lt;br /&gt;
Inšpirovať sa môžete aj týmto videom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo - počas vykonávania pohybu dotyk senzora spôsobí okamžité zastavenie&lt;br /&gt;
* opakovateľnosť - postupnosť skončí na rovnakom mieste ako začína, takže sa dá spustiť niekoľkokrát za sebou bez zmeny polohy ramena medzi opakovanými štartami&lt;br /&gt;
* možnosť riadiť rameno pred spustením dema/po jeho zastavení joystickom ako v predchádzajúcich úlohách, demo sa môže štartovať napr. kliknutím joystickom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude rameno robiť &amp;quot;užitočnú&amp;quot; prácu podľa aktuálnych požiadaviek operátora. V jeho pracovnom priestore zadefinujeme niekoľko pozícií, označíme ich napr. A, B, C, D a naprogramujeme presuny ramena medzi týmito pozíciami. Pokyny budeme postupne zadávať cez sériovú linku jeden za druhým a rameno ich bude vykonávať,  napr. prelož predmet z miesta A na miesto C. &lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* niektoré miesta môžu byť nielen priamo dole na stole, ale vyššie, pričom na tom mieste bude košík/krabička, nad ktorou rameno predmet uvoľní, aby spadol do košíka&lt;br /&gt;
* pridajte možnosť &amp;quot;resetnúť&amp;quot;/&amp;quot;inicializovať&amp;quot; polohu základne na dohodnutom mieste&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pomocou nejakého príkazu zadaného pred samotnou požiadavkou na presun&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota&lt;br /&gt;
* umožnite operátorovi interaktívne zadať požiadavku na zopakovanie uchopenia predmetu, ak by sa náhodou nepodarilo na prvý raz&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
Vylepšíme predchádzajúci program tak, aby namiesto jedného pokynu umožnil zadať postupnosť viacerých pokynov, ktoré potom naraz jeden po druhom vykoná - napr. prelož predmet z A na C, potom iný z D na A, potom ďalší z B na D, atď.&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo na zastavenie postupnosti v ktoromkoľvek okamihu&lt;br /&gt;
* korekcia pohybu základne - pomocou druhého tlačidla je kedykoľvek možné zastaviť vykonávanie pohybu a otočiť joystickom rameno, aby sme ho nastavili do požadovanej polohy pre nasledujúce cieľové miesto, ak rameno práve vykonáva nejaký pohyb, alebo do &amp;quot;nulovej&amp;quot; polohy, ak pohyb práve nevykonáva&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota pre každý pohyb v postupnosti zvlášť&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pre každý prenášaný predmet zvlášť&lt;br /&gt;
* umožnite používateľovi zadefinovať postupnosti pohybov ako makrá, ktoré sa potom dajú vyvolať jedným znakom prijatým cez sériovú linku, alebo dotykovým senzorom, či joystickom&lt;br /&gt;
* upravte program tak, aby mal vedomosť o tom, ktoré miesta sú obsadené predmetmi a dovolí vykonať presun iba na prázdne miesto, v opačnom prípade sa vykonávanie sekvencie preruší&lt;br /&gt;
* vytvorte plánovací program, do ktorého sa zadá počiatočná a cieľová konfigurácia, program potom naplánuje postupnosť krokov a aj ich vykoná, napr: ŠTART: A-zelený, B-modrý, C-červený, D-prázdne miesto, CIEĽ: A-modrý, B-červený, C-zelený, D-prázdne miesto.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
V robotických aplikáciách nás často zaujíma momentálna poloha riadeného koncového člena v priestore - v našom prípade uzatvárateľnej ruky namontovanej na konci ramena. Program, ktorý riadi rameno v každom okamihu pozná uhly, podľa ktorých sú otočené jednotlivé stupne voľnosti - v tejto úlohe nás bude zaujímať iba poloha ruky v rovine ramena. Rovina ramena sa celá otáča pomocou základne, ale keďže ju máme riadenú pomocou continuous serva, určovanie tejto polohy by bolo priveľmi nepresné. Uvažujme rovinu ramena - súradnica &#039;&#039;x&#039;&#039; bude určovať ako ďaleko od okraja podstavca pred robotom sa ruka nachádza a súradnica &#039;&#039;y&#039;&#039; bude určovať v akej výške ruka je. Vstupom do výpočtu sú teda dva uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, určujúce do akého uhla sú otočené servá umiestnené nad otočnou základňou a výstupom bude poloha ramena &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039; (môžeme uvažovať napr. referenčný bod na začiatku uchopovacieho priestoru ramena - čiže krajná poloha uchopovaného predmetu. Ak sa na rameno pozrieme z boku, vidíme, že má topológiu uzavretého 5-uhoľníka, pričom jedna strana je predĺžená a na jej konci je upevnené rameno. Pomocou stredoškolskej matematiky vieme odvodiť vzorčeky pre &#039;&#039;x&#039;&#039; a &#039;&#039;y&#039;&#039; na základne vstupného &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, keď poznáme dĺžky jednotlivých strán päťuholníka (pripomíname, že vzdialenosť susedných dier na dieloch stavebnice je 8 mm).   &lt;br /&gt;
&lt;br /&gt;
[[Image:topologia_ramena.png]]&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napr. nejak takto (terminál zobrazuje informáciu vo formáte [&#039;&#039;alfa&#039;&#039;,&#039;&#039;beta&#039;&#039;] -&amp;gt; [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;]. Robota riadime priamo joystickom a výpočet neustále prepočítava polohu ruky v rovine ramena.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, bude priamočiare upraviť výpočet tak, aby určoval polohu v priestore [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;,&#039;&#039;z&#039;&#039;] nielen v rovine&lt;br /&gt;
* teoretický výpočet sa vždy bude trochu líšiť od skutočnej polohy ramena, pretože v každom voľnom kĺbe je vôľa (a teda chyba) približne rádu milimetrov - a tá sa cez mechanickú konštrukciu znásobuje a tiež preto, že motory sa neotáčajú dokonale presne a lineárne, zmerajte veľkosť tejto chyby v rôznych polohách ramena&lt;br /&gt;
* pokúste sa vymyslieť nejaký spôsob kalibrácie/korekcie, ktorý zlepší výslednú presnosť &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná/inverzná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
Ešte užitočnejší výpočet robí presný opak - pre zadanú cieľovú pozíciu ruky [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] nájde uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039;, také, že ak servá nastavíme do uhlov &#039;&#039;alfa&#039;&#039; a &#039;&#039;beta&#039;&#039;, tak sa ruka dostane na požadované súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;] v rovine ramena. Vytvorte program, ktorý dovolí cez sériový port zadať ľubovoľné dostupné súradnice [&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;], vypočíta uhly &#039;&#039;alfa&#039;&#039;, &#039;&#039;beta&#039;&#039; a ruku presunie na požadovanú pozíciu, alebo oznámi, že sa to nedá, ak je poloha mimo mechanicky dostupný rozsah. &lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
* urobte test - pre veľa generovaných pozícií alfa, beta najskôr pomocou doprednej kinematiky vypočítajte [x,y] a potom cez inverznú kinematiku vypočítajte alfa, beta - porovnajte, či ste dostali rovnaké hodnoty a ak nie, aká veľká bola chyba&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, umožnite zadať priestorové súradnice [x,y,z], na ktoré sa ruka presunie&lt;br /&gt;
* doplňte inverznú kinematiku do programu riadeného manipulátora - cieľová poloha sa bude dať zadať nielen ako A,B,C,D ale priamo súradnicami&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.4. Micromouse ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1056</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1056"/>
		<updated>2026-08-30T06:47:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot-Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.&lt;br /&gt;
Základný program zapína motory postupne po jednom, aby ste si prípadne mohli ešte opraviť ich otočenie voči modrej pripojenej súčiastke. Robot by pri 90-stupňových polohách motorov mal vyzerať ako na videu po zapnutí.&lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
Najskôr naprogramujte základné riadenie robota pomocou joysticku. Joystick má len dva stupne voľnosti, preto je vhodné nejakým spôsobom prepínať medzi zvolenou dvojicou kĺbov, ktoré pomocou neho práve riadime. My sme si zvolili prepínanie prvým dotykovým sennzorom a signalizáciu pommocou farebnej LED. &lt;br /&gt;
&lt;br /&gt;
# Naklonenie joysticku do jednej alebo druhej strany začne otáčať motorom v príslušnom kĺbom do jednej alebo druhej strany;&lt;br /&gt;
# Vrátenie joysticku do neutrálnej polohy uvedie rameno do pokoja na tom mieste, kde sa práve nachádza;&lt;br /&gt;
# Dotyk (a následné pustenie) prvého dotykového senzora vymení dvojicu kĺbov, ktoré sa riadia joystickom.&lt;br /&gt;
&lt;br /&gt;
Všimnite si, že hodnoty z joysticku sa menia pomerne rýchlo už pri jeho jemnom naklonení.&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* nájdite hraničné hodnoty pre jednotlivé servá, za ktorými ďalší pohyb nie je mechanicky možný&lt;br /&gt;
* zabezpečte podmienkami v programe, že sa servo za tieto hranice nedostane (ideálne by hranice mohli byť flexibilné vzhľadom na polohu v ktorej sa rameno nachádza)&lt;br /&gt;
* pri rôzne prudkom naklonení joysticku sa motory budú otáčať rôznou rýchlosťou a farebná LED bude signalizovať aj smer aj rýchlosť otáčania&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
Program z predchádzajúceho cvičenia vylepšíme tak, že počas riadenia ramena joystickom bude možné zapnúť a zastaviť nahrávanie jeho pohybov a neskôr túto zapamätanú postupnosť znovu autonómne zopakovať.&lt;br /&gt;
&lt;br /&gt;
# program najskôr funguje rovnako ako program v predchádzajúcej úlohe&lt;br /&gt;
# po stlačení (a pustení) druhého dotykového senzora sa zapne nahrávanie (signalizované farebnou LED)&lt;br /&gt;
# od tohoto okamihu sa po každom kliknutí tlačidlom joysticku uloží aktuálna poloha všetkých 4 motorov do zoznamu zaznamenaných polôh&lt;br /&gt;
# poloha sa zaznamenáva ako uhol serva - okrem zaḱladne, pre ktorú sa zaznamenávajú jednotlivé časy potrebné na otočenie aj bez kliknutí vždy po zmene rýchlosti otáčania ramena (alebo zastavení)&lt;br /&gt;
# po opätovnom stlačení druhého dotykového senzora sa nahrávanie ukončí (záznam ostáva v pamäti) a robota je zasa možné riadiť bez ukladania jeho polôh&lt;br /&gt;
# po kliknutí na tlačidlo joysticku sa zapamätaný záznam v pomalej rýchlosti (ale plynule, bez prestávok) prehrá - jednotlivé konfigurácie ramena sa postupne dosahujú pomocou plynulých pohybov motorov&lt;br /&gt;
# po dokončení prehrávania záznamu je ho možné prehrať znovu, riadiť servo pomocou joysticku, alebo program pokračuje 2. krokom pre nový záznam pohybu &lt;br /&gt;
&lt;br /&gt;
Ukážka možného riešenia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* pridajte možnosť &amp;quot;exportu&amp;quot; a &amp;quot;importu&amp;quot; zadanej postupnosti pohybov, export vypíše na výstup sériového portu v takom istom formáte ako ho import dokáže načítať - takýmto spôsobom si môžeme skopírovať z konzoly vyexportované postupnosti, uložiť si ich do textového súboru na počítači a neskôr ich odtiaľ vložiť do konzoly po zvolení funkcie import a znovu vykonať&lt;br /&gt;
* umožnite nastaviť rýchlosť pohybov pri opakovaní naučenej postupnosti&lt;br /&gt;
* vymeňte continuous servo za obyčajné servo - rameno bude mať síce menší pracovný priestor, ale otáčanie základne bude riadené presne  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
Táto úloha je priestor pre Vašu tvorivosť. Výsledkom by malo byť malé demo, v ktorom rameno autonómne vykoná niekoľko krokov, pričom bude manipulovať/prenášať nejaké predmety, nielen sa pohybovať na rôzne miesto v pracovnom priestore.&lt;br /&gt;
&lt;br /&gt;
Inšpirovať sa môžete aj týmto videom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo - počas vykonávania pohybu dotyk senzora spôsobí okamžité zastavenie&lt;br /&gt;
* opakovateľnosť - postupnosť skončí na rovnakom mieste ako začína, takže sa dá spustiť niekoľkokrát za sebou bez zmeny polohy ramena medzi opakovanými štartami&lt;br /&gt;
* možnosť riadiť rameno pred spustením dema/po jeho zastavení joystickom ako v predchádzajúcich úlohách, demo sa môže štartovať napr. kliknutím joystickom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
V tejto úlohe bude rameno robiť &amp;quot;užitočnú&amp;quot; prácu podľa aktuálnych požiadaviek operátora. V jeho pracovnom priestore zadefinujeme niekoľko pozícií, označíme ich napr. A, B, C, D a naprogramujeme presuny ramena medzi týmito pozíciami. Pokyny budeme postupne zadávať cez sériovú linku jeden za druhým a rameno ich bude vykonávať,  napr. prelož predmet z miesta A na miesto C. &lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* niektoré miesta môžu byť nielen priamo dole na stole, ale vyššie, pričom na tom mieste bude košík/krabička, nad ktorou rameno predmet uvoľní, aby spadol do košíka&lt;br /&gt;
* pridajte možnosť &amp;quot;resetnúť&amp;quot;/&amp;quot;inicializovať&amp;quot; polohu základne na dohodnutom mieste&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pomocou nejakého príkazu zadaného pred samotnou požiadavkou na presun&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota&lt;br /&gt;
* umožnite operátorovi interaktívne zadať požiadavku na zopakovanie uchopenia predmetu, ak by sa náhodou nepodarilo na prvý raz&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
Vylepšíme predchádzajúci program tak, aby namiesto jedného pokynu umožnil zadať postupnosť viacerých pokynov, ktoré potom naraz jeden po druhom vykoná - napr. prelož predmet z A na C, potom iný z D na A, potom ďalší z B na D, atď.&lt;br /&gt;
&lt;br /&gt;
Inšpirácia vo videu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* bezpečnostné tlačidlo na zastavenie postupnosti v ktoromkoľvek okamihu&lt;br /&gt;
* korekcia pohybu základne - pomocou druhého tlačidla je kedykoľvek možné zastaviť vykonávanie pohybu a otočiť joystickom rameno, aby sme ho nastavili do požadovanej polohy pre nasledujúce cieľové miesto, ak rameno práve vykonáva nejaký pohyb, alebo do &amp;quot;nulovej&amp;quot; polohy, ak pohyb práve nevykonáva&lt;br /&gt;
* umožnite nastaviť rôznu rýchlosť pohybov robota pre každý pohyb v postupnosti zvlášť&lt;br /&gt;
* umožnite nastaviť rôzne veľkosti prenášaného predmetu pre každý prenášaný predmet zvlášť&lt;br /&gt;
* umožnite používateľovi zadefinovať postupnosti pohybov ako makrá, ktoré sa potom dajú vyvolať jedným znakom prijatým cez sériovú linku, alebo dotykovým senzorom, či joystickom&lt;br /&gt;
* upravte program tak, aby mal vedomosť o tom, ktoré miesta sú obsadené predmetmi a dovolí vykonať presun iba na prázdne miesto, v opačnom prípade sa vykonávanie sekvencie preruší&lt;br /&gt;
* vytvorte plánovací program, do ktorého sa zadá počiatočná a cieľová konfigurácia, program potom naplánuje postupnosť krokov a aj ich vykoná, napr: ŠTART: A-zelený, B-modrý, C-červený, D-prázdne miesto, CIEĽ: A-modrý, B-červený, C-zelený, D-prázdne miesto.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
V robotických aplikáciách nás často zaujíma momentálna poloha riadeného koncového člena v priestore - v našom prípade uzatvárateľnej ruky namontovanej na konci ramena. Program, ktorý riadi rameno v každom okamihu pozná uhly, podľa ktorých sú otočené jednotlivé stupne voľnosti - v tejto úlohe nás bude zaujímať iba poloha ruky v rovine ramena. Rovina ramena sa celá otáča pomocou základne, ale keďže ju máme riadenú pomocou continuous serva, určovanie tejto polohy by bolo priveľmi nepresné. Uvažujme rovinu ramena - súradnica &#039;&#039;x&#039;&#039; bude určovať ako ďaleko od okraja podstavca pred robotom sa ruka nachádza a súradnica &#039;&#039;y&#039;&#039; bude určovať v akej výške ruka je. Vstupom do výpočtu sú teda dva uhly alfa, beta, určujúce do akého uhla sú otočené servá umiestnené nad otočnou základňou a výstupom bude poloha ramena x, y (môžeme uvažovať napr. referenčný bod na začiatku uchopovacieho priestoru ramena - čiže krajná poloha uchopovaného predmetu. Ak sa na rameno pozrieme z boku, vidíme, že má topológiu uzavretého 5-uhoľníka, pričom jedna strana je predĺžená a na jej konci je upevnené rameno. Pomocou stredoškolskej matematiky vieme odvodiť vzorčeky pre x a y na základne vstupného alfa, beta, keď poznáme dĺžky jednotlivých strán päťuholníka (pripomíname, že vzdialenosť susedných dier na dieloch stavebnice je 8 mm).   &lt;br /&gt;
&lt;br /&gt;
[[Image:topologia_ramena.png]]&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napr. nejak takto (terminál zobrazuje informáciu vo formáte [alfa,beta] -&amp;gt; [x,y]. Robota riadime priamo joystickom a výpočet neustále prepočítava polohu ruky v rovine ramena.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, bude priamočiare upraviť výpočet tak, aby určoval polohu v priestore [x,y,z] nielen v rovine&lt;br /&gt;
* teoretický výpočet sa vždy bude trochu líšiť od skutočnej polohy ramena, pretože v každom voľnom kĺbe je vôľa (a teda chyba) približne rádu milimetrov - a tá sa cez mechanickú konštrukciu znásobuje a tiež preto, že motory sa neotáčajú dokonale presne a lineárne, zmerajte veľkosť tejto chyby v rôznych polohách ramena&lt;br /&gt;
* pokúste sa vymyslieť nejaký spôsob kalibrácie/korektcie, ktorý zlepší výslednú presnosť &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná/inverzná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
Ešte užitočnejší výpočet robí presný opak - pre zadanú cieľovú pozíciu ruky [x,y] nájde uhly alfa, beta, také, že ak servá nastavíme do uhlov alfa a beta, tak sa ruka dostane na požadované súradnice [x,y] v rovine ramena. Vytvorte program, ktorý dovolí cez sériový port zadať ľubovoľné dostupné súradnice [x,y], vypočíta uhly alfa, beta a ruku presunie na požadovanú pozíciu, alebo oznámi, že sa to nedá, ak je poloha mimo mechanicky dostupný rozsah. &lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
* urobte test - pre veľa generovaných pozícií alfa, beta najskôr pomocou doprednej kinematiky vypočítajte [x,y] a potom cez inverznú kinematiku vypočítajte alfa, beta - porovnajte, či ste dostali rovnaké hodnoty a ak nie, aká veľká bola chyba&lt;br /&gt;
* ak ste continuous servo v základni vymenili za klasické, umožnite zadať priestorové súradnice [x,y,z], na ktoré sa ruka presunie&lt;br /&gt;
* doplňte inverznú kinematiku do programu riadeného manipulátora - cieľová poloha sa bude dať zadať nielen ako A,B,C,D ale priamo súradnicami&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.4. Micromouse ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:Topologia_ramena.png&amp;diff=1055</id>
		<title>Súbor:Topologia ramena.png</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:Topologia_ramena.png&amp;diff=1055"/>
		<updated>2026-08-30T06:47:37Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1052</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1052"/>
		<updated>2026-08-29T20:26:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot-Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1051</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1051"/>
		<updated>2026-08-29T20:24:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot - Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1050</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1050"/>
		<updated>2026-08-29T20:16:52Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;Qhxk5IRIhPw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1044</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1044"/>
		<updated>2026-08-29T17:00:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Line-Follower ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Line-follower|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.2.2. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.2.4. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.2.5. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.2.6. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.2.7. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Rameno ===&lt;br /&gt;
&lt;br /&gt;
==== 2.3.1. Zostrojte robot Rameno ====&lt;br /&gt;
&lt;br /&gt;
Poskladajte robotické rameno podľa [[Basic robot - Robot Arm|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
&lt;br /&gt;
==== 2.3.2. Riadenie ramena joystickom a dotykovými senzormi ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;LExj92AYP50&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.3. Zaznamenávanie a zopakovanie postupnosti pohybov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;wYFqGFVK4oI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.4. Malá ukážka &amp;quot;pick and place&amp;quot; manipulácie ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;iXiUMrsuUgM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.5. Riadený manipulátor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hO71R9L-JSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.6. Manipulátor s postupnosťou krokov ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;GOySTUEkf5U&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.7. Výpočet pozície koncového člena (dopredná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.3.8. Navigácia na zadanú pozíciu (spätná kinematika) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;390&amp;quot; height=&amp;quot;700&amp;quot;&amp;gt;QWAnyxz87IU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1039</id>
		<title>Basic robot - Robot-Arm</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1039"/>
		<updated>2026-08-29T16:31:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robotické rameno je mechanicky najnáročnejší základný model. Má 4 stupne voľnosti - každý stupeň voľnosti je nejaký kĺb, ktorým otáča servo motor - buď bez ohraničenia (continuous servo, tiež niekedy 360-stupňové servo) alebo klasické s rozsahom otáčania 180 stupňov. Toto rameno má netradičnú konštrukciu: nejde len o jednotlivé priame časti ruky prepojené kĺbmi, ktorých otočenie riadia motory. Konštrukcia je uzavretá do 5-uholníka, z ktorého jedna strana vyčnieva a na nej je koncový člen (zatvárateľná ruka) uchytená v približne kosodĺžnikovej konfigurácii. Vďaka tomu dosiahnene dve veci: 1) servá v kĺboch nemusia niesť celú váhu ramena a prenášaného predmetu, veľkú časť váhy nesie samotná uzavretá a podopretá konštrukcia a 2) koncový člen (ruka) je pri jeho umiestnení do takmer ľubovoľného miesta vodorovný - bez toho, aby to musel zabezpečovať ďalší motor, ktorý by ho vyrovnával. &lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie ramena |  Návod na skladanie ramena]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý opatrný test, ktorý postupne po jednom pripája a odpája všetky servá a vykoná s nimi malý pohyb, potom otestuje dotykové senzory a joystick.&lt;br /&gt;
Stačí pripojenie cez USB3 port. Treba sledovať inštrukcie v serial monitore.&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V žiadnom prípade sa nesnažte pohybovať žiadnym servom rukou, vždy iba z programu. Pokus o pohyb serva rukou ho s veľkou pravdepodobnosťou poškodí!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;jF80An-Dxao&amp;lt;/youtube&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zmenou hodnoty SERVO_STOP (napr. na 93 alebo podobnú blízku hodnotu 90) môžete skúsiť dosiahnuť, aby sa robot v základni otáčal rovnomernejšie vľavo a vpravo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const int PIN_SERVO_ZAKLADNA = 3;&lt;br /&gt;
const int PIN_SERVO_LAVE    = 4;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 5;&lt;br /&gt;
const int PIN_SERVO_RUKA = 6;&lt;br /&gt;
&lt;br /&gt;
const int PIN_TOUCH1 = 8;&lt;br /&gt;
const int PIN_TOUCH2 = 9;&lt;br /&gt;
&lt;br /&gt;
const int PIN_JOY_SWITCH = 28;&lt;br /&gt;
const int PIN_JOY_X = 26;&lt;br /&gt;
const int PIN_JOY_Y = 27;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP = 93; // &amp;quot;stop&amp;quot; poloha pre 360° servá&lt;br /&gt;
&lt;br /&gt;
Servo zakladna;&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
Servo ruka;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  pinMode(PIN_TOUCH1, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_TOUCH2, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_JOY_SWITCH, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serial_vycisti() {&lt;br /&gt;
    while (Serial.available()) &lt;br /&gt;
    {&lt;br /&gt;
      Serial.read();&lt;br /&gt;
      delay(10);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void wait_for_ENTER(const char *sprava = 0)&lt;br /&gt;
{&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    unsigned long t1 = millis();&lt;br /&gt;
    do { &lt;br /&gt;
        if (sprava)&lt;br /&gt;
        {&lt;br /&gt;
            if (millis() - t1 &amp;gt; 2000)&lt;br /&gt;
            {&lt;br /&gt;
                if (sprava) Serial.println(sprava);&lt;br /&gt;
                t1 = millis();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        delay(10);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    &lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void pomaly_pohyb(Servo *s, int poz_zaciatok, int poz_koniec)&lt;br /&gt;
{&lt;br /&gt;
    int poz = poz_zaciatok;&lt;br /&gt;
    while (poz != poz_koniec)&lt;br /&gt;
    {&lt;br /&gt;
       s-&amp;gt;write(poz);&lt;br /&gt;
       delay(30);&lt;br /&gt;
       if (poz_koniec &amp;gt; poz) poz++;&lt;br /&gt;
       else poz--;&lt;br /&gt;
    } &lt;br /&gt;
    s-&amp;gt;write(poz_koniec);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ln()&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;------------------------------------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    wait_for_ENTER(&amp;quot;Ked budes pripraveny, posli ENTER...&amp;quot;); &lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;V ziadnom pripade nehyb ziadnym stupnom volnosti rukou, iba z programu. Pri pohybe rukou sa servo poskodi!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by niektory stupen volnosti zjavne dosiel na svoj koniec a mohol tlacit dalej, treba robot hned vypnut!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;1. Najskor vyskusame zakladnu, ked stlacis ENTER, tak ju pripojim, otocim mierne do jednej aj do druhej strany a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by otocenie zakladne mohlo sposobit problem, tak nepokracuj dalej, odpoj kabel, robota vypni a priprav ho znovu.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    zakladna.attach(PIN_SERVO_ZAKLADNA, 540, 2400);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP + 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP - 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP);&lt;br /&gt;
    delay(500);&lt;br /&gt;
    zakladna.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;2. Teraz vyskusame ruku. Dufam, ze ich mas namontovane tak, ze stredna poloha je pri otvorenej ruke.&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ked stlacis ENTER, tak sa servo ruky da do strednej polohy, potom ho otocim o 30 stupnov vlavo a vpravo a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak ruka nie je nenamontovana tak, ze pri 90 stupnoch je otvorena, tak radsej robota vypni.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    ruka.attach(PIN_SERVO_RUKA, 540, 2400);&lt;br /&gt;
    ruka.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 90, 60);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 60, 120);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 120, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    ruka.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;3. Otestujeme lave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
    servoLave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 90, 110);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 110, 70);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 70, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoLave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;4. Prave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
    servoPrave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 90, 105);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 105, 75);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 75, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoPrave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;5. Otestujeme dotykove senzory, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    int touch1 = 0;&lt;br /&gt;
    int touch2 = 0;&lt;br /&gt;
    do {&lt;br /&gt;
      if (touch1 != digitalRead(PIN_TOUCH1))&lt;br /&gt;
      {&lt;br /&gt;
        touch1 ^= 1;&lt;br /&gt;
        if (touch1) Serial.println(&amp;quot;1 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;1 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (touch2 != digitalRead(PIN_TOUCH2))&lt;br /&gt;
      {&lt;br /&gt;
        touch2 ^= 1;&lt;br /&gt;
        if (touch2) Serial.println(&amp;quot;2 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;2 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;6. Otestujeme joystick, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    int click = 1;&lt;br /&gt;
    int x = -1;&lt;br /&gt;
    int y = -1;&lt;br /&gt;
    do {&lt;br /&gt;
      int novex = analogRead(PIN_JOY_X);&lt;br /&gt;
      int novey = analogRead(PIN_JOY_Y);&lt;br /&gt;
      if ((abs(x - novex) &amp;gt; 2) || (abs(y - novey) &amp;gt; 2))&lt;br /&gt;
      {&lt;br /&gt;
        Serial.print(&amp;quot;X=&amp;quot;); Serial.print(novex / 1000); Serial.print((novex % 1000) / 100); Serial.print((novex % 100) / 10); Serial.print(novex % 10);&lt;br /&gt;
        Serial.print(&amp;quot;, Y=&amp;quot;); Serial.print(novey / 1000); Serial.print((novey % 1000) / 100); Serial.print((novey % 100) / 10); Serial.println(novey % 10);      &lt;br /&gt;
        x = novex; y = novey;&lt;br /&gt;
      }&lt;br /&gt;
      if (click != digitalRead(PIN_JOY_SWITCH))&lt;br /&gt;
      {&lt;br /&gt;
        click ^= 1;&lt;br /&gt;
        if (click) Serial.println(&amp;quot;RELEASED&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;PRESSED&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      delay(200);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    Serial.println(&amp;quot;--------------koniec--------------&amp;quot;);&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
        pixels.show();   &lt;br /&gt;
        delay(300);&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
        pixels.show(); &lt;br /&gt;
        delay(300);  &lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 0, 100));&lt;br /&gt;
        pixels.show();&lt;br /&gt;
        delay(300);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1036</id>
		<title>Basic robot - Robot-Arm</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1036"/>
		<updated>2026-08-25T12:54:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robotické rameno je mechanicky najnáročnejší základný model. Má 6 stupňov voľnosti - každý stupeň voľnosti je nejaký kĺb, ktorým otáča servo motor - buď bez ohraničenia (continuous servo, tiež niekedy 360-stupňové servo) alebo klasické s rozsahom otáčania 180 stupňov.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie ramena |  Návod na skladanie ramena]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý opatrný test, ktorý postupne po jednom pripája a odpája všetky servá a vykoná s nimi malý pohyb, potom otestuje dotykové senzory a joystick.&lt;br /&gt;
Stačí pripojenie cez USB3 port. Treba sledovať inštrukcie v serial monitore.&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V žiadnom prípade sa nesnažte pohybovať žiadnym servom rukou, vždy iba z programu. Pokus o pohyb serva rukou ho s veľkou pravdepodobnosťou poškodí!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;jF80An-Dxao&amp;lt;/youtube&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zmenou hodnoty SERVO_STOP (napr. na 93 alebo podobnú blízku hodnotu 90) môžete skúsiť dosiahnuť, aby sa robot v základni otáčal rovnomernejšie vľavo a vpravo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const int PIN_SERVO_ZAKLADNA = 3;&lt;br /&gt;
const int PIN_SERVO_LAVE    = 4;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 5;&lt;br /&gt;
const int PIN_SERVO_RUKA = 6;&lt;br /&gt;
&lt;br /&gt;
const int PIN_TOUCH1 = 8;&lt;br /&gt;
const int PIN_TOUCH2 = 9;&lt;br /&gt;
&lt;br /&gt;
const int PIN_JOY_SWITCH = 28;&lt;br /&gt;
const int PIN_JOY_X = 26;&lt;br /&gt;
const int PIN_JOY_Y = 27;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP = 93; // &amp;quot;stop&amp;quot; poloha pre 360° servá&lt;br /&gt;
&lt;br /&gt;
Servo zakladna;&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
Servo ruka;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  pinMode(PIN_TOUCH1, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_TOUCH2, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_JOY_SWITCH, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serial_vycisti() {&lt;br /&gt;
    while (Serial.available()) &lt;br /&gt;
    {&lt;br /&gt;
      Serial.read();&lt;br /&gt;
      delay(10);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void wait_for_ENTER(const char *sprava = 0)&lt;br /&gt;
{&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    unsigned long t1 = millis();&lt;br /&gt;
    do { &lt;br /&gt;
        if (sprava)&lt;br /&gt;
        {&lt;br /&gt;
            if (millis() - t1 &amp;gt; 2000)&lt;br /&gt;
            {&lt;br /&gt;
                if (sprava) Serial.println(sprava);&lt;br /&gt;
                t1 = millis();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        delay(10);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    &lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void pomaly_pohyb(Servo *s, int poz_zaciatok, int poz_koniec)&lt;br /&gt;
{&lt;br /&gt;
    int poz = poz_zaciatok;&lt;br /&gt;
    while (poz != poz_koniec)&lt;br /&gt;
    {&lt;br /&gt;
       s-&amp;gt;write(poz);&lt;br /&gt;
       delay(30);&lt;br /&gt;
       if (poz_koniec &amp;gt; poz) poz++;&lt;br /&gt;
       else poz--;&lt;br /&gt;
    } &lt;br /&gt;
    s-&amp;gt;write(poz_koniec);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ln()&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;------------------------------------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    wait_for_ENTER(&amp;quot;Ked budes pripraveny, posli ENTER...&amp;quot;); &lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;V ziadnom pripade nehyb ziadnym stupnom volnosti rukou, iba z programu. Pri pohybe rukou sa servo poskodi!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by niektory stupen volnosti zjavne dosiel na svoj koniec a mohol tlacit dalej, treba robot hned vypnut!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;1. Najskor vyskusame zakladnu, ked stlacis ENTER, tak ju pripojim, otocim mierne do jednej aj do druhej strany a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by otocenie zakladne mohlo sposobit problem, tak nepokracuj dalej, odpoj kabel, robota vypni a priprav ho znovu.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    zakladna.attach(PIN_SERVO_ZAKLADNA, 540, 2400);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP + 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP - 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP);&lt;br /&gt;
    delay(500);&lt;br /&gt;
    zakladna.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;2. Teraz vyskusame ruku. Dufam, ze ich mas namontovane tak, ze stredna poloha je pri otvorenej ruke.&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ked stlacis ENTER, tak sa servo ruky da do strednej polohy, potom ho otocim o 30 stupnov vlavo a vpravo a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak ruka nie je nenamontovana tak, ze pri 90 stupnoch je otvorena, tak radsej robota vypni.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    ruka.attach(PIN_SERVO_RUKA, 540, 2400);&lt;br /&gt;
    ruka.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 90, 60);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 60, 120);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 120, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    ruka.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;3. Otestujeme lave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
    servoLave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 90, 110);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 110, 70);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 70, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoLave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;4. Prave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
    servoPrave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 90, 105);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 105, 75);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 75, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoPrave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;5. Otestujeme dotykove senzory, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    int touch1 = 0;&lt;br /&gt;
    int touch2 = 0;&lt;br /&gt;
    do {&lt;br /&gt;
      if (touch1 != digitalRead(PIN_TOUCH1))&lt;br /&gt;
      {&lt;br /&gt;
        touch1 ^= 1;&lt;br /&gt;
        if (touch1) Serial.println(&amp;quot;1 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;1 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (touch2 != digitalRead(PIN_TOUCH2))&lt;br /&gt;
      {&lt;br /&gt;
        touch2 ^= 1;&lt;br /&gt;
        if (touch2) Serial.println(&amp;quot;2 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;2 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;6. Otestujeme joystick, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    int click = 1;&lt;br /&gt;
    int x = -1;&lt;br /&gt;
    int y = -1;&lt;br /&gt;
    do {&lt;br /&gt;
      int novex = analogRead(PIN_JOY_X);&lt;br /&gt;
      int novey = analogRead(PIN_JOY_Y);&lt;br /&gt;
      if ((abs(x - novex) &amp;gt; 2) || (abs(y - novey) &amp;gt; 2))&lt;br /&gt;
      {&lt;br /&gt;
        Serial.print(&amp;quot;X=&amp;quot;); Serial.print(novex / 1000); Serial.print((novex % 1000) / 100); Serial.print((novex % 100) / 10); Serial.print(novex % 10);&lt;br /&gt;
        Serial.print(&amp;quot;, Y=&amp;quot;); Serial.print(novey / 1000); Serial.print((novey % 1000) / 100); Serial.print((novey % 100) / 10); Serial.println(novey % 10);      &lt;br /&gt;
        x = novex; y = novey;&lt;br /&gt;
      }&lt;br /&gt;
      if (click != digitalRead(PIN_JOY_SWITCH))&lt;br /&gt;
      {&lt;br /&gt;
        click ^= 1;&lt;br /&gt;
        if (click) Serial.println(&amp;quot;RELEASED&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;PRESSED&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      delay(200);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    Serial.println(&amp;quot;--------------koniec--------------&amp;quot;);&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
        pixels.show();   &lt;br /&gt;
        delay(300);&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
        pixels.show(); &lt;br /&gt;
        delay(300);  &lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 0, 100));&lt;br /&gt;
        pixels.show();&lt;br /&gt;
        delay(300);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1035</id>
		<title>Návod na poskladanie ramena</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1035"/>
		<updated>2026-08-25T12:54:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania robotického ramena ===&lt;br /&gt;
&lt;br /&gt;
Stavebnica obsahuje dva druhy matíc. Plastové matice nájdete v plastovom vrecku spolu s ďalšími súčiastkami:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Typ matice !! Použitie !! Utiahnutie&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Plastová&#039;&#039;&#039; || Kĺby, ktoré sa majú ohýbať || &#039;&#039;&#039;Neutiahnuť na doraz&#039;&#039;&#039; – skrutka sa zaryje do plastu a drží, ale kĺb musí zostať pohyblivý&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kovová&#039;&#039;&#039; || Pevné spoje || Utiahnuť, ale &#039;&#039;&#039;nie nasilu&#039;&#039;&#039; – môžete poškodiť súčiastky&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=&amp;quot;200px&amp;quot; heights=&amp;quot;200px&amp;quot;&amp;gt;&lt;br /&gt;
File:Vrece2.jpg|Vrece so špeciálnymi súčiastkami&lt;br /&gt;
File:Matky.jpg|Porovnanie matíc&lt;br /&gt;
File:GoodScrewing.png|✅ Správne utiahnutie&lt;br /&gt;
File:BadScrewing.png|❌ Príliš utiahnuté&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Žlté || 2x9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Čierne || 4x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Biele || 1x6 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 1x14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; | Zo vrecka (biele) || podložka || 2&lt;br /&gt;
|-&lt;br /&gt;
| plastová matica || 12&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 8 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov s dierou na ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rúčky || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-1x2-L || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| trojzub (divná vidlička) || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Modré || Servo XY1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Servo XY3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| ServoArm1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Červené || držiak káblov || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Kovové súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~30&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~18&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~42&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 180° servo || 3&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 1&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| napájanie batériek || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RoboticArmImage1.jpg | 500px]]&lt;br /&gt;
[[File:RoboticArmImage2.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Skontrolujte: ložisko je už asi namontované priamo v ozubenom koliesku. Ak áno, ložisko pripevníte o podstavec skrutkou  až spoločne s jeho ozubeným kolesom v kroku 19, nie v kroku 1.&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage3.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage4.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage5.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage6.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok potrebujete upevniť &#039;&#039;&#039;360° servomotorček&#039;&#039;&#039; pomocou dvoch skrutiek, ktoré sú k nemu pribalené. Skrutky naskrutkujte cez dierky v krídlach servomotora tak, aby sa zaryli do dier v krabičke. Keďže ide o 360° servo, na otočení jeho osky nezáleží.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage7.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage9.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage10.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre toto ozubené koleso s dierou pre ložisko budete potrebovať 4x M3x10 (dlhšie) skrutky. Treba ich zasunúť do ozubeného kolesa tak, aby boli hlavičky skrutiek v dierach. Z druhej strany treba matice naskrutkovať na doraz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage12.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage13.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage14.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage15.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok stačia 2x M3x8 (kratšie) skrutky na upevnenie. Pri spájaní dvoch komponentov je potrebné, aby boli stredové diery navzájom zarovnané. Spájanie môže byť sprevádzané miernym odporom, takže bude treba vynaložiť trochu viac sily, aby diely do seba zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage17.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage18.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage19.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage20.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage21.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na rotáciu držiaka na &#039;&#039;&#039;180° servo&#039;&#039;&#039;. Všimnite si, že držiak je &amp;quot;zhora&amp;quot; serva. Odporúčame pripevniť držiak serva k bielemu komponentu voľnejšie, pretože sa ešte bude nastavovať podľa ramena. Odporúčame servo nastaviť do strednej polohy 90°,[https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino použite program]. Na ozubený hriadeľ serva sa bude v kroku 6 nižšie pripájať modrá súčiastka, čo môže ísť ťažko, preto to najskôr vyskúšajte - iba modrú súčiastku a servo. Bez použitia sily to nejde, ale najjednoduchšie je asi použiť kladivko a jemne udierať kolmo zhora na modrú súčiastku, kým sa na servo nepripojí, alebo ju nasadiť len na okraj a skrutkou priskrutkovať, čím si ju &amp;quot;servo pritiahne&amp;quot;. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage23.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage24.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage25.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage26.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage27.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na to, ako pripevníte modrú ruku pre servo. Nepotrebuje matice, lebo sa do nej skrutky zaryjú a budú v nej držať. Rotácia skrutiek a matíc v U-profile je čisto voliteľná, podľa toho, ako vám to bude pohodlnejšie – musia byť len pevne priskrutkované. Zostava sa v kroku 6 bude pripájať na servo, čo je dobré aj pritiahnuť najmenšou skrutkou priloženou v plastovom sáčku serva, ale prístup skrutkovačom je potom náročný, preto sa môže oplatiť ešte nezmontovanú sústavu (bez poslednej bielej dlhej súčiastky) pripojiť na servo a až potom na strednú spojku pripojiť dlhú bielu súčiastku, na ktorej nie je modrá súčiastka.  &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage29.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage28.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage30.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší krok vyžaduje najprv pripojenie ramienka na servomotor, následne ho treba zaskrutkovať plastovou maticou a nakoniec napevno priskrutkovať držiak serva. Keďže v tomto kroku už pripájame servo do mechanickej konštrukcie (a vopred sme si ho nastavili do polohy 90°, záleží na tom ako sústavu na servo pripojíme - v akej polohe, na týchto obrázkoch zhora to nevidno. Pozrite si [[Basic_robot_-_Robot-Arm|video celého robota na stránke robota]], kde sú všetky servá na začiatku približne v 90° polohe.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage32.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage33.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage36.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage35.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage34.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší držiak na &#039;&#039;&#039; 180° servo&#039;&#039;&#039;, na ktorý si musíte dávať pozor, akým smerom ho skrutkujete! Najprv si pozrite všetky obrázky z tohto kroku, aby ste videli, ako sa má pripevniť. Opäť platí, že servo treba nastaviť do strednej polohy 90° [https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino pomocou programu].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage37.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage38.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage39.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage40.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalšia modrá ruka na servo. Ešte predtým, ako ruku nasuniete na servo, skontrolujte jeho pozíciu a nastavte ju do polohy, ktorá vám bude vyhovovať - čiže nie tak, ako na poslednom obrázku tohoto kroku, ale podľa [[Basic_robot_-_Robot-Arm|videa celého robota na stránke robota]], aby sa zo strednej polohy dokázal pohybovať do oboch strán. Znovu odporúčame najskôr kladivkom natĺcť modrú súčiastku na servo.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage41.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage42.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage43.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage44.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage45.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto jednoduchom kroku netreba plastové matice zaťahovať na doraz. Rameno sa totiž potrebuje hýbať. Naskrutkované matice by sa nemali vyvliekať tak ľahko ako kovové, preto sú vhodné na držanie pohyblivých častí. V týchto troch krokoch sa snažte montovať tak, aby sa čo najmenej muselo veľmi jemne otáčať servami (ideálne vôbec, aby sa nepoškodili). Dôkladne si pozrite a spočítajte v ktorej diere dlhých súčiastok ide skrutka, lebo v nesprávnej pozícii rameno nebude fungovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 10 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage46.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage47.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage49.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok vyžaduje dobrý výber skrutiek – dlhšie skrutky spájajú 3 steny, zatiaľ čo kratšie len 2. Trojzub (nedokonalá vidlička) je pripevnený na ramienko a zároveň drží ďalšiu časť ramena (spojené 3 steny).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 11 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage50.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage51.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage52.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage53.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage54.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Na pozícii tejto dlhej časti veľmi záleží. Ak bude spojená za trojzubom, bude pri pohybe spôsobovať väčšie trenie a nebude možné s ramenom voľne hýbať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 12 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage56.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage57.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage60.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage58.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage59.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Krátka skrutka prejde cez špeciálny držiak, cez podložku a zaryje sa do rúčky. Rúčky nie sú rovnaké – jedna má zuby posunuté o pár stupňov, aby do seba obe presne zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 13 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage61.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage62.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage63.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage64.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
180° servo nemusíte pripevniť skrutkou, stačí najprv zasunúť jedno krídlo pod zobáčik a druhé zacvaknúť. Odporúčame servo nastaviť do strednej polohy 90°,[https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino použite program], ale potom nepripevnite ruku v zatvorenej polohe, ako je na obrázku, ale do polovice otvorenej polohe. Aj v tomto kroku pripájame ozubený hriadeľ serva na plastovú súčiastku (ozubené koliesko) a najlepšie ho zasa pomocou kladivka opatrne natĺcť predtým, ako začneme s montážou v tomto kroku. Toto ozubené koliesko na servo netreba priťahovať skrutkou.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 14 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage66.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage67.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage68.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage69.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage70.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pri pripevňovaní rúčky k ramenu odporúčame držať maticu kliešťami, keďže je k nej ťažký prístup. Alternatívne môžete najprv vybrať servomotorček a potom ho priskrutkovať. Tu pomôže kamarátov pár rúk navyše...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 15 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage71.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage72.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage73.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Držiak na káble je úplne voliteľný, ale nami odporúčaný, aby ste mali prehľadnejšie usporiadané káble. Káble sa opatrne tak, aby sa nepoškodili po jednom vsunú do držiaka, ktorý sa potom pripevní dlhšou skrutkou. Namiesto toho môžete použiť kúsok drôtika, suchý zips, gumičky a podobne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 16 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage78.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage79.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage80.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage81.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage82.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage83.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage84.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage85.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage86.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok je síce dlhší, ale dosť potrebný, aby bola konštrukcia pevná (preto toľko skrutkovania). Dávajte si iba pozor na dĺžku skrutiek – tam, kde budete prechádzať cez 3 steny, treba dlhšiu skrutku. A aj tu odporúčame najskôr natĺcť ozubené koliesko na servo pomocou kladivka.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 17 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage87.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage88.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage89.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage90.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku iba odporúčame ďalšiu krátku skrutku na spojenie žltého a čierneho komponentu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 18 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage91.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage92.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage93.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage95.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage94.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 19 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage96.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage97.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage99.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage98.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage101.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage100.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage103.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage104.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Celé rameno sa jednoducho vsunie na stojan s ložiskom. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zapojenie je nasledovné:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || GPIO3&lt;br /&gt;
|-&lt;br /&gt;
| 1. 180° servo (ľavé) || GPIO4&lt;br /&gt;
|-&lt;br /&gt;
| 2. 180° servo (pravé) || GPIO5&lt;br /&gt;
|-&lt;br /&gt;
| 3. 180° servo (ruka) || GPIO6&lt;br /&gt;
|-&lt;br /&gt;
| Joystick SW || GPIO28&lt;br /&gt;
|-&lt;br /&gt;
| 1. Touch senzor || GPIO8&lt;br /&gt;
|-&lt;br /&gt;
| 2. Touch senzor || GPIO9&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRX || GPIO26 (analog1)&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRY || GPIO27 (analog2)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 20 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage105.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage106.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage107.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ak ste sa dostali až sem a postavili ste si rameno, gratulujeme! Zvládli ste postaviť ďalšieho robota. Joystick a dotykové senzory môžete pripojiť na robota tiež, napríklad tak ako je to na [[Basic_robot_-_Robot-Arm|videu celého robota na stránke robota]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1034</id>
		<title>Návod na poskladanie ramena</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1034"/>
		<updated>2026-08-25T06:38:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania robotického ramena ===&lt;br /&gt;
&lt;br /&gt;
Stavebnica obsahuje dva druhy matíc. Plastové matice nájdete v plastovom vrecku spolu s ďalšími súčiastkami:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Typ matice !! Použitie !! Utiahnutie&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Plastová&#039;&#039;&#039; || Kĺby, ktoré sa majú ohýbať || &#039;&#039;&#039;Neutiahnuť na doraz&#039;&#039;&#039; – skrutka sa zaryje do plastu a drží, ale kĺb musí zostať pohyblivý&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kovová&#039;&#039;&#039; || Pevné spoje || Utiahnuť, ale &#039;&#039;&#039;nie nasilu&#039;&#039;&#039; – môžete poškodiť súčiastky&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=&amp;quot;200px&amp;quot; heights=&amp;quot;200px&amp;quot;&amp;gt;&lt;br /&gt;
File:Vrece2.jpg|Vrece so špeciálnymi súčiastkami&lt;br /&gt;
File:Matky.jpg|Porovnanie matíc&lt;br /&gt;
File:GoodScrewing.png|✅ Správne utiahnutie&lt;br /&gt;
File:BadScrewing.png|❌ Príliš utiahnuté&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Žlté || 2x9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Čierne || 4x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Biele || 1x6 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 1x14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; | Zo vrecka (biele) || podložka || 2&lt;br /&gt;
|-&lt;br /&gt;
| plastová matica || 12&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 8 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov s dierou na ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rúčky || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-1x2-L || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| trojzub (divná vidlička) || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Modré || Servo XY1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Servo XY3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| ServoArm1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Červené || držiak káblov || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Kovové súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~30&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~18&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~42&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 180° servo || 3&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 1&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| napájanie batériek || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RoboticArmImage1.jpg | 500px]]&lt;br /&gt;
[[File:RoboticArmImage2.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Skontrolujte: ložisko je už asi namontované priamo v ozubenom koliesku. Ak áno, ložisko pripevníte o podstavec skrutkou  až spoločne s jeho ozubeným kolesom v kroku 19, nie v kroku 1.&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage3.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage4.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage5.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage6.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok potrebujete upevniť &#039;&#039;&#039;360° servomotorček&#039;&#039;&#039; pomocou dvoch skrutiek, ktoré sú k nemu pribalené. Skrutky naskrutkujte cez dierky v krídlach servomotora tak, aby sa zaryli do dier v krabičke. Keďže ide o 360° servo, na otočení jeho osky nezáleží.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage7.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage9.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage10.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre toto ozubené koleso s dierou pre ložisko budete potrebovať 4x M3x10 (dlhšie) skrutky. Treba ich zasunúť do ozubeného kolesa tak, aby boli hlavičky skrutiek v dierach. Z druhej strany treba matice naskrutkovať na doraz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage12.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage13.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage14.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage15.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok stačia 2x M3x8 (kratšie) skrutky na upevnenie. Pri spájaní dvoch komponentov je potrebné, aby boli stredové diery navzájom zarovnané. Spájanie môže byť sprevádzané miernym odporom, takže bude treba vynaložiť trochu viac sily, aby diely do seba zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage17.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage18.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage19.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage20.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage21.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na rotáciu držiaka na &#039;&#039;&#039;180° servo&#039;&#039;&#039;. Všimnite si, že držiak je &amp;quot;zhora&amp;quot; serva. Odporúčame pripevniť držiak serva k bielemu komponentu voľnejšie, pretože sa ešte bude nastavovať podľa ramena. Odporúčame servo nastaviť do strednej polohy 90°,[https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino použite program]. Na ozubený hriadeľ serva sa bude v kroku 6 nižšie pripájať modrá súčiastka, čo môže ísť ťažko, preto to najskôr vyskúšajte - iba modrú súčiastku a servo. Bez použitia sily to nejde, ale najjednoduchšie je asi použiť kladivko a jemne udierať kolmo zhora na modrú súčiastku, kým sa na servo nepripojí, alebo ju nasadiť len na okraj a skrutkou priskrutkovať, čím si ju &amp;quot;servo pritiahne&amp;quot;. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage23.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage24.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage25.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage26.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage27.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na to, ako pripevníte modrú ruku pre servo. Nepotrebuje matice, lebo sa do nej skrutky zaryjú a budú v nej držať. Rotácia skrutiek a matíc v U-profile je čisto voliteľná, podľa toho, ako vám to bude pohodlnejšie – musia byť len pevne priskrutkované. Zostava sa v kroku 6 bude pripájať na servo, čo je dobré aj pritiahnuť najmenšou skrutkou priloženou v plastovom sáčku serva, ale prístup skrutkovačom je potom náročný, preto sa môže oplatiť ešte nezmontovanú sústavu (bez poslednej bielej dlhej súčiastky) pripojiť na servo a až potom na strednú spojku pripojiť dlhú bielu súčiastku, na ktorej nie je modrá súčiastka.  &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage29.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage28.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage30.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší krok vyžaduje najprv pripojenie ramienka na servomotor, následne ho treba zaskrutkovať plastovou maticou a nakoniec napevno priskrutkovať držiak serva. Keďže v tomto kroku už pripájame servo do mechanickej konštrukcie (a vopred sme si ho nastavili do polohy 90°, záleží na tom ako sústavu na servo pripojíme - v akej polohe, na týchto obrázkoch zhora to nevidno. Pozrite si [[Basic_robot_-_Robot-Arm|video celého robota na stránke robota]], kde sú všetky servá na začiatku približne v 90° polohe.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage32.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage33.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage36.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage35.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage34.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší držiak na &#039;&#039;&#039; 180° servo&#039;&#039;&#039;, na ktorý si musíte dávať pozor, akým smerom ho skrutkujete! Najprv si pozrite všetky obrázky z tohto kroku, aby ste videli, ako sa má pripevniť. Opäť platí, že servo treba nastaviť do strednej polohy 90° [https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino pomocou programu].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage37.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage38.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage39.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage40.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalšia modrá ruka na servo. Ešte predtým, ako ruku nasuniete na servo, skontrolujte jeho pozíciu a nastavte ju do polohy, ktorá vám bude vyhovovať - čiže nie tak, ako na poslednom obrázku tohoto kroku, ale podľa [[Basic_robot_-_Robot-Arm|videa celého robota na stránke robota]], aby sa zo strednej polohy dokázal pohybovať do oboch strán. Znovu odporúčame najskôr kladivkom natĺcť modrú súčiastku na servo.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage41.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage42.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage43.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage44.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage45.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto jednoduchom kroku netreba plastové matice zaťahovať na doraz. Rameno sa totiž potrebuje hýbať. Naskrutkované matice by sa nemali vyvliekať tak ľahko ako kovové, preto sú vhodné na držanie pohyblivých častí. V týchto troch krokoch sa snažte montovať tak, aby sa čo najmenej muselo veľmi jemne otáčať servami (ideálne vôbec, aby sa nepoškodili). Dôkladne si pozrite a spočítajte v ktorej diere dlhých súčiastok ide skrutka, lebo v nesprávnej pozícii rameno nebude fungovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 10 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage46.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage47.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage49.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok vyžaduje dobrý výber skrutiek – dlhšie skrutky spájajú 3 steny, zatiaľ čo kratšie len 2. Trojzub (nedokonalá vidlička) je pripevnený na ramienko a zároveň drží ďalšiu časť ramena (spojené 3 steny).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 11 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage50.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage51.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage52.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage53.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage54.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Na pozícii tejto dlhej časti veľmi záleží. Ak bude spojená za trojzubom, bude pri pohybe spôsobovať väčšie trenie a nebude možné s ramenom voľne hýbať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 12 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage56.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage57.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage60.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage58.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage59.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Krátka skrutka prejde cez špeciálny držiak, cez podložku a zaryje sa do rúčky. Rúčky nie sú rovnaké – jedna má zuby posunuté o pár stupňov, aby do seba obe presne zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 13 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage61.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage62.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage63.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage64.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
180° servo nemusíte pripevniť skrutkou, stačí najprv zasunúť jedno krídlo pod zobáčik a druhé zacvaknúť. Odporúčame servo nastaviť do strednej polohy 90°,[https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino použite program], ale potom nepripevnite ruku v zatvorenej polohe, ako je na obrázku, ale do polovice otvorenej polohe. Aj v tomto kroku pripájame ozubený hriadeľ serva na plastovú súčiastku (ozubené koliesko) a najlepšie ho zasa pomocou kladivka opatrne natĺcť predtým, ako začneme s montážou v tomto kroku. Toto ozubené koliesko na servo netreba priťahovať skrutkou.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 14 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage66.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage67.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage68.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage69.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage70.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pri pripevňovaní rúčky k ramenu odporúčame držať maticu kliešťami, keďže je k nej ťažký prístup. Alternatívne môžete najprv vybrať servomotorček a potom ho priskrutkovať. Tu pomôže kamarátov pár rúk navyše...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 15 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage71.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage72.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage73.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Držiak na káble je úplne voliteľný, ale nami odporúčaný, aby ste mali prehľadnejšie usporiadané káble. Káble sa opatrne tak, aby sa nepoškodili po jednom vsunú do držiaka, ktorý sa potom pripevní dlhšou skrutkou. Namiesto toho môžete použiť kúsok drôtika, suchý zips, gumičky a podobne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 16 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage78.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage79.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage80.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage81.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage82.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage83.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage84.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage85.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage86.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok je síce dlhší, ale dosť potrebný, aby bola konštrukcia pevná (preto toľko skrutkovania). Dávajte si iba pozor na dĺžku skrutiek – tam, kde budete prechádzať cez 3 steny, treba dlhšiu skrutku. A aj tu odporúčame najskôr natĺcť ozubené koliesko na servo pomocou kladivka.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 17 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage87.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage88.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage89.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage90.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku iba odporúčame ďalšiu krátku skrutku na spojenie žltého a čierneho komponentu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 18 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage91.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage92.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage93.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage95.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage94.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 19 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage96.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage97.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage99.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage98.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage101.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage100.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage103.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage104.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Celé rameno sa jednoducho vsunie na stojan s ložiskom. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zapojenie je nasledovné:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || GPIO3&lt;br /&gt;
|-&lt;br /&gt;
| 1. 180° servo (ľavé) || GPIO4&lt;br /&gt;
|-&lt;br /&gt;
| 2. 180° servo (pravé) || GPIO5&lt;br /&gt;
|-&lt;br /&gt;
| 3. 180° servo (ruka) || GPIO6&lt;br /&gt;
|-&lt;br /&gt;
| Joystick SW || GPIO7&lt;br /&gt;
|-&lt;br /&gt;
| 1. Touch senzor || GPIO8&lt;br /&gt;
|-&lt;br /&gt;
| 2. Touch senzor || GPIO9&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRX || GPIO26 (analog1)&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRY || GPIO27 (analog2)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 20 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage105.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage106.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage107.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ak ste sa dostali až sem a postavili ste si rameno, gratulujeme! Zvládli ste postaviť ďalšieho robota. Joystick a dotykové senzory môžete pripojiť na robota tiež, napríklad tak ako je to na [[Basic_robot_-_Robot-Arm|videu celého robota na stránke robota]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=SG90_-_setup&amp;diff=1033</id>
		<title>SG90 - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=SG90_-_setup&amp;diff=1033"/>
		<updated>2026-08-25T06:06:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Naradie Ikonka.png|140px]]&lt;br /&gt;
== Popis ==&lt;br /&gt;
&lt;br /&gt;
V stavebnici sú dva druhy servomotorov - klasické (na plastovom vrecku označené &#039;&#039;&#039;180°&#039;&#039;&#039;), ktoré sa vedia nastaviť do požadovanej polohy v rozpätí 0-180° a tzv. &amp;quot;continuous servá&amp;quot; - čiže modifikované servá, ktoré sa krútia dokola (na plastovom vrecku označené &#039;&#039;&#039;360°&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Do akej polohy sa nastavia, alebo akou rýchlosťou sa točia continuous servá, závisí od prijatého PWM signálu (PWM = pulse-width modulation = modulácia šírkou pulzu). To znamená, že riadiaci počítač vysiela po signálom pine serva približne každých 20 ms krátky pulz dĺžky 500 - 2500 µs, ktorý priamo úmerne udáva uhol cieľovej polohy. Pri continuous servách sa rýchlosť určí hodnotou blízko stredu - ak sa od strednej šírky pulzu (šírka pulzu zodpovedá uhlu 90° klasického servra) už líši viac, tak sa rýchlosť nemení. Klasické servá sa využívajú sa napríklad na natáčanie senzorov, ramien alebo iných mechanizmov na robote, zatiaľ čo continuous servá napríklad na pohon kolies. Prečítajte si o servomotoroch viac tu: [https://howtomechatronics.com/how-it-works/how-servo-motors-work-how-to-control-servos-using-arduino/ How Servo Motors Work...]&lt;br /&gt;
&lt;br /&gt;
V plastových vreckách so servami nájdete menšie plastové vrecko, v ktorom sú: &lt;br /&gt;
* rôzne druhy bielych plastových lopatiek, ktoré sa dajú na servo primontovať&lt;br /&gt;
* dve väčšie samorezné skrutky, ktoré budeme používať na primontovanie serva do krabičky, ale inak sa používajú napr. aj na primontovanie lopatky na nejaký iný mechanický diel&lt;br /&gt;
* jedna menšia samorezná skrutka, ktorá sa má používať na upevnenie bielej lopatky (alebo iného dielu, napr. kolieska, či modrého ramena...) priamo do stredu ozubeného kolesa serva - čiže všimnite si, že tam sa ideálne nemá používať väčšia skrutka, ale táto menšia.&lt;br /&gt;
&lt;br /&gt;
Tieto doplnkové súčiastky sú vo všetkých 8 servách rovnaké a keďže tieto skrutky budeme používať aj na iné účely, môžete si ich podľa druhu vytriediť do plastových vreciek, ktoré sú k servám priložené. Samotné servá odkladajte do označených vreciek, aby ste vedeli, ktoré je aké (alebo si ich ešte nejak inak označte). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dôležité: servo nikdy neotáčame rukou, pretože sa takto ozubené prevody veľmi jednoducho pokazia. Vždy [https://github.com/Robotics-DAI-FMFI-UK/3dliga/blob/main/HWsetup/servo/center_servo/center_servo.ino použite program], ktorým si servo nastavíte do potrebnej polohy. Napríklad pri montáži 180° je väčšinou potrebné dať servo do stredu - na polohu 90°.&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
== Príprava (vkladanie do krabičiek a držiakov) ==&lt;br /&gt;
&lt;br /&gt;
Servá sa dávajú do krabičiek, do ktorých sú priskrutkované pomocou ostrých skrutiek, ktoré prichádzajú spolu so servami.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ServoSetup1.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup7.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup2.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup9.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup3.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup8.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup4.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup5.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ako si môžete všimnúť, je veľa držiakov a krabičiek na servo motorčeky s rôznymi rozmermi uchytenia. Návod na uchytenie každej krabičky na stavebnicu nájdete v sekcii [[3D models]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ServoSetup10.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup11.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup12.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup13.jpg|300px]]&lt;br /&gt;
[[File:ServoSetup14.jpg|300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zapojenie ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Kábel zo serva !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hnedý&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Červený&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Žltý&#039;&#039;&#039; || GPIO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Je veľmi dôležité pripojiť káblik správne - oranžový alebo žltý ide na žltý pin riadiacej jednotky, červený na červený pin a čierny, resp. hnedý na čierny pin. V opačnom prípade je vysoko pravdepodobné, že sa servo poškodí - prípadne rovno aj riadiaca jednotka. Servo inak môžeme pripojiť na ľubovoľný pin riadiacej jednotky 0 - 15, resp. 26 - 29 - ale v programe to musíme správne nastaviť.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1032</id>
		<title>Basic robot - Robot-Arm</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1032"/>
		<updated>2026-08-25T05:49:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robotické rameno je mechanicky najnáročnejší základný model. Má 6 stupňov voľnosti - každý stupeň voľnosti je nejaký kĺb, ktorým otáča servo motor - buď bez ohraničenia (continuous servo, tiež niekedy 360-stupňové servo) alebo klasické s rozsahom otáčania 180 stupňov.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie ramena |  Návod na skladanie ramena]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý opatrný test, ktorý postupne po jednom pripája a odpája všetky servá a vykoná s nimi malý pohyb, potom otestuje dotykové senzory a joystick.&lt;br /&gt;
Stačí pripojenie cez USB3 port. Treba sledovať inštrukcie v serial monitore.&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V žiadnom prípade sa nesnažte pohybovať žiadnym servom rukou, vždy iba z programu. Pokus o pohyb serva rukou ho s veľkou pravdepodobnosťou poškodí!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;jF80An-Dxao&amp;lt;/youtube&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zmenou hodnoty SERVO_STOP (napr. na 93 alebo podobnú blízku hodnotu 90) môžete skúsiť dosiahnuť, aby sa robot v základni otáčal rovnomernejšie vľavo a vpravo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const int PIN_SERVO_ZAKLADNA = 3;&lt;br /&gt;
const int PIN_SERVO_LAVE    = 4;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 5;&lt;br /&gt;
const int PIN_SERVO_RUKA = 6;&lt;br /&gt;
&lt;br /&gt;
const int PIN_TOUCH1 = 8;&lt;br /&gt;
const int PIN_TOUCH2 = 9;&lt;br /&gt;
&lt;br /&gt;
const int PIN_JOY_SWITCH = 7;&lt;br /&gt;
const int PIN_JOY_X = 26;&lt;br /&gt;
const int PIN_JOY_Y = 27;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP = 93; // &amp;quot;stop&amp;quot; poloha pre 360° servá&lt;br /&gt;
&lt;br /&gt;
Servo zakladna;&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
Servo ruka;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  pinMode(PIN_TOUCH1, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_TOUCH2, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_JOY_SWITCH, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serial_vycisti() {&lt;br /&gt;
    while (Serial.available()) &lt;br /&gt;
    {&lt;br /&gt;
      Serial.read();&lt;br /&gt;
      delay(10);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void wait_for_ENTER(const char *sprava = 0)&lt;br /&gt;
{&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    unsigned long t1 = millis();&lt;br /&gt;
    do { &lt;br /&gt;
        if (sprava)&lt;br /&gt;
        {&lt;br /&gt;
            if (millis() - t1 &amp;gt; 2000)&lt;br /&gt;
            {&lt;br /&gt;
                if (sprava) Serial.println(sprava);&lt;br /&gt;
                t1 = millis();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        delay(10);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    &lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void pomaly_pohyb(Servo *s, int poz_zaciatok, int poz_koniec)&lt;br /&gt;
{&lt;br /&gt;
    int poz = poz_zaciatok;&lt;br /&gt;
    while (poz != poz_koniec)&lt;br /&gt;
    {&lt;br /&gt;
       s-&amp;gt;write(poz);&lt;br /&gt;
       delay(30);&lt;br /&gt;
       if (poz_koniec &amp;gt; poz) poz++;&lt;br /&gt;
       else poz--;&lt;br /&gt;
    } &lt;br /&gt;
    s-&amp;gt;write(poz_koniec);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ln()&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;------------------------------------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    wait_for_ENTER(&amp;quot;Ked budes pripraveny, posli ENTER...&amp;quot;); &lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;V ziadnom pripade nehyb ziadnym stupnom volnosti rukou, iba z programu. Pri pohybe rukou sa servo poskodi!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by niektory stupen volnosti zjavne dosiel na svoj koniec a mohol tlacit dalej, treba robot hned vypnut!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;1. Najskor vyskusame zakladnu, ked stlacis ENTER, tak ju pripojim, otocim mierne do jednej aj do druhej strany a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by otocenie zakladne mohlo sposobit problem, tak nepokracuj dalej, odpoj kabel, robota vypni a priprav ho znovu.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    zakladna.attach(PIN_SERVO_ZAKLADNA, 540, 2400);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP + 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP - 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP);&lt;br /&gt;
    delay(500);&lt;br /&gt;
    zakladna.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;2. Teraz vyskusame ruku. Dufam, ze ich mas namontovane tak, ze stredna poloha je pri otvorenej ruke.&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ked stlacis ENTER, tak sa servo ruky da do strednej polohy, potom ho otocim o 30 stupnov vlavo a vpravo a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak ruka nie je nenamontovana tak, ze pri 90 stupnoch je otvorena, tak radsej robota vypni.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    ruka.attach(PIN_SERVO_RUKA, 540, 2400);&lt;br /&gt;
    ruka.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 90, 60);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 60, 120);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 120, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    ruka.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;3. Otestujeme lave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
    servoLave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 90, 110);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 110, 70);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 70, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoLave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;4. Prave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
    servoPrave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 90, 105);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 105, 75);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 75, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoPrave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;5. Otestujeme dotykove senzory, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    int touch1 = 0;&lt;br /&gt;
    int touch2 = 0;&lt;br /&gt;
    do {&lt;br /&gt;
      if (touch1 != digitalRead(PIN_TOUCH1))&lt;br /&gt;
      {&lt;br /&gt;
        touch1 ^= 1;&lt;br /&gt;
        if (touch1) Serial.println(&amp;quot;1 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;1 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (touch2 != digitalRead(PIN_TOUCH2))&lt;br /&gt;
      {&lt;br /&gt;
        touch2 ^= 1;&lt;br /&gt;
        if (touch2) Serial.println(&amp;quot;2 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;2 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;6. Otestujeme joystick, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    int click = 1;&lt;br /&gt;
    int x = -1;&lt;br /&gt;
    int y = -1;&lt;br /&gt;
    do {&lt;br /&gt;
      int novex = analogRead(PIN_JOY_X);&lt;br /&gt;
      int novey = analogRead(PIN_JOY_Y);&lt;br /&gt;
      if ((abs(x - novex) &amp;gt; 2) || (abs(y - novey) &amp;gt; 2))&lt;br /&gt;
      {&lt;br /&gt;
        Serial.print(&amp;quot;X=&amp;quot;); Serial.print(novex / 1000); Serial.print((novex % 1000) / 100); Serial.print((novex % 100) / 10); Serial.print(novex % 10);&lt;br /&gt;
        Serial.print(&amp;quot;, Y=&amp;quot;); Serial.print(novey / 1000); Serial.print((novey % 1000) / 100); Serial.print((novey % 100) / 10); Serial.println(novey % 10);      &lt;br /&gt;
        x = novex; y = novey;&lt;br /&gt;
      }&lt;br /&gt;
      if (click != digitalRead(PIN_JOY_SWITCH))&lt;br /&gt;
      {&lt;br /&gt;
        click ^= 1;&lt;br /&gt;
        if (click) Serial.println(&amp;quot;RELEASED&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;PRESSED&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      delay(200);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    Serial.println(&amp;quot;--------------koniec--------------&amp;quot;);&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
        pixels.show();   &lt;br /&gt;
        delay(300);&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
        pixels.show(); &lt;br /&gt;
        delay(300);  &lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 0, 100));&lt;br /&gt;
        pixels.show();&lt;br /&gt;
        delay(300);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1031</id>
		<title>Basic robot - Robot-Arm</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Robot-Arm&amp;diff=1031"/>
		<updated>2026-08-25T05:48:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robotické rameno je mechanicky najnáročnejší základný model. Má 6 stupňov voľnosti - každý stupeň voľnosti je nejaký kĺb, ktorým otáča servo motor - buď bez ohraničenia (continuous servo, tiež niekedy 360-stupňové servo) alebo klasické s rozsahom otáčania 180 stupňov.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie ramena |  Návod na skladanie ramena]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý opatrný test, ktorý postupne po jednom pripája a odpája všetky servá a vykoná s nimi malý pohyb, potom otestuje dotykové senzory a joystick.&lt;br /&gt;
Stačí pripojenie cez USB3 port. Treba sledovať inštrukcie v serial monitore.&lt;br /&gt;
&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics | manuále jednotlivej súčiastky ]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;jF80An-Dxao&amp;lt;/youtube&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ňZmenou hodnoty SERVO_STOP (napr. na 93 alebo podobnú blízku hodnotu 90) môžete skúsiť dosiahnuť, aby sa robot v základni otáčal rovnomernejšie vľavo a vpravo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define PIN        16       &lt;br /&gt;
#define NUMPIXELS  1      &lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const int PIN_SERVO_ZAKLADNA = 3;&lt;br /&gt;
const int PIN_SERVO_LAVE    = 4;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 5;&lt;br /&gt;
const int PIN_SERVO_RUKA = 6;&lt;br /&gt;
&lt;br /&gt;
const int PIN_TOUCH1 = 8;&lt;br /&gt;
const int PIN_TOUCH2 = 9;&lt;br /&gt;
&lt;br /&gt;
const int PIN_JOY_SWITCH = 7;&lt;br /&gt;
const int PIN_JOY_X = 26;&lt;br /&gt;
const int PIN_JOY_Y = 27;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP = 93; // &amp;quot;stop&amp;quot; poloha pre 360° servá&lt;br /&gt;
&lt;br /&gt;
Servo zakladna;&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
Servo ruka;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pixels.begin(); &lt;br /&gt;
  pixels.clear(); &lt;br /&gt;
  pinMode(PIN_TOUCH1, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_TOUCH2, INPUT_PULLUP);&lt;br /&gt;
  pinMode(PIN_JOY_SWITCH, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serial_vycisti() {&lt;br /&gt;
    while (Serial.available()) &lt;br /&gt;
    {&lt;br /&gt;
      Serial.read();&lt;br /&gt;
      delay(10);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void wait_for_ENTER(const char *sprava = 0)&lt;br /&gt;
{&lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    unsigned long t1 = millis();&lt;br /&gt;
    do { &lt;br /&gt;
        if (sprava)&lt;br /&gt;
        {&lt;br /&gt;
            if (millis() - t1 &amp;gt; 2000)&lt;br /&gt;
            {&lt;br /&gt;
                if (sprava) Serial.println(sprava);&lt;br /&gt;
                t1 = millis();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        delay(10);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
    &lt;br /&gt;
    pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
    pixels.show();   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void pomaly_pohyb(Servo *s, int poz_zaciatok, int poz_koniec)&lt;br /&gt;
{&lt;br /&gt;
    int poz = poz_zaciatok;&lt;br /&gt;
    while (poz != poz_koniec)&lt;br /&gt;
    {&lt;br /&gt;
       s-&amp;gt;write(poz);&lt;br /&gt;
       delay(30);&lt;br /&gt;
       if (poz_koniec &amp;gt; poz) poz++;&lt;br /&gt;
       else poz--;&lt;br /&gt;
    } &lt;br /&gt;
    s-&amp;gt;write(poz_koniec);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ln()&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;------------------------------------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    wait_for_ENTER(&amp;quot;Ked budes pripraveny, posli ENTER...&amp;quot;); &lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;V ziadnom pripade nehyb ziadnym stupnom volnosti rukou, iba z programu. Pri pohybe rukou sa servo poskodi!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by niektory stupen volnosti zjavne dosiel na svoj koniec a mohol tlacit dalej, treba robot hned vypnut!!!&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;************************************************************************************************************&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;1. Najskor vyskusame zakladnu, ked stlacis ENTER, tak ju pripojim, otocim mierne do jednej aj do druhej strany a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak by otocenie zakladne mohlo sposobit problem, tak nepokracuj dalej, odpoj kabel, robota vypni a priprav ho znovu.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    zakladna.attach(PIN_SERVO_ZAKLADNA, 540, 2400);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP + 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP - 8);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    zakladna.write(SERVO_STOP);&lt;br /&gt;
    delay(500);&lt;br /&gt;
    zakladna.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;2. Teraz vyskusame ruku. Dufam, ze ich mas namontovane tak, ze stredna poloha je pri otvorenej ruke.&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ked stlacis ENTER, tak sa servo ruky da do strednej polohy, potom ho otocim o 30 stupnov vlavo a vpravo a zasa odpojim...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Ak ruka nie je nenamontovana tak, ze pri 90 stupnoch je otvorena, tak radsej robota vypni.&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
&lt;br /&gt;
    ruka.attach(PIN_SERVO_RUKA, 540, 2400);&lt;br /&gt;
    ruka.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 90, 60);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 60, 120);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;ruka, 120, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    ruka.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;3. Otestujeme lave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
    servoLave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 90, 110);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 110, 70);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoLave, 70, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoLave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;4. Prave rameno. Po stlaceni ENTER ho pripojim, presuniem do stredu, kusok do jednej strany a kusok do druhej...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
    servoPrave.write(90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 90, 105);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 105, 75);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    pomaly_pohyb(&amp;amp;servoPrave, 75, 90);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    servoPrave.detach();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;5. Otestujeme dotykove senzory, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    int touch1 = 0;&lt;br /&gt;
    int touch2 = 0;&lt;br /&gt;
    do {&lt;br /&gt;
      if (touch1 != digitalRead(PIN_TOUCH1))&lt;br /&gt;
      {&lt;br /&gt;
        touch1 ^= 1;&lt;br /&gt;
        if (touch1) Serial.println(&amp;quot;1 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;1 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (touch2 != digitalRead(PIN_TOUCH2))&lt;br /&gt;
      {&lt;br /&gt;
        touch2 ^= 1;&lt;br /&gt;
        if (touch2) Serial.println(&amp;quot;2 ON&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;2 OFF&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    ln();&lt;br /&gt;
    Serial.println(&amp;quot;6. Otestujeme joystick, ked si pripraveny, stlac ENTER...&amp;quot;);&lt;br /&gt;
    wait_for_ENTER();&lt;br /&gt;
    Serial.println(&amp;quot;Test bude ukonceny, ked stlacis ENTER...&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    int click = 1;&lt;br /&gt;
    int x = -1;&lt;br /&gt;
    int y = -1;&lt;br /&gt;
    do {&lt;br /&gt;
      int novex = analogRead(PIN_JOY_X);&lt;br /&gt;
      int novey = analogRead(PIN_JOY_Y);&lt;br /&gt;
      if ((abs(x - novex) &amp;gt; 2) || (abs(y - novey) &amp;gt; 2))&lt;br /&gt;
      {&lt;br /&gt;
        Serial.print(&amp;quot;X=&amp;quot;); Serial.print(novex / 1000); Serial.print((novex % 1000) / 100); Serial.print((novex % 100) / 10); Serial.print(novex % 10);&lt;br /&gt;
        Serial.print(&amp;quot;, Y=&amp;quot;); Serial.print(novey / 1000); Serial.print((novey % 1000) / 100); Serial.print((novey % 100) / 10); Serial.println(novey % 10);      &lt;br /&gt;
        x = novex; y = novey;&lt;br /&gt;
      }&lt;br /&gt;
      if (click != digitalRead(PIN_JOY_SWITCH))&lt;br /&gt;
      {&lt;br /&gt;
        click ^= 1;&lt;br /&gt;
        if (click) Serial.println(&amp;quot;RELEASED&amp;quot;);&lt;br /&gt;
        else Serial.println(&amp;quot;PRESSED&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      delay(200);&lt;br /&gt;
    } while (!Serial.available());&lt;br /&gt;
    serial_vycisti();&lt;br /&gt;
&lt;br /&gt;
    Serial.println(&amp;quot;--------------koniec--------------&amp;quot;);&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(100, 0, 0));&lt;br /&gt;
        pixels.show();   &lt;br /&gt;
        delay(300);&lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 100, 0));&lt;br /&gt;
        pixels.show(); &lt;br /&gt;
        delay(300);  &lt;br /&gt;
        pixels.setPixelColor(0, pixels.Color(0, 0, 100));&lt;br /&gt;
        pixels.show();&lt;br /&gt;
        delay(300);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1030</id>
		<title>Návod na poskladanie ramena</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1030"/>
		<updated>2026-08-23T11:20:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania robotického ramena ===&lt;br /&gt;
&lt;br /&gt;
Stavebnica obsahuje dva druhy matíc. Plastové matice nájdete v plastovom vrecku spolu s ďalšími súčiastkami:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Typ matice !! Použitie !! Utiahnutie&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Plastová&#039;&#039;&#039; || Kĺby, ktoré sa majú ohýbať || &#039;&#039;&#039;Neutiahnuť na doraz&#039;&#039;&#039; – skrutka sa zaryje do plastu a drží, ale kĺb musí zostať pohyblivý&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kovová&#039;&#039;&#039; || Pevné spoje || Utiahnuť, ale &#039;&#039;&#039;nie nasilu&#039;&#039;&#039; – môžete poškodiť súčiastky&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=&amp;quot;200px&amp;quot; heights=&amp;quot;200px&amp;quot;&amp;gt;&lt;br /&gt;
File:Vrece2.jpg|Vrece so špeciálnymi súčiastkami&lt;br /&gt;
File:Matky.jpg|Porovnanie matíc&lt;br /&gt;
File:GoodScrewing.png|✅ Správne utiahnutie&lt;br /&gt;
File:BadScrewing.png|❌ Príliš utiahnuté&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Žlté || 2x9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Čierne || 4x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Biele || 1x6 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 1x14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; | Zo vrecka (biele) || podložka || 2&lt;br /&gt;
|-&lt;br /&gt;
| plastová matica || 12&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 8 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov s dierou na ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rúčky || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-1x2-L || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| trojzub (divná vidlička) || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Modré || Servo XY1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Servo XY3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| ServoArm1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Červené || držiak káblov || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Kovové súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~30&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~18&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~42&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 180° servo || 3&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 1&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| napájanie batériek || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RoboticArmImage1.jpg | 500px]]&lt;br /&gt;
[[File:RoboticArmImage2.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Skontrolujte: ložisko je už asi namontované priamo v ozubenom koliesku.&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage3.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage4.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage5.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage6.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok potrebujete upevniť &#039;&#039;&#039;360° servomotorček&#039;&#039;&#039; pomocou dvoch skrutiek, ktoré sú k nemu pribalené. Skrutky naskrutkujte cez dierky v krídlach servomotora tak, aby sa zaryli do dier v krabičke.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage7.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage9.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage10.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre toto ozubené koleso s dierou pre ložisko budete potrebovať 4x M3x10 (dlhšie) skrutky. Treba ich zasunúť do ozubeného kolesa tak, aby boli hlavičky skrutiek v dierach. Z druhej strany treba matice naskrutkovať na doraz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage12.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage13.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage14.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage15.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok stačia 2x M3x8 (kratšie) skrutky na upevnenie. Pri spájaní dvoch komponentov je potrebné, aby boli stredové diery navzájom zarovnané. Spájanie je sprevádzané miernym odporom, takže bude treba vynaložiť trochu viac sily, aby diely do seba zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage17.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage18.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage19.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage20.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage21.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na rotáciu držiaka na &#039;&#039;&#039;180° servo&#039;&#039;&#039;. Odporúčame pripevniť držiak serva k bielemu komponentu voľnejšie, pretože sa ešte bude nastavovať podľa ramena.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage23.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage24.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage25.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage26.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage27.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na to, ako pripevníte modrú ruku pre servo. Nepotrebuje matice, lebo sa do nej skrutky zaryjú a budú v nej držať. Rotácia skrutiek a matíc v U-profile je čisto voliteľná, podľa toho, ako vám to bude pohodlnejšie – musia byť len pevne priskrutkované.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage29.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage28.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage30.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší krok vyžaduje najprv pripojenie ramienka na servomotor, následne ho treba zaskrutkovať plastovou maticou a nakoniec napevno priskrutkovať držiak serva.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage32.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage33.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage36.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage35.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage34.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší držiak na &#039;&#039;&#039; 180° servo&#039;&#039;&#039;, na ktorý si musíte dávať pozor, akým smerom ho skrutkujete! Najprv si pozrite všetky obrázky z tohto kroku, aby ste videli, ako sa má pripevniť.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage37.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage38.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage39.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage40.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalšia modrá ruka na servo. Ešte predtým, ako ruku nasuniete na servo, skontrolujte jeho pozíciu a nastavte ju do polohy, ktorá vám bude vyhovovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage41.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage42.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage43.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage44.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage45.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto jednoduchom kroku netreba plastové matice zaťahovať na doraz. Rameno sa totiž potrebuje hýbať. Naskrutkované matice by sa nemali vyvliekať tak ľahko ako kovové, preto sú vhodné na držanie pohyblivých častí.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 10 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage46.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage47.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage49.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok vyžaduje dobrý výber skrutiek – dlhšie skrutky spájajú 3 steny, zatiaľ čo kratšie len 2. Trojzub (nedokonalá vidlička) je pripevnený na ramienko a zároveň drží ďalšiu časť ramena (spojené 3 steny).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 11 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage50.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage51.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage52.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage53.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage54.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Na pozícii tejto dlhej časti veľmi záleží. Ak bude spojená za trojzubom, bude pri pohybe spôsobovať väčšie trenie a nebude možné s ramenom voľne hýbať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 12 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage56.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage57.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage60.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage58.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage59.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Krátka skrutka prejde cez špeciálny držiak, cez podložku a zaryje sa do rúčky. Rúčky nie sú rovnaké – jedna má zuby posunuté o pár stupňov, aby do seba obe presne zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 13 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage61.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage62.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage63.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage64.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
180° servo nemusíte pripevniť skrutkou, stačí najprv zasunúť jedno krídlo pod zobáčik a druhé zacvaknúť.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 14 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage66.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage67.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage68.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage69.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage70.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pri pripevňovaní rúčky k ramenu odporúčame držať maticu kliešťami, keďže je k nej ťažký prístup. Alternatívne môžete najprv vybrať servomotorček a potom ho priskrutkovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 15 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage71.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage72.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage73.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Držiak na káble je úplne voliteľný, ale nami odporúčaný, aby ste mali prehľadnejšie usporiadané káble. Káble sa jednoducho vsunú do držiaka, ktorý sa potom pripevní dlhšou skrutkou.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 16 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage78.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage79.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage80.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage81.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage82.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage83.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage84.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage85.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage86.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok je síce dlhší, ale dosť potrebný, aby bola konštrukcia pevná (preto toľko skrutkovania). Dávajte si iba pozor na dĺžku skrutiek – tam, kde budete prechádzať cez 3 steny, treba dlhšiu skrutku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 17 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage87.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage88.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage89.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage90.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku iba odporúčame ďalšiu krátku skrutku na spojenie žltého a čierneho komponentu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 18 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage91.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage92.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage93.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage95.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage94.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 19 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage96.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage97.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage99.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage98.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage101.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage100.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage103.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage104.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Celé rameno sa jednoducho vsunie na stojan s ložiskom. Zapojenie je nasledovné:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || GPIO3&lt;br /&gt;
|-&lt;br /&gt;
| 1. 180° servo (ľavé) || GPIO4&lt;br /&gt;
|-&lt;br /&gt;
| 2. 180° servo (pravé) || GPIO5&lt;br /&gt;
|-&lt;br /&gt;
| 3. 180° servo (ruka) || GPIO6&lt;br /&gt;
|-&lt;br /&gt;
| Joystick SW || GPIO7&lt;br /&gt;
|-&lt;br /&gt;
| 1. Touch senzor || GPIO8&lt;br /&gt;
|-&lt;br /&gt;
| 2. Touch senzor || GPIO9&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRX || GPIO26 (analog1)&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRY || GPIO27 (analog2)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 20 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage105.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage106.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage107.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ak ste sa dostali až sem a postavili ste si rameno, gratulujeme! Zvládli ste postaviť ďalšieho robota.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1029</id>
		<title>Návod na poskladanie ramena</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=N%C3%A1vod_na_poskladanie_ramena&amp;diff=1029"/>
		<updated>2026-08-23T10:33:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Manuál skladania robotického ramena ===&lt;br /&gt;
&lt;br /&gt;
Stavebnica obsahuje dva druhy matíc. Plastové matice nájdete v plastovom vrecku spolu s ďalšími súčiastkami:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Typ matice !! Použitie !! Utiahnutie&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Plastová&#039;&#039;&#039; || Kĺby, ktoré sa majú ohýbať || &#039;&#039;&#039;Neutiahnuť na doraz&#039;&#039;&#039; – skrutka sa zaryje do plastu a drží, ale kĺb musí zostať pohyblivý&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kovová&#039;&#039;&#039; || Pevné spoje || Utiahnuť, ale &#039;&#039;&#039;nie nasilu&#039;&#039;&#039; – môžete poškodiť súčiastky&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=&amp;quot;200px&amp;quot; heights=&amp;quot;200px&amp;quot;&amp;gt;&lt;br /&gt;
File:Vrece2.jpg|Vrece so špeciálnymi súčiastkami&lt;br /&gt;
File:Matky.jpg|Porovnanie matíc&lt;br /&gt;
File:GoodScrewing.png|✅ Správne utiahnutie&lt;br /&gt;
File:BadScrewing.png|❌ Príliš utiahnuté&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 2; min-width: 300px;&amp;quot;&amp;gt;&lt;br /&gt;
== Vytlačené súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Skupina !! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Žlté || 2x9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Čierne || 4x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x7-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6x8-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Biele || 1x6 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x9 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 1x14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; | Zo vrecka (biele) || podložka || 2&lt;br /&gt;
|-&lt;br /&gt;
| plastová matica || 12&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 8 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov || 1&lt;br /&gt;
|-&lt;br /&gt;
| ozubené koleso 24 zubov s dierou na ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rúčky || 2&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-1x2-L || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-U || 1&lt;br /&gt;
|-&lt;br /&gt;
| trojzub (divná vidlička) || 1&lt;br /&gt;
|-&lt;br /&gt;
| stojan || 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Modré || Servo XY1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Servo XY3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| ServoArm1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Červené || držiak káblov || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Kovové súčiastky ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| ložisko || 1&lt;br /&gt;
|-&lt;br /&gt;
| servo skrutka || 6&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×8 (menšia) || ~30&lt;br /&gt;
|-&lt;br /&gt;
| skrutka M3×10 (väčšia) || ~18&lt;br /&gt;
|-&lt;br /&gt;
| matica M3 || ~42&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1; min-width: 220px;&amp;quot;&amp;gt;&lt;br /&gt;
== Elektronika ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! Počet&lt;br /&gt;
|-&lt;br /&gt;
| 180° servo || 3&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || 1&lt;br /&gt;
|-&lt;br /&gt;
| RP2350 || 1&lt;br /&gt;
|-&lt;br /&gt;
| napájanie batériek || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RoboticArmImage1.jpg | 500px]]&lt;br /&gt;
[[File:RoboticArmImage2.jpg | 500px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Postup skladania: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 1 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage3.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage4.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage5.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage6.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok potrebujete upevniť &#039;&#039;&#039;360° servomotorček&#039;&#039;&#039; pomocou dvoch skrutiek, ktoré sú k nemu pribalené. Skrutky naskrutkujte cez dierky v krídlach servomotora tak, aby sa zaryli do dier v krabičke.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 2 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage7.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage9.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage10.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage11.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre toto ozubené koleso s dierou pre ložisko budete potrebovať 4x M3x10 (dlhšie) skrutky. Treba ich zasunúť do ozubeného kolesa tak, aby boli hlavičky skrutiek v dierach. Z druhej strany treba matice naskrutkovať na doraz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 3 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage12.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage13.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage14.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage15.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage16.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pre tento krok stačia 2x M3x8 (kratšie) skrutky na upevnenie. Pri spájaní dvoch komponentov je potrebné, aby boli stredové diery navzájom zarovnané. Spájanie je sprevádzané miernym odporom, takže bude treba vynaložiť trochu viac sily, aby diely do seba zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 4 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage17.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage18.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage19.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage20.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage21.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage22.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na rotáciu držiaka na &#039;&#039;&#039;180° servo&#039;&#039;&#039;. Odporúčame pripevniť držiak serva k bielemu komponentu voľnejšie, pretože sa ešte bude nastavovať podľa ramena.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 5 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage23.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage24.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage25.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage26.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage27.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku si treba dávať pozor na to, ako pripevníte modrú ruku pre servo. Nepotrebuje matice, lebo sa do nej skrutky zaryjú a budú v nej držať. Rotácia skrutiek a matíc v U-profile je čisto voliteľná, podľa toho, ako vám to bude pohodlnejšie – musia byť len pevne priskrutkované.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 6 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage29.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage28.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage30.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage31.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší krok vyžaduje najprv pripojenie ramienka na servomotor, následne ho treba zaskrutkovať plastovou maticou a nakoniec napevno priskrutkovať držiak serva.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 7 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage32.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage33.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage36.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage35.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage34.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalší držiak na &#039;&#039;&#039; 180° servo&#039;&#039;&#039;, na ktorý si musíte dávať pozor, akým smerom ho skrutkujete! Najprv si pozrite všetky obrázky z tohto kroku, aby ste videli, ako sa má pripevniť.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Krok 8 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage37.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage38.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage39.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage40.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ďalšia modrá ruka na servo. Ešte predtým, ako ruku nasuniete na servo, skontrolujte jeho pozíciu a nastavte ju do polohy, ktorá vám bude vyhovovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 9 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage41.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage42.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage43.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage44.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage45.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto jednoduchom kroku netreba plastové matice zaťahovať na doraz. Rameno sa totiž potrebuje hýbať. Naskrutkované matice by sa nemali vyvliekať tak ľahko ako kovové, preto sú vhodné na držanie pohyblivých častí.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 10 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage46.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage47.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage49.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage48.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok vyžaduje dobrý výber skrutiek – dlhšie skrutky spájajú 3 steny, zatiaľ čo kratšie len 2. Trojzub (nedokonalá vidlička) je pripevnený na ramienko a zároveň drží ďalšiu časť ramena (spojené 3 steny).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 11 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage50.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage51.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage52.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage53.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage54.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Na pozícii tejto dlhej časti veľmi záleží. Ak bude spojená za trojzubom, bude pri pohybe spôsobovať väčšie trenie a nebude možné s ramenom voľne hýbať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 12 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage56.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage57.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage60.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage58.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage59.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Krátka skrutka prejde cez špeciálny držiak, cez podložku a zaryje sa do rúčky. Rúčky nie sú rovnaké – jedna má zuby posunuté o pár stupňov, aby do seba obe presne zapadli.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 13 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage61.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage62.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage63.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage64.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
180° servo nemusíte pripevniť skrutkou, stačí najprv zasunúť jedno krídlo pod zobáčik a druhé zacvaknúť.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 14 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage66.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage67.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage68.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage69.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage70.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Pri pripevňovaní rúčky k ramenu odporúčame držať maticu kliešťami, keďže je k nej ťažký prístup. Alternatívne môžete najprv vybrať servomotorček a potom ho priskrutkovať.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 15 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage71.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage72.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage73.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Držiak na káble je úplne voliteľný, ale nami odporúčaný, aby ste mali prehľadnejšie usporiadané káble. Káble sa jednoducho vsunú do držiaka, ktorý sa potom pripevní dlhšou skrutkou.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 16 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage78.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage79.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage80.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage81.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage82.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage83.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage84.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage85.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage86.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Tento krok je síce dlhší, ale dosť potrebný, aby bola konštrukcia pevná (preto toľko skrutkovania). Dávajte si iba pozor na dĺžku skrutiek – tam, kde budete prechádzať cez 3 steny, treba dlhšiu skrutku.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 17 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage87.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage88.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage89.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage90.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
V tomto kroku iba odporúčame ďalšiu krátku skrutku na spojenie žltého a čierneho komponentu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 18 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage91.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage92.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage93.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage95.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage94.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 19 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage96.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage97.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage99.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage98.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage101.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage100.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage103.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage104.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Celé rameno sa jednoducho vsunie na stojan s ložiskom. Zapojenie je nasledovné:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Súčiastka !! GPIO&lt;br /&gt;
|-&lt;br /&gt;
| 360° servo || GPIO3&lt;br /&gt;
|-&lt;br /&gt;
| 1. 180° servo (ľavé) || GPIO4&lt;br /&gt;
|-&lt;br /&gt;
| 2. 180° servo (pravé) || GPIO5&lt;br /&gt;
|-&lt;br /&gt;
| 3. 180° servo (ruka) || GPIO6&lt;br /&gt;
|-&lt;br /&gt;
| Joystick SW || GPIO7&lt;br /&gt;
|-&lt;br /&gt;
| 1. Touch senzor || GPIO8&lt;br /&gt;
|-&lt;br /&gt;
| 2. Touch senzor || GPIO9&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRX || GPIO26 (analog1)&lt;br /&gt;
|-&lt;br /&gt;
| Joystick VRY || GPIO27 (analog2)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 2px solid #999; padding: 8px; margin-bottom: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Krok 20 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 8px; padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:RoboticArmImage105.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage106.jpg | 300px]]&lt;br /&gt;
[[File:RoboticArmImage107.jpg | 300px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Ak ste sa dostali až sem a postavili ste si rameno, gratulujeme! Zvládli ste postaviť ďalšieho robota.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1028</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1028"/>
		<updated>2026-08-23T10:06:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.1.2. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1027</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Tutorial&amp;diff=1027"/>
		<updated>2026-08-23T09:57:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vitajte v tutoriále! Nájdete tu množstvo cvičení a úloh, ktoré môžete so stavebnicou vyriešiť, aby ste sa dôkladne zoznámili s obsahom stavebnice, s princípmi stavania, riadenia a programovania jednoduchých robotov. Veľa zábavy!&lt;br /&gt;
&lt;br /&gt;
== 1. Elektronické súčiastky ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Jednoduché roboty ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Prieskumník ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zostrojte robot Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
podľa [[Basic robot - Explorer|návodu na jeho samostatnej stránke]] a vyskúšajte aj základný program, ktorý je k návodu priložený.   &lt;br /&gt;
 &lt;br /&gt;
==== 2.1.2. Prieskumník ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujte pre Prieskumníka prieskumnícky program:&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# pokračuje, až kým nepríde k prekážke&lt;br /&gt;
# pred prekážkou zastane&lt;br /&gt;
# mierne cúvne, aby mal dostatok miesta na otočenie &lt;br /&gt;
# otočí sa do iného smeru, a znovu sa rozbehne vpred, takže pokračuje krokom 1.&lt;br /&gt;
 &lt;br /&gt;
Môže to vyzerať napríklad takto: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;bgVWf7nNSCU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie: &lt;br /&gt;
* robot sa pred prekážkou bude otáčať do náhodnej strany vľavo/vpravo&lt;br /&gt;
* robot sa bude otáčať o náhodný uhol&lt;br /&gt;
* robot pred prekážkou najskôr zapípa sirénkou a chvíľu počká, ak prekážka zmizne, pokračuje ďalej rovno, ak nie, tak sa otáča do iného smeru&lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Robotický pes ====&lt;br /&gt;
&lt;br /&gt;
Pre Prieskumníka vytvorte takýto program: &lt;br /&gt;
# pred robotom sa dopredu-dozadu náhodne pohybuje jeho pán - to môže byť hocijaký predmet, ktorý dobre odráža ultrazvuk a pohybujeme ho priamo rukou &lt;br /&gt;
# pes si udržuje vhodnú vzdialenosť:&lt;br /&gt;
## ak je pán príliš ďaleko (napr. ďalej ako 40 cm), pes ide rovno za ním (aby mu nebolo smutno)&lt;br /&gt;
## ak je pán príliš blízko (napr. bližšie ako 20 cm), pes cúva priamo vzad (aby ho pán nezašliapol) &lt;br /&gt;
## ak je pán v ideálnej vzdialenosti (napr. medzi 20 a 40 cm), pes sa nehýbe a čaká na ďalší pánov pohyb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;lmJY3cyl7qc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžete začať tým, že vyriešite iba pohyb vpred/vzad (agilný pes) a zastavenie na mieste pridáte až neskôr (pes flegmatik).&lt;br /&gt;
&lt;br /&gt;
Námety na vylepšenie:&lt;br /&gt;
* pes po zastavení vždy &amp;quot;zašteká&amp;quot; (zapípa sirénkou)&lt;br /&gt;
* pes sa bude rozbiehať a zastavovať postupne, nie prudko naraz&lt;br /&gt;
* keď sa pán dlhšie (napr. 20 sekúnd) nepohne, pes urobí malý náhodný pohyb vpred alebo vzad&lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Zameriavač ====&lt;br /&gt;
&lt;br /&gt;
Cieľom je sledovanie predmetu ultrazvukovým senzorom. &lt;br /&gt;
&lt;br /&gt;
# Senzor sa otáča od jednej krajnej polohy do druhej a naspäť, až kým nezachytí pred sebou nejaký predmet vo vzdialenosti menšej ako napr. 30 cm&lt;br /&gt;
# po zachytení predmetu sa neustále otáča vľavo vpravo v takom rozsahu, kým je predmet pred ním viditeľný &lt;br /&gt;
# to znamená, ak postupne pomaly predmet pred robotom presúvame na rôzne miesta, senzor sa bude otáčať vždy tak, aby predmet sledoval pred sebou&lt;br /&gt;
&lt;br /&gt;
Mohlo by to vyzerať napríklad nejak takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;R-HOfpdvq0Y&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* takéto úlohy je šikovné riešiť pomocou stavového automatu: robot sa celý čas nachádza v nejakom stave a podľa situácie mení svoj stav, napr: HĽADÁ_PREDMET_VĽAVO, HĽADÁ_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VPRAVO, ZACHYTIL_PREDMET_VĽAVO.&lt;br /&gt;
* skombinujte otáčanie senzora aj s otáčaním robota, aby predmet hľadal nielen v rozsahu otáčania serva pred sebou, ale aj za sebou&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Hľadač ====&lt;br /&gt;
&lt;br /&gt;
Vytvoríme program, aby robot zameral predmet pred sebou, pohol sa k nemu o kúsok bližšie a tento proces opakoval, až kým sa robot nedostane do jeho blízkosti.&lt;br /&gt;
&lt;br /&gt;
# keď robot predmet nevidí, otáča senzorom postupne vľavo-vpravo v plnom rozsahu, až kým predmet neobjaví&lt;br /&gt;
# ak predmet zbadá - zistí medzi akými rôznymi uhlami je predmet senzorom viditeľnými (rozsah A-B) &lt;br /&gt;
# z nameraných pozícií A, B vypočíta, kde má predmet približne stred&lt;br /&gt;
# otočí sa smerom k predmetu&lt;br /&gt;
# o kúsok sa posunie vpred a pokračuje od kroku 2&lt;br /&gt;
# ak predmet prestane vidieť, pokračuje od kroku 1   &lt;br /&gt;
&lt;br /&gt;
Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;tf0hiUi8Mg4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* keď robot predmet nájde, oznámi to zvukovým alebo vizuálnym signálom a zastane&lt;br /&gt;
* robot nebude zastavovať, bude sa pohybovať plynule, ale pomaly a upravovať svoj smer podľa toho, kde predmet zachytí&lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Obchádzač ====&lt;br /&gt;
&lt;br /&gt;
Robot sa nachádza v blízkosti krabice s obdĺžnikovým pôdorysom, rovnobežne s jej jednou hranou. Senzorom sa díva celkom do strany, aby počas pohybu krabicu dobre videl. Cieľom je, aby krabicu zo všetkých 4 strán obišiel:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred, až dokiaľ krabicu vedľa seba nezachytí&lt;br /&gt;
# pokračuje vpred rovnobežne so stranou krabice povedľa nej&lt;br /&gt;
# keď senzorom zachytí koniec krabice, otočí sa smerom k ďalšej strane krabice&lt;br /&gt;
# kroky 1-3 zopakuje pre všetky štyri strany krabice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;EGxFEYnk51o&amp;lt;/youtube&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# program určí veľkosť krabice - malá, stredná, veľká a farebným signálom na konci oznámil, akú krabicu obchádzal&lt;br /&gt;
# robot štartuje na začiatku vedľa krabice, ale krabica sa môže nachádzať aj na ľavej aj na pravej strane - pomocou senzora najskôr zistí, kde je krabica a potom ju obíde buď zľava alebo sprava&lt;br /&gt;
&lt;br /&gt;
==== 2.1.7. Parkovač ====&lt;br /&gt;
&lt;br /&gt;
Robot zaparkuje na voľné miesto, ak je dostatočne veľké.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred a senzorom sleduje situáciu na pravej strane cesty&lt;br /&gt;
# keď objaví voľné miesto, najskôr zistí aké je dlhé&lt;br /&gt;
# ak je miesto dostatočne veľké, aby mohol zaparkovať, zaparkuje do neho v režime pozdĺžneho parkovania&lt;br /&gt;
# ak miesto nie je dostatočne veľké, pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cHFC9bD3wNg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak je voľné miesto dostatočne dlhé, nehľadá jeho koniec, ale rovno tam zaparkuje&lt;br /&gt;
# robot striedavo sleduje situáciu vpravo a pred sebou (periodicky otáča senzor), aby čelne nenarazil do prekážky pred sebou, ale zároveň monitoroval situáciu s voľnými miestami vpravo&lt;br /&gt;
 &lt;br /&gt;
==== 2.1.8. Riadené vozidlo ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme riadenie vozidla pomocou gesta pred ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje vpred až kým senzor vpredu nezachytí prekážku (ktorou mu signalizujeme, že požadujeme zmenu smeru) &lt;br /&gt;
# robot zastane, pozrie sa senzorom vpravo aj vľavo - či tam je signálna prekážka&lt;br /&gt;
# ak na niektorej strane signálnu prekážku zachytil, otočí sa zodpovedajúcim smerom a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;3Y9fSx4_iYo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
# ak sa po preskúmaní situácie vpravo a vľavo pred robotom stále nachádza signálna prekážka, robot sa otočí vzad&lt;br /&gt;
# robot si od štartu postupne zapamätáva akou cestou išiel (čas a smery otočenia) a keď mu dáme signál (prekážka vľavo aj vpravo), zastane, môžeme ho preložiť na štart a prekážkou znovu odštartovať, robot zopakuje rovnakú zapamätanú cestu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Line-Follower ===&lt;br /&gt;
&lt;br /&gt;
==== 2.1.1. Zastav na čiare ====&lt;br /&gt;
&lt;br /&gt;
Robot sa rozbehne vpred, neustále sníma podlahu a keď sa dostane na čiernu čiaru, zastane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;9QCWULzsglU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety: &lt;br /&gt;
&lt;br /&gt;
* robot na čiare zastaví na chvíľu, potom sa znovu rozbehne a pokračuje na ďalšiu čiaru, kde zasa zastaví, atď.&lt;br /&gt;
* robot sa po zastavení na čiare vráti naspäť približne na rovnaké miesto&lt;br /&gt;
&lt;br /&gt;
==== 2.1.2. Jazda medzi dvomi čiarami ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude do nekonečna pohybovať medzi dvomi čiarami.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# v okamihu, keď sa dostane na čiaru, zastane &lt;br /&gt;
# chvíľu počká, potom začne cúvať priamo vzad&lt;br /&gt;
# cúva dovtedy, kým sa senzor nedostane nad druhú čiaru, kde tiež zastane&lt;br /&gt;
# po malej chvíli pokračuje krokom 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Rpl6NmfMTMI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude pohybovať medzi tromi (štyrmi, ...) čiarami, pričom na stredných čiarach ani nezastaví, bude zastavovať až na krajných čiarach, kde vždy zmení smer pohybu&lt;br /&gt;
* robot sa bude medzi čiarami pohybovať náhodnou rýchlosťou &lt;br /&gt;
&lt;br /&gt;
==== 2.1.3. Uzatvorený útvar ====&lt;br /&gt;
&lt;br /&gt;
Robot sa bude pohybovať vnútri čiernou čiarou obkoleseného územia.&lt;br /&gt;
&lt;br /&gt;
# robot sa rozbehne vpred&lt;br /&gt;
# keď senzorom zaznamená okraj tohoto územia, zastane, zacúva a otočí sa do iného smeru&lt;br /&gt;
# pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;mDnLmKshHAk&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* robot sa bude otáčať do náhodnej strany&lt;br /&gt;
* robot sa bude otáčať o náhodne veľký uhol&lt;br /&gt;
* niekde vnútri ohraničeného územia sa nachádza väčšia čierna plocha - ktorá predstavuje cieľ jeho hľadania, robot po nájdení svojho cieľa zastane o stane stáť. &lt;br /&gt;
&lt;br /&gt;
==== 2.1.4. Sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
Naprogramujeme jednoduché jazdenie po uzavretej čiare, ktorá sa môže kľukatiť vľavo i vpravo. Napríklad takto:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým z dvoch krajných snímačov na jednej alebo druhej strane (čiže začne vybočovať z dráhy), pohybuje sa vpred spolu s otáčaním, ktoré ho dostáva naspäť do stredu čiary&lt;br /&gt;
# inak ide rovno&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1L-HXKdWlLY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte naprogramovať jazdenie po čiare využitím iba jedného z 8 snímačov senzora&lt;br /&gt;
* niekde na čiare urobte štart (priečna hrubšia čiara, ktorú zachytia všetky senzory naraz) a naprogramujte, aby robot prešiel jedno kolečko a zmeral jeho čas&lt;br /&gt;
* priečne čiary môžete urobiť na viacerých miestach a robot na nich bude na malú chvíľu zastavovať (trať električky so zastávkami)&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=1GhY0jglk_s&lt;br /&gt;
&lt;br /&gt;
==== 2.1.5. Flexibilnejšie sledovanie čiary ====&lt;br /&gt;
&lt;br /&gt;
V prípade, že sú na dráhe menej prudké aj prudšie zákruty, predchádzajúci program buď vyletí na prudkých zákrutách, alebo bude na miernych zákrutách zbytočne veľa točiť. V tomto cvičení vytvoríme program, ktorý bude zatáčať rôzne prudko, podľa toho ako prudko zatáča zákruta. Napríklad:&lt;br /&gt;
&lt;br /&gt;
# robot sa pohybuje neustále vpred&lt;br /&gt;
# ak zachytí čiaru niektorým krajným snímačom, ktorý nie je celkom na kraji, ale susedí s ním - začne sa mierne otáčať tak, aby sa dostal naspäť do stredu čiary&lt;br /&gt;
# v prudších zákrutách to nebude stačiť a čiaru postupne zachytí niektorý snímač, ktorý je celkom na okraji senzora, vtedy sa robot začne točiť prudšie&lt;br /&gt;
# ak žiaden zo štyroch krajných snímačov čiaru nezachytil, robot sa pohybuje priamo vpred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;1GhY0jglk_s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* vyskúšajte, ako sa robot správa na ostrých (napr. kolmých pravouhlých zákrutách) a nalaďte program tak, aby ich tiež zvládol&lt;br /&gt;
* na dráhu zaraďte rozvetvenie, ktoré sa neskôr zasa spojí, naprogramujte, aby si robot spoľahlivo na striedačku vyberal raz ľavú a raz pravú vetvu a spoľahlivo po spojení vetiev pokračoval ďalej&lt;br /&gt;
* na niektorom mieste vytvorte prerušenie čiary - zabezpečte, aby robot cez miesto plynule prešiel a pokračoval na čiare ďalej, neskôr pridajte, aby pokračovanie čiary robot našiel aj vtedy, ak sa napríklad nadchádza v zákrute &lt;br /&gt;
&lt;br /&gt;
==== 2.1.6. Prechod bludiskom pravidlom pravej ruky ====&lt;br /&gt;
&lt;br /&gt;
V tejto technicky náročnej úlohe naprogramujeme robota, aby sa dokázal pohybovať v bludisku - ktoré má jeden vchod, ktorý je zároveň jeho východom. V bludisku budú iba kolmé &amp;quot;chodby&amp;quot; vyznačené čiernou čiarou na podlahe. Základom sú tri funkcie: 1) rozpoznanie typu križovatky - tri rôzne križovatky v tvare T, dve v tvare L, križovatka zo 4 cestami a slepá ulička (spolu 7 rôznych typov križovatiek), 2) zatočenie na križovatke vpravo a 3) zatočenie na križovatke vľavo.&lt;br /&gt;
&lt;br /&gt;
# ak je robot na rovnej ceste, pokračuje priamo vpred až po ďalšiu križovatku, pričom využíva senzory na to, aby z cesty nezišiel - mierne koriguje svoj smer podľa potreby&lt;br /&gt;
# na križovatke zistí akého je typu&lt;br /&gt;
# ak môže zabočiť vpravo, zabočí vpravo a pokračuje krokom 1&lt;br /&gt;
# inak, ak môže pokračovať rovno, pokračuje rovno a krokom 1&lt;br /&gt;
# inak, ak môže zabočiť vľavo, zabočí vľavo a pokračuje krokom 1&lt;br /&gt;
# inak - je v slepej uličke, otočí sa o 180 stupňov a pokračuje krokom 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;fid4u1Vvbas&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Námety:&lt;br /&gt;
&lt;br /&gt;
* upravte program tak, aby si namiesto pravidla pravej ruky na križovatke vybral náhodné pokračovanie - ale iba smerom, ktorým nejaká cesta pokračuje&lt;br /&gt;
* pridajte detekciu cieľa - môže byť označený napríklad väčšou obdĺžnikovou plochou, keď sa na ňu konečne dostane, robot a program zastane&lt;br /&gt;
* keď sa robot dostane do cieľa, potom prejde bludisko ešte raz pravidlom ľavej ruky a zistí, ktorá cesta je kratšia a oznámi to (napr. farbou svojej RGB LED)&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Line-follower&amp;diff=1026</id>
		<title>Basic robot - Line-follower</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=Basic_robot_-_Line-follower&amp;diff=1026"/>
		<updated>2026-08-22T00:07:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ďalší robot, ktorého sme pre vás pripravili, je Line follower.&lt;br /&gt;
&lt;br /&gt;
Robot, ktorý prenasleduje čiaru. Na to, aby vedel, kde je čiara, používame čiarový senzor QRT-8A, z ktorého vychádza 8 analógových výstupov.&lt;br /&gt;
&lt;br /&gt;
Na našom RP2350 máme iba 4 analógové vstupy, čiže využijeme ešte jeden komponent, a to 8-kanálový multiplexor, ktorý prepína kanály, ktoré chceme čítať, a prevádza ich na jeden výstup.&lt;br /&gt;
&lt;br /&gt;
Pri tomto robote sa naučíme, ako sa číta z analógového výstupu, ako prepínať kanály a taktiež jeden algoritmus, ako vyhodnotiť pozíciu čiary.&lt;br /&gt;
&lt;br /&gt;
Bude to náročnejšie na programovanie, ale zato sa naučíte viac nielen o stavebnici, ale aj o tom, čo sú algoritmy.&lt;br /&gt;
&lt;br /&gt;
Samotný algoritmus bude vysvetlený v sekcii [[SW Setup]], ale najprv sa pustime do stavania.&lt;br /&gt;
&lt;br /&gt;
* [[Návod na poskladanie sledovača čiary |  Návod na skladanie sledovača čiary]]&lt;br /&gt;
&lt;br /&gt;
Ak nájdete chyby v návode, prosíme napíšte nám.&lt;br /&gt;
Bližšie informácie a nastavenia elektroniky nájdete v [[Electronics|manuáloch jednotlivých súčiastok]].&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť činnosť testovacieho programu - otočí oboma servami a potom neustále sníma všetkých 8 senzorov a zobrazuje ich do Serial Monitora.&lt;br /&gt;
Najskôr je zobrazený pohyb krížom cez čiernu čiaru, ktorý potom vykonáme aj pri sledovaní výstupu - na ktorom vidieť postupne od posledného senzora - ako senzor prechádza ponad čiaru hodnota je viac ako 900, zatiaľ čo inak je menej ako 400. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;cP4vufLOp5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jednoduchý testovací program ===&lt;br /&gt;
&lt;br /&gt;
Jednoduchý test na overenie, že obe servá, čiarový senzor a multiplexor fungujú tak, ako majú.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int PIN_SERVO_LAVE    = 10;&lt;br /&gt;
const int PIN_SERVO_PRAVE   = 11;&lt;br /&gt;
&lt;br /&gt;
const int SERVO_STOP = 90; // &amp;quot;stop&amp;quot; poloha pre 360° servá&lt;br /&gt;
&lt;br /&gt;
Servo servoLave;&lt;br /&gt;
Servo servoPrave;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(13, OUTPUT);   // S0&lt;br /&gt;
  pinMode(14, OUTPUT);   // S1&lt;br /&gt;
  pinMode(15, OUTPUT);   // S2&lt;br /&gt;
  &lt;br /&gt;
  servoLave.attach(PIN_SERVO_LAVE, 540, 2400);&lt;br /&gt;
  servoPrave.attach(PIN_SERVO_PRAVE, 540, 2400);&lt;br /&gt;
&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(3000);&lt;br /&gt;
  Serial.println(&amp;quot;are you there?&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  mux_select(0);&lt;br /&gt;
&lt;br /&gt;
  // Test laveho serva - kratke otocenie jednym a druhym smerom&lt;br /&gt;
  Serial.println(&amp;quot;Test laveho serva...&amp;quot;);&lt;br /&gt;
  servoLave.write(SERVO_STOP + 30);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  servoLave.write(SERVO_STOP - 30);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  servoLave.write(SERVO_STOP);&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  // Test praveho serva&lt;br /&gt;
  Serial.println(&amp;quot;Test praveho serva...&amp;quot;);&lt;br /&gt;
  servoPrave.write(SERVO_STOP + 30);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  servoPrave.write(SERVO_STOP - 30);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  servoPrave.write(SERVO_STOP);&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// vyber vstupný kanál 0-7&lt;br /&gt;
void mux_select(int i)&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13, i &amp;amp; 1);&lt;br /&gt;
  digitalWrite(14, (i &amp;amp; 2) &amp;gt;&amp;gt; 1);&lt;br /&gt;
  digitalWrite(15, (i &amp;amp; 4) &amp;gt;&amp;gt; 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int x = 0;&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   Serial.print(x / 100);&lt;br /&gt;
   Serial.print((x % 100) / 10);&lt;br /&gt;
   Serial.print(x % 10);&lt;br /&gt;
   Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
   for (int i = 0; i &amp;lt; 8; i++)&lt;br /&gt;
   {&lt;br /&gt;
      mux_select(i);             // vyber kanál&lt;br /&gt;
      int y = analogRead(26);    // prečítaj hodnotu&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);         // zobraz ju&lt;br /&gt;
      Serial.print(y /100);&lt;br /&gt;
      Serial.print((y % 100) / 10);&lt;br /&gt;
      Serial.print(y % 10);&lt;br /&gt;
      delay(10);&lt;br /&gt;
   }&lt;br /&gt;
   Serial.println();&lt;br /&gt;
   x++;&lt;br /&gt;
   if (x == 999) x = 0;&lt;br /&gt;
   delay(300);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=QRT-8A_a_multiplexer_-_setup&amp;diff=1025</id>
		<title>QRT-8A a multiplexer - setup</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=QRT-8A_a_multiplexer_-_setup&amp;diff=1025"/>
		<updated>2026-08-21T21:58:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Naradie Ikonka.png|140px]]&lt;br /&gt;
[[File:Taviaca Pistol Ikonka.png|140px]]&lt;br /&gt;
[[File:Letovanie Ikonka.png|140px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:QTR-8A-pinout.png|400px]]&lt;br /&gt;
&lt;br /&gt;
8-kanálový analógový senzor obsahuje 8 IR LED a snímačov rozmiestnených vedľa seba merajúcich intenzitu odrazeného svetla. Keďže riadiaca jednotka RP2350 má iba 4 analógové vstupy (a niektoré sa nám môžu hodiť na niečo iné - napr. pripojenie joysticku, či mikrofónu), použijeme 8-kanálový multiplexer - čo je súčiastka, ktorá dokáže jeden signál na jednej strane podľa požiadavky prepojiť s jedným z 8 signálov na druhej strane, konkrétne použijeme CD4051 (74HC4051), ktorý mimochodom prenáša aj digitálne aj analógové signály, dokonca analógové signály môžu kolísať medzi napätím VEE až VCC - pričom VEE môže byť aj záporné napätie - takže napr. zvukový alebo iný signál sa môže pohybovať od -5 do +5 V, to ale nie je náš prípad a preto potrebujeme nastaviť VEE na 0 V, čiže prepojiť ho s pinom GND. Ale práve na to sú na tejto fialovej súčiastke pripravené dve plôšky, ktoré stačí pomocou spájkovačky prepojiť kvapkou cínu. Jednotlivých 8 kanálov na vonkajšej strane multiplexera priamo lícuje 8 analógových výstupov senzora - takže ich môžeme prepojiť pomocou hrebeňovej kolíkovej lišty, ostatné dva kontakty VCC a GND musíme prepojiť káblikovými prepojkami. Obe súčiastky dokážu pracovať v 3.3 V aj 5 V logike, ale na RP2350 používame iba 3.3 V logiku. Senzor však bežne počíta s 5 V logikou a pre nastavenie 3.3 V logiky je treba prepojiť podobné dve vyvedené plôškové kontakty ďalšou kvapkou cínu. Aby sme zabezpečili spoľahlivú dlhodobú prevádzku, tieto dve súčiastky bude lepšie napevno spojiť a zospájkovať, lebo pri opakovanom prepájaní káblikmi by sa mohla zhoršovať spoľahlivosť. Celý postup poskladania senzora s multiplexerom - najskôr si ho dôkladne preštudujte a rozmyslite:&lt;br /&gt;
&lt;br /&gt;
1. príprava súčiastok&lt;br /&gt;
&lt;br /&gt;
[[Image:LL_priprava_suciastok.jpg|príprava súčiastok|500px]]&lt;br /&gt;
&lt;br /&gt;
2. kvapkou cínu spojíme predpripravené pocínované pliešky na oboch súčiastkach. &lt;br /&gt;
&lt;br /&gt;
[[Image:MM_zapajkovane_prepojky_na_oboch.jpg|zapájkované prepojky na oboch súčiastkach|500px]]&lt;br /&gt;
&lt;br /&gt;
3. rozdelíme 11-pinovú lištu na 5 a 6 pinové časti&lt;br /&gt;
&lt;br /&gt;
[[Image:NN_rozdelit_10pin_hreben_pre_mux.jpg|rozdelíme 11-pinovú lištu na 5 a 6 pinové časti|500px]]&lt;br /&gt;
&lt;br /&gt;
4. pripájkujeme lištu do multiplexera (VEE a E necháme voľné)&lt;br /&gt;
&lt;br /&gt;
[[Image:OO_hreben_v_mux_1.jpg|pripájkujeme lištu do multiplexera (1)|500px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:PP_hreben_v_mux_2.jpg|pripájkujeme lištu do multiplexera (2)|500px]]&lt;br /&gt;
&lt;br /&gt;
5. do senzora do pinu IR napájkujeme káblik, z ktorého sme odcvakli z jednej strany koncovku a kúsoček káblika, na opačnej strane ostáva koncovka - bude sa pripájať na ľubovoľný červený pin s 3.3 V&lt;br /&gt;
&lt;br /&gt;
[[Image:QQ_napajkovany_IR_kablik.jpg|do senzora do pinu IR napájkujeme káblik|500px]]&lt;br /&gt;
&lt;br /&gt;
6. pripravíme si prepojky medzi multiplexerom a senzorom: kratšia bude prepájať GND-GND a dlhšia VCC-VCC, dbajme, aby okraje senzora ostali voľné, aby sa dal upevniť do plastového držiaka&lt;br /&gt;
&lt;br /&gt;
[[Image:RR_priprava_kablikov_pre_mux.jpg|pripravíme si prepojky medzi multiplexerom a senzorom|500px]]&lt;br /&gt;
&lt;br /&gt;
7. prepojky najskôr zapájkujeme do multiplexera&lt;br /&gt;
&lt;br /&gt;
[[Image:SS_dva_kabliky_do_mux.jpg|prepojky najskôr zapájkujeme do multiplexera|500px]]&lt;br /&gt;
&lt;br /&gt;
8. 8-pinovú lištu pripájkujeme do multiplexera na piny Y0 - Y7&lt;br /&gt;
&lt;br /&gt;
[[Image:TT_pripajkovanych_8_kanalov_do_mux.jpg|8-pinovú lištu pripájkujeme do multiplexera|500px]]&lt;br /&gt;
&lt;br /&gt;
9. visiacu prepojku z GND zapajkujeme aj do senzora&lt;br /&gt;
&lt;br /&gt;
[[Image:UU_gnd_pripajkovane_do_senzora.jpg|visiacu prepojku z GND zapajkujeme aj do senzora|500px]]&lt;br /&gt;
&lt;br /&gt;
10. zospájkujeme obe súčiastky pripájkovaním lišty na strane senzora&lt;br /&gt;
&lt;br /&gt;
[[Image:VV_multiplexer_pripajkovany_do_senzora.jpg|zospájkujeme obe súčiastky pripájkovaním lišty na strane senzora|500px]]&lt;br /&gt;
&lt;br /&gt;
11. vyčnievajúce kolíky z lišty odcvakneme&lt;br /&gt;
&lt;br /&gt;
[[Image:WW_odcvaknutie_hrebenov.jpg|vyčnievajúce kolíky z lišty odcvakneme|500px]]&lt;br /&gt;
&lt;br /&gt;
12. všetky kontakty zalejeme lepidlom z tavnej pištole (je to dôležité)&lt;br /&gt;
&lt;br /&gt;
[[Image:XX_vysledok_1.jpg|všetky kontakty zalejeme lepidlom z tavnej pištole (je to dôležité)|500px]]&lt;br /&gt;
&lt;br /&gt;
13. všetky kontakty zalejeme lepidlom z tavnej pištole (je to dôležité)&lt;br /&gt;
&lt;br /&gt;
[[Image:YY_vysledok_2.jpg|aj z druhej strany tak, aby ale lepidlo neblokovalo senzor z boku, aby sa dal umiestniť do držiaka|500px]]&lt;br /&gt;
&lt;br /&gt;
14. senzor opatrne zatlačíme do jeho držiaka&lt;br /&gt;
&lt;br /&gt;
[[Image:ZZ_vysledok_v_drziaku.jpg|senzor opatrne zatlačíme do jeho držiaka|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Zapojenie &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pin modulu !! Pin na RP2350-Zero&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VCC&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GND&#039;&#039;&#039; || GND&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IR (QTR-8A)&#039;&#039;&#039; || 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z&#039;&#039;&#039; (analógový výstup) || GP26 (ADC0)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S0&#039;&#039;&#039; || GP13&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S1&#039;&#039;&#039; || GP14&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S2&#039;&#039;&#039; || GP15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jednoduchý program na otestovanie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(13, OUTPUT);   // S0&lt;br /&gt;
  pinMode(14, OUTPUT);   // S1&lt;br /&gt;
  pinMode(15, OUTPUT);   // S2&lt;br /&gt;
  &lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(3000);&lt;br /&gt;
  Serial.println(&amp;quot;are you there?&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  mux_select(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// vyber vstupný kanál 0-7&lt;br /&gt;
void mux_select(int i)&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13, i &amp;amp; 1);&lt;br /&gt;
  digitalWrite(14, (i &amp;amp; 2) &amp;gt;&amp;gt; 1);&lt;br /&gt;
  digitalWrite(15, (i &amp;amp; 4) &amp;gt;&amp;gt; 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int x = 0;&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   Serial.print(x / 100);&lt;br /&gt;
   Serial.print((x % 100) / 10);&lt;br /&gt;
   Serial.print(x % 10);&lt;br /&gt;
   Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
   for (int i = 0; i &amp;lt; 8; i++)&lt;br /&gt;
   {&lt;br /&gt;
      mux_select(i);             // vyber kanál&lt;br /&gt;
      int y = analogRead(27);    // prečítaj hodnotu&lt;br /&gt;
      Serial.print(&amp;quot; &amp;quot;);         // zobraz ju&lt;br /&gt;
      Serial.print(y /100);&lt;br /&gt;
      Serial.print((y % 100) / 10);&lt;br /&gt;
      Serial.print(y % 10);&lt;br /&gt;
      delay(10);&lt;br /&gt;
   }&lt;br /&gt;
   Serial.println();&lt;br /&gt;
   x++;&lt;br /&gt;
   if (x == 999) x = 0;&lt;br /&gt;
   delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:ZZ_vysledok_v_drziaku.jpg&amp;diff=1024</id>
		<title>Súbor:ZZ vysledok v drziaku.jpg</title>
		<link rel="alternate" type="text/html" href="https://3dliga.robotika.sk/wiki/index.php?title=S%C3%BAbor:ZZ_vysledok_v_drziaku.jpg&amp;diff=1024"/>
		<updated>2026-08-21T21:42:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>