<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://kruzok.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Samuel</id>
	<title>Robotický krúžok - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="https://kruzok.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Samuel"/>
	<link rel="alternate" type="text/html" href="https://kruzok.net/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Samuel"/>
	<updated>2026-05-28T20:06:49Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=1095</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=1095"/>
		<updated>2018-03-18T14:10:49Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeéľmi rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezývajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám 12 rokov a rád programujem, hlavne hry. Občas mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na http://kruzok.net/index.php?title=Samuel&amp;amp;redirect=no&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=1094</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=1094"/>
		<updated>2018-03-18T14:08:11Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeéľmi rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezývajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám 12 rokov a rád programujem, hlavne hry. V občas mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na http://kruzok.net/index.php?title=Samuel&amp;amp;redirect=no&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=RoboCup&amp;diff=1089</id>
		<title>RoboCup</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=RoboCup&amp;diff=1089"/>
		<updated>2018-03-01T10:00:21Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Utorok 9.11&lt;br /&gt;
&lt;br /&gt;
Takto vyzerala prvá konštrukcia&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC_0156.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Potom to Matej upravil do takejto podoby:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Utorok 14.11&lt;br /&gt;
&lt;br /&gt;
Dnes sme upravili prveho futbalistu.&lt;br /&gt;
Palo nam priniesol loptu a tak sme testovali dribler.Zatial velmi nefunguje.&lt;br /&gt;
Rozhodli sme sa, že mobil prepojime s EV3 pomocou arduinovej zbernice.Takisto tam chceme pridať aj jeden arduinovy svetelny senzor, ktory bude sledovat,&lt;br /&gt;
či sa lopta nachadza v dribelry.&lt;br /&gt;
Naucili sme sa aj nieco o pixeloch napriklad RGB a alebo o vlnach a poliach.&lt;br /&gt;
&lt;br /&gt;
[[Image:matej pracuje.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utorok 21.11&lt;br /&gt;
Matej vytvaral 3D obraz v Lego Designery.&lt;br /&gt;
&lt;br /&gt;
[[Image:Matej3D.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Ja som dnes opravil a doladil dribler.&lt;br /&gt;
&lt;br /&gt;
[[Image:Jadribler.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nas navštívil aj Oli Š. a pomohol nam spajkovať ARDUINO s EV3.&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&lt;br /&gt;
Takto pripojíme Arduino na ktorom budú svetelné senzory:&lt;br /&gt;
&lt;br /&gt;
[https://www.dexterindustries.com/howto/connecting-ev3-arduino/ Prepojenie EV3 s arduinom]&lt;br /&gt;
&lt;br /&gt;
Arduino budeme programovať a komunikovať s ním z Androidu: [http://www.instructables.com/id/Program-your-Arduino-with-a-Android-device/ Program your Arduino with an Android device]&lt;br /&gt;
&lt;br /&gt;
[https://felhr85.net/2015/01/09/a-dirty-and-quick-example-of-serial-port-communication-in-android/ Komunikácia Android -&amp;gt; Arduino]&lt;br /&gt;
&lt;br /&gt;
Matej spevnil hlavu pre tigra a s Oliverom rozpracoval nohy pre tigra. Chvost bude treba trochu zúžiť.&lt;br /&gt;
Tigrovi sme rozpárali brucho :), telo i hlava mu zatiaľ celkom dobre pasuje. &lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_195803.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:paranie_brucha_tigrovi.jpg|500px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0FFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 8.2.2018&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej vyrobil nový chvost pre tigra, ktorý je menší a vojde sa.&lt;br /&gt;
Oliver začal stavať autíčko, ktoré sa umiestni do vnútra plastovej gule.&lt;br /&gt;
&lt;br /&gt;
Oliver dokončil autíčko riadené Arduinkom do Loptoša.&lt;br /&gt;
&lt;br /&gt;
[[Image:auticko_do_loptosa.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Matej vpasoval telo do tigra a rozostaval mu nohy. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Samo Z. dnes našiel a následne nahral na stránku hudbu do tanca: [[Media:skladba2018.zip|skladba2018.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tiger:&lt;br /&gt;
&lt;br /&gt;
predná kocka motory:&lt;br /&gt;
&lt;br /&gt;
  ľavý predný motor=port B&lt;br /&gt;
  ľavý zadný motor=port C&lt;br /&gt;
  pravá strana=port A&lt;br /&gt;
&lt;br /&gt;
zadná kocka motory:&lt;br /&gt;
&lt;br /&gt;
  motor ktorý hýbe hlavou doľava a doprava je na porte A&lt;br /&gt;
  motor ktorý hýbe hlavou dole a hore je na porte C&lt;br /&gt;
  motor ktorý hýbe chvostom je na porte B&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_195829.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_195847.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_200014 - odkaz.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_200014.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180213_214556.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180220_184101.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180220_191654.jpg|750px]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=RoboCup&amp;diff=1088</id>
		<title>RoboCup</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=RoboCup&amp;diff=1088"/>
		<updated>2018-03-01T09:31:31Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Utorok 9.11&lt;br /&gt;
&lt;br /&gt;
Takto vyzerala prvá konštrukcia&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC_0156.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Potom to Matej upravil do takejto podoby:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Utorok 14.11&lt;br /&gt;
&lt;br /&gt;
Dnes sme upravili prveho futbalistu.&lt;br /&gt;
Palo nam priniesol loptu a tak sme testovali dribler.Zatial velmi nefunguje.&lt;br /&gt;
Rozhodli sme sa, že mobil prepojime s EV3 pomocou arduinovej zbernice.Takisto tam chceme pridať aj jeden arduinovy svetelny senzor, ktory bude sledovat,&lt;br /&gt;
či sa lopta nachadza v dribelry.&lt;br /&gt;
Naucili sme sa aj nieco o pixeloch napriklad RGB a alebo o vlnach a poliach.&lt;br /&gt;
&lt;br /&gt;
[[Image:matej pracuje.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utorok 21.11&lt;br /&gt;
Matej vytvaral 3D obraz v Lego Designery.&lt;br /&gt;
&lt;br /&gt;
[[Image:Matej3D.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Ja som dnes opravil a doladil dribler.&lt;br /&gt;
&lt;br /&gt;
[[Image:Jadribler.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nas navštívil aj Oli Š. a pomohol nam spajkovať ARDUINO s EV3.&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&lt;br /&gt;
Takto pripojíme Arduino na ktorom budú svetelné senzory:&lt;br /&gt;
&lt;br /&gt;
[https://www.dexterindustries.com/howto/connecting-ev3-arduino/ Prepojenie EV3 s arduinom]&lt;br /&gt;
&lt;br /&gt;
Arduino budeme programovať a komunikovať s ním z Androidu: [http://www.instructables.com/id/Program-your-Arduino-with-a-Android-device/ Program your Arduino with an Android device]&lt;br /&gt;
&lt;br /&gt;
[https://felhr85.net/2015/01/09/a-dirty-and-quick-example-of-serial-port-communication-in-android/ Komunikácia Android -&amp;gt; Arduino]&lt;br /&gt;
&lt;br /&gt;
Matej spevnil hlavu pre tigra a s Oliverom rozpracoval nohy pre tigra. Chvost bude treba trochu zúžiť.&lt;br /&gt;
Tigrovi sme rozpárali brucho :), telo i hlava mu zatiaľ celkom dobre pasuje. &lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_195803.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:paranie_brucha_tigrovi.jpg|500px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0FFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 8.2.2018&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej vyrobil nový chvost pre tigra, ktorý je menší a vojde sa.&lt;br /&gt;
Oliver začal stavať autíčko, ktoré sa umiestni do vnútra plastovej gule.&lt;br /&gt;
&lt;br /&gt;
Oliver dokončil autíčko riadené Arduinkom do Loptoša.&lt;br /&gt;
&lt;br /&gt;
[[Image:auticko_do_loptosa.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Matej vpasoval telo do tigra a rozostaval mu nohy. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Samo Z. dnes našiel a následne nahral na stránku hudbu do tanca: [[Media:skladba2018.zip|skladba2018.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tiger:&lt;br /&gt;
&lt;br /&gt;
predná kocka motory:&lt;br /&gt;
&lt;br /&gt;
  ľavý predný motor=port C&lt;br /&gt;
  ľavý zadný motor=port B&lt;br /&gt;
  pravá strana=port A&lt;br /&gt;
&lt;br /&gt;
zadná kocka motory:&lt;br /&gt;
&lt;br /&gt;
  motor ktorý hýbe hlavou doľava a doprava je na porte A&lt;br /&gt;
  motor ktorý hýbe hlavou dole a hore je na porte C&lt;br /&gt;
  motor ktorý hýbe chvostom je na porte B&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_195829.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_195847.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_200014 - odkaz.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180130_200014.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180213_214556.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180220_184101.jpg|750px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:20180220_191654.jpg|750px]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=S%C3%BAbor:Zapojenie_dht11.jpg&amp;diff=899</id>
		<title>Súbor:Zapojenie dht11.jpg</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=S%C3%BAbor:Zapojenie_dht11.jpg&amp;diff=899"/>
		<updated>2017-11-30T16:09:02Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=898</id>
		<title>Denníček - november 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=898"/>
		<updated>2017-11-30T16:08:46Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 2.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom pracovali na veľkej robotickej ruke.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.&lt;br /&gt;
&lt;br /&gt;
Marta vylepšovala svoje autonómne vozidlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFF8F8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 7.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.&lt;br /&gt;
&lt;br /&gt;
[[Image:hotovy_program_marta.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NKSoNaIlaLg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:hotovy_program_marta.zip|autonomne_vozidlo.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:po_ceste.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;o4pkhYM3slE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:program_po_ceste.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:po_ceste.zip|po_ceste.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 9.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:&lt;br /&gt;
&lt;br /&gt;
Prvý program používa jeden kufrík &#039;&#039;pocet&#039;&#039;. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:&lt;br /&gt;
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji&lt;br /&gt;
* počká, kým sa nestlačí dotykový senzor&lt;br /&gt;
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka&lt;br /&gt;
&lt;br /&gt;
[[Image:kufre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
kurfre: [[Media:kufre.zip|kufre.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:&lt;br /&gt;
&lt;br /&gt;
[[Image:zvuky.png|500px]]&lt;br /&gt;
&lt;br /&gt;
zvuky: [[Media:zvuky.zip|zvuky.zip]]&lt;br /&gt;
&lt;br /&gt;
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.&lt;br /&gt;
&lt;br /&gt;
jazda so zvukmi: [[Media:jazda_so_zvukmi.zip|jazda_so_zvukmi.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej poskladal konštrukciu futbalistického robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 14.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.&lt;br /&gt;
&lt;br /&gt;
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva. &lt;br /&gt;
&lt;br /&gt;
[[Image:auto_s_vlajkou.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:&lt;br /&gt;
&lt;br /&gt;
[[Image:priklad_paralelne_procesy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:priklad_paralelne_procesy.zip|priklad_paralelne_procesy.zip]]&lt;br /&gt;
&lt;br /&gt;
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:auto_s_vlajkou.zip|auto_s_vlajkou.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-Nts1G2sHKI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.&lt;br /&gt;
&lt;br /&gt;
[[Image:cesta_po_okraji.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:cesta_po_okraji.zip|cesta_po_okraji.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;_ADORPKFDS8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;8ld5-OY8YWs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 16.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!&lt;br /&gt;
&lt;br /&gt;
[[Image:sada_fll.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. &lt;br /&gt;
&lt;br /&gt;
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:&lt;br /&gt;
&lt;br /&gt;
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Oliver: Hra by me.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbal_program.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbal.zip|futbal.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 21.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hnj7iCl-93Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.&lt;br /&gt;
&lt;br /&gt;
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!&lt;br /&gt;
&lt;br /&gt;
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.&lt;br /&gt;
&lt;br /&gt;
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, &lt;br /&gt;
ktoré pracujú s ultrazvukovým senzorom robia:&lt;br /&gt;
&lt;br /&gt;
Príklad 1:&lt;br /&gt;
&lt;br /&gt;
[[Image:meraj_ultrazvuk.png|300px]]&lt;br /&gt;
&lt;br /&gt;
V tomto prípade sme použili &#039;&#039;žltý&#039;&#039; - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:meraj.zip|meraj.zip]]&lt;br /&gt;
&lt;br /&gt;
Príklad 2:&lt;br /&gt;
&lt;br /&gt;
[[Image:ultrazvuk_pipac.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje.&lt;br /&gt;
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:signal.zip|signal.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.&lt;br /&gt;
&lt;br /&gt;
[[Image:ciara_simon.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:ciara_simon.zip|ciara_simon.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NYMO5lbq_l8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 23.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej dokreslil model robota v LDD.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista_model.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbalbot.zip|futbalbot.zip]]&lt;br /&gt;
&lt;br /&gt;
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:&lt;br /&gt;
&lt;br /&gt;
[[Image:kocky.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.&lt;br /&gt;
&lt;br /&gt;
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.&lt;br /&gt;
&lt;br /&gt;
[[Image: kocka_lahka.jpg|300px]]&lt;br /&gt;
[[Image: kocka_tazka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 28.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void msgbox(String sprava) {&lt;br /&gt;
        AlertDialog.Builder builder;&lt;br /&gt;
        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP) {&lt;br /&gt;
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);&lt;br /&gt;
        } else {&lt;br /&gt;
            builder = new AlertDialog.Builder(this);&lt;br /&gt;
        }&lt;br /&gt;
        builder.setTitle(&amp;quot;Sprava&amp;quot;)&lt;br /&gt;
                .setMessage(sprava)&lt;br /&gt;
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // continue with delete&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // do nothing&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setIcon(android.R.drawable.ic_dialog_alert)&lt;br /&gt;
                .show();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.&lt;br /&gt;
&lt;br /&gt;
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Image:stretnutie_robotov.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor &amp;quot;díva&amp;quot; priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch&lt;br /&gt;
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;2WDm4mJBvN4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0FFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 30.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Samo dnes spravil program pre trezor:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:Trezor.zip|Trezor.zip]]&lt;br /&gt;
&lt;br /&gt;
ktorý stavia Matej:&lt;br /&gt;
&lt;br /&gt;
[[Image:trezor_verzia1.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Marta pokračovala v stavaní váhy, len nám trochu v tom snehu navlhla. :) &lt;br /&gt;
&lt;br /&gt;
Dnes prišiel aj Peter, ktorý naprogramoval niekoľko programov s ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol zapojenie s vlhkomerom a teplomerom DHT11, tak sme zapojenie opravili a vyskúšali:&lt;br /&gt;
&lt;br /&gt;
[[Image:meranie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:zapojenie_dht11.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
použili sme túto knižnicu: [https://brainy-bits.com/blogs/tutorials/dht11-tutorial DHT Arduino Library]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;dht.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define dht_apin A0 // Analog Pin sensor is connected to&lt;br /&gt;
 &lt;br /&gt;
dht DHT;&lt;br /&gt;
 &lt;br /&gt;
void setup(){&lt;br /&gt;
 &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  delay(500);//Delay to let system boot&lt;br /&gt;
  Serial.println(&amp;quot;DHT11 Humidity &amp;amp; temperature Sensor\n\n&amp;quot;);&lt;br /&gt;
  delay(1000);//Wait before accessing Sensor&lt;br /&gt;
 &lt;br /&gt;
}//end &amp;quot;setup()&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
void loop(){&lt;br /&gt;
  //Start of Program &lt;br /&gt;
 &lt;br /&gt;
    DHT.read11(dht_apin);&lt;br /&gt;
    &lt;br /&gt;
    Serial.print(&amp;quot;Current humidity = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.humidity);&lt;br /&gt;
    Serial.print(&amp;quot;%  &amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;temperature = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.temperature); &lt;br /&gt;
    Serial.println(&amp;quot;C  &amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    delay(5000);//Wait 5 seconds before accessing sensor again.&lt;br /&gt;
 &lt;br /&gt;
  //Fastest should be once every two seconds.&lt;br /&gt;
 &lt;br /&gt;
}// end loop() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=897</id>
		<title>Denníček - november 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=897"/>
		<updated>2017-11-30T15:57:08Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 2.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom pracovali na veľkej robotickej ruke.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.&lt;br /&gt;
&lt;br /&gt;
Marta vylepšovala svoje autonómne vozidlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFF8F8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 7.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.&lt;br /&gt;
&lt;br /&gt;
[[Image:hotovy_program_marta.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NKSoNaIlaLg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:hotovy_program_marta.zip|autonomne_vozidlo.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:po_ceste.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;o4pkhYM3slE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:program_po_ceste.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:po_ceste.zip|po_ceste.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 9.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:&lt;br /&gt;
&lt;br /&gt;
Prvý program používa jeden kufrík &#039;&#039;pocet&#039;&#039;. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:&lt;br /&gt;
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji&lt;br /&gt;
* počká, kým sa nestlačí dotykový senzor&lt;br /&gt;
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka&lt;br /&gt;
&lt;br /&gt;
[[Image:kufre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
kurfre: [[Media:kufre.zip|kufre.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:&lt;br /&gt;
&lt;br /&gt;
[[Image:zvuky.png|500px]]&lt;br /&gt;
&lt;br /&gt;
zvuky: [[Media:zvuky.zip|zvuky.zip]]&lt;br /&gt;
&lt;br /&gt;
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.&lt;br /&gt;
&lt;br /&gt;
jazda so zvukmi: [[Media:jazda_so_zvukmi.zip|jazda_so_zvukmi.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej poskladal konštrukciu futbalistického robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 14.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.&lt;br /&gt;
&lt;br /&gt;
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva. &lt;br /&gt;
&lt;br /&gt;
[[Image:auto_s_vlajkou.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:&lt;br /&gt;
&lt;br /&gt;
[[Image:priklad_paralelne_procesy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:priklad_paralelne_procesy.zip|priklad_paralelne_procesy.zip]]&lt;br /&gt;
&lt;br /&gt;
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:auto_s_vlajkou.zip|auto_s_vlajkou.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-Nts1G2sHKI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.&lt;br /&gt;
&lt;br /&gt;
[[Image:cesta_po_okraji.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:cesta_po_okraji.zip|cesta_po_okraji.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;_ADORPKFDS8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;8ld5-OY8YWs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 16.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!&lt;br /&gt;
&lt;br /&gt;
[[Image:sada_fll.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. &lt;br /&gt;
&lt;br /&gt;
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:&lt;br /&gt;
&lt;br /&gt;
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Oliver: Hra by me.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbal_program.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbal.zip|futbal.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 21.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hnj7iCl-93Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.&lt;br /&gt;
&lt;br /&gt;
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!&lt;br /&gt;
&lt;br /&gt;
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.&lt;br /&gt;
&lt;br /&gt;
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, &lt;br /&gt;
ktoré pracujú s ultrazvukovým senzorom robia:&lt;br /&gt;
&lt;br /&gt;
Príklad 1:&lt;br /&gt;
&lt;br /&gt;
[[Image:meraj_ultrazvuk.png|300px]]&lt;br /&gt;
&lt;br /&gt;
V tomto prípade sme použili &#039;&#039;žltý&#039;&#039; - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:meraj.zip|meraj.zip]]&lt;br /&gt;
&lt;br /&gt;
Príklad 2:&lt;br /&gt;
&lt;br /&gt;
[[Image:ultrazvuk_pipac.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje.&lt;br /&gt;
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:signal.zip|signal.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.&lt;br /&gt;
&lt;br /&gt;
[[Image:ciara_simon.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:ciara_simon.zip|ciara_simon.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NYMO5lbq_l8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 23.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej dokreslil model robota v LDD.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista_model.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbalbot.zip|futbalbot.zip]]&lt;br /&gt;
&lt;br /&gt;
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:&lt;br /&gt;
&lt;br /&gt;
[[Image:kocky.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.&lt;br /&gt;
&lt;br /&gt;
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.&lt;br /&gt;
&lt;br /&gt;
[[Image: kocka_lahka.jpg|300px]]&lt;br /&gt;
[[Image: kocka_tazka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 28.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void msgbox(String sprava) {&lt;br /&gt;
        AlertDialog.Builder builder;&lt;br /&gt;
        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP) {&lt;br /&gt;
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);&lt;br /&gt;
        } else {&lt;br /&gt;
            builder = new AlertDialog.Builder(this);&lt;br /&gt;
        }&lt;br /&gt;
        builder.setTitle(&amp;quot;Sprava&amp;quot;)&lt;br /&gt;
                .setMessage(sprava)&lt;br /&gt;
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // continue with delete&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // do nothing&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setIcon(android.R.drawable.ic_dialog_alert)&lt;br /&gt;
                .show();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.&lt;br /&gt;
&lt;br /&gt;
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Image:stretnutie_robotov.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor &amp;quot;díva&amp;quot; priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch&lt;br /&gt;
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;2WDm4mJBvN4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0FFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 30.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Samo dnes spravil program pre trezor:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:Trezor.zip|Trezor.zip]]&lt;br /&gt;
&lt;br /&gt;
ktorý stavia Matej:&lt;br /&gt;
&lt;br /&gt;
[[Image:trezor_verzia1.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Marta pokračovala v stavaní váhy, len nám trochu v tom snehu navlhla. :) &lt;br /&gt;
&lt;br /&gt;
Dnes prišiel aj Peter, ktorý naprogramoval niekoľko programov s ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol zapojenie s vlhkomerom a teplomerom DHT11, tak sme zapojenie opravili a vyskúšali:&lt;br /&gt;
&lt;br /&gt;
[[Image:meranie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:zapojenie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
použili sme túto knižnicu: [https://brainy-bits.com/blogs/tutorials/dht11-tutorial DHT Arduino Library]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;dht.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define dht_apin A0 // Analog Pin sensor is connected to&lt;br /&gt;
 &lt;br /&gt;
dht DHT;&lt;br /&gt;
 &lt;br /&gt;
void setup(){&lt;br /&gt;
 &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  delay(500);//Delay to let system boot&lt;br /&gt;
  Serial.println(&amp;quot;DHT11 Humidity &amp;amp; temperature Sensor\n\n&amp;quot;);&lt;br /&gt;
  delay(1000);//Wait before accessing Sensor&lt;br /&gt;
 &lt;br /&gt;
}//end &amp;quot;setup()&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
void loop(){&lt;br /&gt;
  //Start of Program &lt;br /&gt;
 &lt;br /&gt;
    DHT.read11(dht_apin);&lt;br /&gt;
    &lt;br /&gt;
    Serial.print(&amp;quot;Current humidity = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.humidity);&lt;br /&gt;
    Serial.print(&amp;quot;%  &amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;temperature = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.temperature); &lt;br /&gt;
    Serial.println(&amp;quot;C  &amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    delay(5000);//Wait 5 seconds before accessing sensor again.&lt;br /&gt;
 &lt;br /&gt;
  //Fastest should be once every two seconds.&lt;br /&gt;
 &lt;br /&gt;
}// end loop() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=896</id>
		<title>Denníček - november 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=896"/>
		<updated>2017-11-30T15:56:22Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 2.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom pracovali na veľkej robotickej ruke.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.&lt;br /&gt;
&lt;br /&gt;
Marta vylepšovala svoje autonómne vozidlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFF8F8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 7.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.&lt;br /&gt;
&lt;br /&gt;
[[Image:hotovy_program_marta.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NKSoNaIlaLg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:hotovy_program_marta.zip|autonomne_vozidlo.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:po_ceste.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;o4pkhYM3slE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:program_po_ceste.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:po_ceste.zip|po_ceste.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 9.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:&lt;br /&gt;
&lt;br /&gt;
Prvý program používa jeden kufrík &#039;&#039;pocet&#039;&#039;. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:&lt;br /&gt;
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji&lt;br /&gt;
* počká, kým sa nestlačí dotykový senzor&lt;br /&gt;
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka&lt;br /&gt;
&lt;br /&gt;
[[Image:kufre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
kurfre: [[Media:kufre.zip|kufre.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:&lt;br /&gt;
&lt;br /&gt;
[[Image:zvuky.png|500px]]&lt;br /&gt;
&lt;br /&gt;
zvuky: [[Media:zvuky.zip|zvuky.zip]]&lt;br /&gt;
&lt;br /&gt;
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.&lt;br /&gt;
&lt;br /&gt;
jazda so zvukmi: [[Media:jazda_so_zvukmi.zip|jazda_so_zvukmi.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej poskladal konštrukciu futbalistického robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 14.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.&lt;br /&gt;
&lt;br /&gt;
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva. &lt;br /&gt;
&lt;br /&gt;
[[Image:auto_s_vlajkou.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:&lt;br /&gt;
&lt;br /&gt;
[[Image:priklad_paralelne_procesy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:priklad_paralelne_procesy.zip|priklad_paralelne_procesy.zip]]&lt;br /&gt;
&lt;br /&gt;
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:auto_s_vlajkou.zip|auto_s_vlajkou.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-Nts1G2sHKI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.&lt;br /&gt;
&lt;br /&gt;
[[Image:cesta_po_okraji.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:cesta_po_okraji.zip|cesta_po_okraji.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;_ADORPKFDS8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;8ld5-OY8YWs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 16.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!&lt;br /&gt;
&lt;br /&gt;
[[Image:sada_fll.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. &lt;br /&gt;
&lt;br /&gt;
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:&lt;br /&gt;
&lt;br /&gt;
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Oliver: Hra by me.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbal_program.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbal.zip|futbal.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 21.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hnj7iCl-93Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.&lt;br /&gt;
&lt;br /&gt;
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!&lt;br /&gt;
&lt;br /&gt;
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.&lt;br /&gt;
&lt;br /&gt;
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, &lt;br /&gt;
ktoré pracujú s ultrazvukovým senzorom robia:&lt;br /&gt;
&lt;br /&gt;
Príklad 1:&lt;br /&gt;
&lt;br /&gt;
[[Image:meraj_ultrazvuk.png|300px]]&lt;br /&gt;
&lt;br /&gt;
V tomto prípade sme použili &#039;&#039;žltý&#039;&#039; - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:meraj.zip|meraj.zip]]&lt;br /&gt;
&lt;br /&gt;
Príklad 2:&lt;br /&gt;
&lt;br /&gt;
[[Image:ultrazvuk_pipac.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje.&lt;br /&gt;
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:signal.zip|signal.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.&lt;br /&gt;
&lt;br /&gt;
[[Image:ciara_simon.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:ciara_simon.zip|ciara_simon.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NYMO5lbq_l8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 23.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej dokreslil model robota v LDD.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista_model.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbalbot.zip|futbalbot.zip]]&lt;br /&gt;
&lt;br /&gt;
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:&lt;br /&gt;
&lt;br /&gt;
[[Image:kocky.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.&lt;br /&gt;
&lt;br /&gt;
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.&lt;br /&gt;
&lt;br /&gt;
[[Image: kocka_lahka.jpg|300px]]&lt;br /&gt;
[[Image: kocka_tazka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 28.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void msgbox(String sprava) {&lt;br /&gt;
        AlertDialog.Builder builder;&lt;br /&gt;
        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP) {&lt;br /&gt;
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);&lt;br /&gt;
        } else {&lt;br /&gt;
            builder = new AlertDialog.Builder(this);&lt;br /&gt;
        }&lt;br /&gt;
        builder.setTitle(&amp;quot;Sprava&amp;quot;)&lt;br /&gt;
                .setMessage(sprava)&lt;br /&gt;
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // continue with delete&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // do nothing&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setIcon(android.R.drawable.ic_dialog_alert)&lt;br /&gt;
                .show();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.&lt;br /&gt;
&lt;br /&gt;
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Image:stretnutie_robotov.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor &amp;quot;díva&amp;quot; priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch&lt;br /&gt;
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;2WDm4mJBvN4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0FFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 30.11.2017&#039;&#039;&lt;br /&gt;
Samo dnes spravil program pre trezor:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:Trezor.zip|Trezor.zip]]&lt;br /&gt;
&lt;br /&gt;
ktorý stavia Matej:&lt;br /&gt;
&lt;br /&gt;
[[Image:trezor_verzia1.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Marta pokračovala v stavaní váhy, len nám trochu v tom snehu navlhla. :) &lt;br /&gt;
&lt;br /&gt;
Dnes prišiel aj Peter, ktorý naprogramoval niekoľko programov s ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol zapojenie s vlhkomerom a teplomerom DHT11, tak sme zapojenie opravili a vyskúšali:&lt;br /&gt;
&lt;br /&gt;
[[Image:meranie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:zapojenie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
použili sme túto knižnicu: [https://brainy-bits.com/blogs/tutorials/dht11-tutorial DHT Arduino Library]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;dht.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define dht_apin A0 // Analog Pin sensor is connected to&lt;br /&gt;
 &lt;br /&gt;
dht DHT;&lt;br /&gt;
 &lt;br /&gt;
void setup(){&lt;br /&gt;
 &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  delay(500);//Delay to let system boot&lt;br /&gt;
  Serial.println(&amp;quot;DHT11 Humidity &amp;amp; temperature Sensor\n\n&amp;quot;);&lt;br /&gt;
  delay(1000);//Wait before accessing Sensor&lt;br /&gt;
 &lt;br /&gt;
}//end &amp;quot;setup()&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
void loop(){&lt;br /&gt;
  //Start of Program &lt;br /&gt;
 &lt;br /&gt;
    DHT.read11(dht_apin);&lt;br /&gt;
    &lt;br /&gt;
    Serial.print(&amp;quot;Current humidity = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.humidity);&lt;br /&gt;
    Serial.print(&amp;quot;%  &amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;temperature = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.temperature); &lt;br /&gt;
    Serial.println(&amp;quot;C  &amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    delay(5000);//Wait 5 seconds before accessing sensor again.&lt;br /&gt;
 &lt;br /&gt;
  //Fastest should be once every two seconds.&lt;br /&gt;
 &lt;br /&gt;
}// end loop() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=S%C3%BAbor:Trezor.zip&amp;diff=895</id>
		<title>Súbor:Trezor.zip</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=S%C3%BAbor:Trezor.zip&amp;diff=895"/>
		<updated>2017-11-30T15:53:55Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=894</id>
		<title>Denníček - november 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=894"/>
		<updated>2017-11-30T15:52:24Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 2.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom pracovali na veľkej robotickej ruke.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.&lt;br /&gt;
&lt;br /&gt;
Marta vylepšovala svoje autonómne vozidlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFF8F8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 7.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.&lt;br /&gt;
&lt;br /&gt;
[[Image:hotovy_program_marta.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NKSoNaIlaLg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:hotovy_program_marta.zip|autonomne_vozidlo.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:po_ceste.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;o4pkhYM3slE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:program_po_ceste.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:po_ceste.zip|po_ceste.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 9.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:&lt;br /&gt;
&lt;br /&gt;
Prvý program používa jeden kufrík &#039;&#039;pocet&#039;&#039;. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:&lt;br /&gt;
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji&lt;br /&gt;
* počká, kým sa nestlačí dotykový senzor&lt;br /&gt;
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka&lt;br /&gt;
&lt;br /&gt;
[[Image:kufre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
kurfre: [[Media:kufre.zip|kufre.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:&lt;br /&gt;
&lt;br /&gt;
[[Image:zvuky.png|500px]]&lt;br /&gt;
&lt;br /&gt;
zvuky: [[Media:zvuky.zip|zvuky.zip]]&lt;br /&gt;
&lt;br /&gt;
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.&lt;br /&gt;
&lt;br /&gt;
jazda so zvukmi: [[Media:jazda_so_zvukmi.zip|jazda_so_zvukmi.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej poskladal konštrukciu futbalistického robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 14.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.&lt;br /&gt;
&lt;br /&gt;
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva. &lt;br /&gt;
&lt;br /&gt;
[[Image:auto_s_vlajkou.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:&lt;br /&gt;
&lt;br /&gt;
[[Image:priklad_paralelne_procesy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:priklad_paralelne_procesy.zip|priklad_paralelne_procesy.zip]]&lt;br /&gt;
&lt;br /&gt;
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:auto_s_vlajkou.zip|auto_s_vlajkou.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-Nts1G2sHKI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.&lt;br /&gt;
&lt;br /&gt;
[[Image:cesta_po_okraji.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:cesta_po_okraji.zip|cesta_po_okraji.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;_ADORPKFDS8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;8ld5-OY8YWs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 16.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!&lt;br /&gt;
&lt;br /&gt;
[[Image:sada_fll.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. &lt;br /&gt;
&lt;br /&gt;
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:&lt;br /&gt;
&lt;br /&gt;
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Oliver: Hra by me.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbal_program.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbal.zip|futbal.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 21.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hnj7iCl-93Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.&lt;br /&gt;
&lt;br /&gt;
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!&lt;br /&gt;
&lt;br /&gt;
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.&lt;br /&gt;
&lt;br /&gt;
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, &lt;br /&gt;
ktoré pracujú s ultrazvukovým senzorom robia:&lt;br /&gt;
&lt;br /&gt;
Príklad 1:&lt;br /&gt;
&lt;br /&gt;
[[Image:meraj_ultrazvuk.png|300px]]&lt;br /&gt;
&lt;br /&gt;
V tomto prípade sme použili &#039;&#039;žltý&#039;&#039; - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:meraj.zip|meraj.zip]]&lt;br /&gt;
&lt;br /&gt;
Príklad 2:&lt;br /&gt;
&lt;br /&gt;
[[Image:ultrazvuk_pipac.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje.&lt;br /&gt;
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:signal.zip|signal.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.&lt;br /&gt;
&lt;br /&gt;
[[Image:ciara_simon.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:ciara_simon.zip|ciara_simon.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NYMO5lbq_l8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 23.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej dokreslil model robota v LDD.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista_model.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbalbot.zip|futbalbot.zip]]&lt;br /&gt;
&lt;br /&gt;
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:&lt;br /&gt;
&lt;br /&gt;
[[Image:kocky.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.&lt;br /&gt;
&lt;br /&gt;
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.&lt;br /&gt;
&lt;br /&gt;
[[Image: kocka_lahka.jpg|300px]]&lt;br /&gt;
[[Image: kocka_tazka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 28.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void msgbox(String sprava) {&lt;br /&gt;
        AlertDialog.Builder builder;&lt;br /&gt;
        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP) {&lt;br /&gt;
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);&lt;br /&gt;
        } else {&lt;br /&gt;
            builder = new AlertDialog.Builder(this);&lt;br /&gt;
        }&lt;br /&gt;
        builder.setTitle(&amp;quot;Sprava&amp;quot;)&lt;br /&gt;
                .setMessage(sprava)&lt;br /&gt;
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // continue with delete&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // do nothing&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setIcon(android.R.drawable.ic_dialog_alert)&lt;br /&gt;
                .show();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.&lt;br /&gt;
&lt;br /&gt;
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Image:stretnutie_robotov.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor &amp;quot;díva&amp;quot; priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch&lt;br /&gt;
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;2WDm4mJBvN4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0FFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 30.11.2017&#039;&#039;&lt;br /&gt;
Samo dnes spravil program pre trezor:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:Trezor.zip]]&lt;br /&gt;
&lt;br /&gt;
ktorý stavia Matej:&lt;br /&gt;
&lt;br /&gt;
[[Image:trezor_verzia1.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Marta pokračovala v stavaní váhy, len nám trochu v tom snehu navlhla. :) &lt;br /&gt;
&lt;br /&gt;
Dnes prišiel aj Peter, ktorý naprogramoval niekoľko programov s ultrazvukovým senzorom.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol zapojenie s vlhkomerom a teplomerom DHT11, tak sme zapojenie opravili a vyskúšali:&lt;br /&gt;
&lt;br /&gt;
[[Image:meranie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:zapojenie_dht11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
použili sme túto knižnicu: [https://brainy-bits.com/blogs/tutorials/dht11-tutorial DHT Arduino Library]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;dht.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define dht_apin A0 // Analog Pin sensor is connected to&lt;br /&gt;
 &lt;br /&gt;
dht DHT;&lt;br /&gt;
 &lt;br /&gt;
void setup(){&lt;br /&gt;
 &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  delay(500);//Delay to let system boot&lt;br /&gt;
  Serial.println(&amp;quot;DHT11 Humidity &amp;amp; temperature Sensor\n\n&amp;quot;);&lt;br /&gt;
  delay(1000);//Wait before accessing Sensor&lt;br /&gt;
 &lt;br /&gt;
}//end &amp;quot;setup()&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
void loop(){&lt;br /&gt;
  //Start of Program &lt;br /&gt;
 &lt;br /&gt;
    DHT.read11(dht_apin);&lt;br /&gt;
    &lt;br /&gt;
    Serial.print(&amp;quot;Current humidity = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.humidity);&lt;br /&gt;
    Serial.print(&amp;quot;%  &amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;temperature = &amp;quot;);&lt;br /&gt;
    Serial.print(DHT.temperature); &lt;br /&gt;
    Serial.println(&amp;quot;C  &amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    delay(5000);//Wait 5 seconds before accessing sensor again.&lt;br /&gt;
 &lt;br /&gt;
  //Fastest should be once every two seconds.&lt;br /&gt;
 &lt;br /&gt;
}// end loop() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=891</id>
		<title>Denníček - november 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=891"/>
		<updated>2017-11-30T15:10:20Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 2.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom pracovali na veľkej robotickej ruke.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.&lt;br /&gt;
&lt;br /&gt;
Marta vylepšovala svoje autonómne vozidlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFF8F8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 7.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.&lt;br /&gt;
&lt;br /&gt;
[[Image:hotovy_program_marta.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NKSoNaIlaLg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:hotovy_program_marta.zip|autonomne_vozidlo.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:po_ceste.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;o4pkhYM3slE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:program_po_ceste.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:po_ceste.zip|po_ceste.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 9.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:&lt;br /&gt;
&lt;br /&gt;
Prvý program používa jeden kufrík &#039;&#039;pocet&#039;&#039;. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:&lt;br /&gt;
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji&lt;br /&gt;
* počká, kým sa nestlačí dotykový senzor&lt;br /&gt;
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka&lt;br /&gt;
&lt;br /&gt;
[[Image:kufre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
kurfre: [[Media:kufre.zip|kufre.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:&lt;br /&gt;
&lt;br /&gt;
[[Image:zvuky.png|500px]]&lt;br /&gt;
&lt;br /&gt;
zvuky: [[Media:zvuky.zip|zvuky.zip]]&lt;br /&gt;
&lt;br /&gt;
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.&lt;br /&gt;
&lt;br /&gt;
jazda so zvukmi: [[Media:jazda_so_zvukmi.zip|jazda_so_zvukmi.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej poskladal konštrukciu futbalistického robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 14.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.&lt;br /&gt;
&lt;br /&gt;
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva. &lt;br /&gt;
&lt;br /&gt;
[[Image:auto_s_vlajkou.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:&lt;br /&gt;
&lt;br /&gt;
[[Image:priklad_paralelne_procesy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:priklad_paralelne_procesy.zip|priklad_paralelne_procesy.zip]]&lt;br /&gt;
&lt;br /&gt;
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:auto_s_vlajkou.zip|auto_s_vlajkou.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-Nts1G2sHKI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.&lt;br /&gt;
&lt;br /&gt;
[[Image:cesta_po_okraji.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:cesta_po_okraji.zip|cesta_po_okraji.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;_ADORPKFDS8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;8ld5-OY8YWs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 16.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!&lt;br /&gt;
&lt;br /&gt;
[[Image:sada_fll.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. &lt;br /&gt;
&lt;br /&gt;
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:&lt;br /&gt;
&lt;br /&gt;
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Oliver: Hra by me.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbal_program.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbal.zip|futbal.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 21.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hnj7iCl-93Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.&lt;br /&gt;
&lt;br /&gt;
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!&lt;br /&gt;
&lt;br /&gt;
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.&lt;br /&gt;
&lt;br /&gt;
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, &lt;br /&gt;
ktoré pracujú s ultrazvukovým senzorom robia:&lt;br /&gt;
&lt;br /&gt;
Príklad 1:&lt;br /&gt;
&lt;br /&gt;
[[Image:meraj_ultrazvuk.png|300px]]&lt;br /&gt;
&lt;br /&gt;
V tomto prípade sme použili &#039;&#039;žltý&#039;&#039; - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:meraj.zip|meraj.zip]]&lt;br /&gt;
&lt;br /&gt;
Príklad 2:&lt;br /&gt;
&lt;br /&gt;
[[Image:ultrazvuk_pipac.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje.&lt;br /&gt;
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:signal.zip|signal.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.&lt;br /&gt;
&lt;br /&gt;
[[Image:ciara_simon.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:ciara_simon.zip|ciara_simon.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NYMO5lbq_l8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 23.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej dokreslil model robota v LDD.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista_model.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbalbot.zip|futbalbot.zip]]&lt;br /&gt;
&lt;br /&gt;
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:&lt;br /&gt;
&lt;br /&gt;
[[Image:kocky.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.&lt;br /&gt;
&lt;br /&gt;
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.&lt;br /&gt;
&lt;br /&gt;
[[Image: kocka_lahka.jpg|300px]]&lt;br /&gt;
[[Image: kocka_tazka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 28.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void msgbox(String sprava) {&lt;br /&gt;
        AlertDialog.Builder builder;&lt;br /&gt;
        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP) {&lt;br /&gt;
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);&lt;br /&gt;
        } else {&lt;br /&gt;
            builder = new AlertDialog.Builder(this);&lt;br /&gt;
        }&lt;br /&gt;
        builder.setTitle(&amp;quot;Sprava&amp;quot;)&lt;br /&gt;
                .setMessage(sprava)&lt;br /&gt;
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // continue with delete&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // do nothing&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setIcon(android.R.drawable.ic_dialog_alert)&lt;br /&gt;
                .show();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.&lt;br /&gt;
&lt;br /&gt;
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Image:stretnutie_robotov.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor &amp;quot;díva&amp;quot; priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch&lt;br /&gt;
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;2WDm4mJBvN4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 30.11.2017&#039;&#039;&lt;br /&gt;
Samo dnes spravil program pre trezor:&lt;br /&gt;
Download: [[Media:Trezor]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=890</id>
		<title>Denníček - november 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2017&amp;diff=890"/>
		<updated>2017-11-30T15:08:54Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 2.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom pracovali na veľkej robotickej ruke.&lt;br /&gt;
&lt;br /&gt;
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.&lt;br /&gt;
&lt;br /&gt;
Marta vylepšovala svoje autonómne vozidlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFF8F8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 7.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.&lt;br /&gt;
&lt;br /&gt;
[[Image:hotovy_program_marta.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NKSoNaIlaLg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:hotovy_program_marta.zip|autonomne_vozidlo.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:po_ceste.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;o4pkhYM3slE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:program_po_ceste.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:po_ceste.zip|po_ceste.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 9.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:&lt;br /&gt;
&lt;br /&gt;
Prvý program používa jeden kufrík &#039;&#039;pocet&#039;&#039;. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:&lt;br /&gt;
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji&lt;br /&gt;
* počká, kým sa nestlačí dotykový senzor&lt;br /&gt;
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka&lt;br /&gt;
&lt;br /&gt;
[[Image:kufre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
kurfre: [[Media:kufre.zip|kufre.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:&lt;br /&gt;
&lt;br /&gt;
[[Image:zvuky.png|500px]]&lt;br /&gt;
&lt;br /&gt;
zvuky: [[Media:zvuky.zip|zvuky.zip]]&lt;br /&gt;
&lt;br /&gt;
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.&lt;br /&gt;
&lt;br /&gt;
jazda so zvukmi: [[Media:jazda_so_zvukmi.zip|jazda_so_zvukmi.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej poskladal konštrukciu futbalistického robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:matejov_futbalista.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 14.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.&lt;br /&gt;
&lt;br /&gt;
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.&lt;br /&gt;
&lt;br /&gt;
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva. &lt;br /&gt;
&lt;br /&gt;
[[Image:auto_s_vlajkou.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:&lt;br /&gt;
&lt;br /&gt;
[[Image:priklad_paralelne_procesy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:priklad_paralelne_procesy.zip|priklad_paralelne_procesy.zip]]&lt;br /&gt;
&lt;br /&gt;
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:auto_s_vlajkou.zip|auto_s_vlajkou.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-Nts1G2sHKI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.&lt;br /&gt;
&lt;br /&gt;
[[Image:cesta_po_okraji.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:cesta_po_okraji.zip|cesta_po_okraji.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;_ADORPKFDS8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;8ld5-OY8YWs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 16.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!&lt;br /&gt;
&lt;br /&gt;
[[Image:sada_fll.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. &lt;br /&gt;
&lt;br /&gt;
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:&lt;br /&gt;
&lt;br /&gt;
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Oliver: Hra by me.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbal_program.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbal.zip|futbal.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 21.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;hnj7iCl-93Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:Oliarobt.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.&lt;br /&gt;
&lt;br /&gt;
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!&lt;br /&gt;
&lt;br /&gt;
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.&lt;br /&gt;
&lt;br /&gt;
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, &lt;br /&gt;
ktoré pracujú s ultrazvukovým senzorom robia:&lt;br /&gt;
&lt;br /&gt;
Príklad 1:&lt;br /&gt;
&lt;br /&gt;
[[Image:meraj_ultrazvuk.png|300px]]&lt;br /&gt;
&lt;br /&gt;
V tomto prípade sme použili &#039;&#039;žltý&#039;&#039; - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:meraj.zip|meraj.zip]]&lt;br /&gt;
&lt;br /&gt;
Príklad 2:&lt;br /&gt;
&lt;br /&gt;
[[Image:ultrazvuk_pipac.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje.&lt;br /&gt;
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:signal.zip|signal.zip]]&lt;br /&gt;
&lt;br /&gt;
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.&lt;br /&gt;
&lt;br /&gt;
[[Image:ciara_simon.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:ciara_simon.zip|ciara_simon.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;NYMO5lbq_l8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;štvrtok, 23.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Matej dokreslil model robota v LDD.&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista_model.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:futbalbot.zip|futbalbot.zip]]&lt;br /&gt;
&lt;br /&gt;
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:&lt;br /&gt;
&lt;br /&gt;
[[Image:kocky.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.&lt;br /&gt;
&lt;br /&gt;
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.&lt;br /&gt;
&lt;br /&gt;
[[Image: kocka_lahka.jpg|300px]]&lt;br /&gt;
[[Image: kocka_tazka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru...  tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F8FFF8;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;utorok, 28.11.2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void msgbox(String sprava) {&lt;br /&gt;
        AlertDialog.Builder builder;&lt;br /&gt;
        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP) {&lt;br /&gt;
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);&lt;br /&gt;
        } else {&lt;br /&gt;
            builder = new AlertDialog.Builder(this);&lt;br /&gt;
        }&lt;br /&gt;
        builder.setTitle(&amp;quot;Sprava&amp;quot;)&lt;br /&gt;
                .setMessage(sprava)&lt;br /&gt;
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // continue with delete&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {&lt;br /&gt;
                    public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
                        // do nothing&lt;br /&gt;
                    }&lt;br /&gt;
                })&lt;br /&gt;
                .setIcon(android.R.drawable.ic_dialog_alert)&lt;br /&gt;
                .show();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.&lt;br /&gt;
&lt;br /&gt;
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Image:stretnutie_robotov.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]]&lt;br /&gt;
&lt;br /&gt;
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor &amp;quot;díva&amp;quot; priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch&lt;br /&gt;
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;2WDm4mJBvN4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&#039;&#039;Štvrtok, 30.11.2017&#039;&#039;&lt;br /&gt;
Samo dnes spravil program pre trezor:&lt;br /&gt;
Download: [[Media:Trezor]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_febru%C3%A1r_2017&amp;diff=539</id>
		<title>Denníček - február 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_febru%C3%A1r_2017&amp;diff=539"/>
		<updated>2017-02-16T14:10:55Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #aaaa90;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;2.2. štvrtok:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Na krúžok sme dostali osciloskop ([http://www.hantek.com/en/ProductDetail_2_31.html Hantek PC Based USB Digital Storage Oscilloscope 6022BE with 20Mhz Bandwidth]), ktorý dokáže na displeji počítača zobrazovať časový priebeh signálov. Pozreli sme sa na to, ako vyzerá pulz, ktorým Arduino riadi servo motor a ako vyzerá signál na sériovom porte, ktorým Arduino posiela do PC správičky do terminálového okienka. Pochopili sme ako sa kódujú bity jednotlivých vysielaných znakov - posielajú sa &amp;quot;odzadu&amp;quot; a pred každým jedným znakom (bajtom) je štartovací bit (start bit) - logická nula a na konci každého bajtu je stopovací bit - logická jednotka.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dohodli sme sa, že skúsime pripraviť tanec na RoboCup do Martina, ktorý je na začiatku apríla!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #dd60dd;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;7.2. utorok:&#039;&#039;&lt;br /&gt;
Prišiel aj Patrik a zopakoval merania s osciloskopom, ktoré sme robili vo štvrtok. Ostatní začali riešiť letnú ligu. Matej poskladal robota. Oliver vymyslel, ako to bude fungovať a zapísal nasledujúci algoritmus.&lt;br /&gt;
Program bude fungovať takto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 - najskôr sa rozbehne vpred &lt;br /&gt;
 - pohybuje sa dovtedy, kým aspoň na jednej strane stále sníma krabicu&lt;br /&gt;
 - prejde ešte kúsok vpred a rozbehne sa vzad&lt;br /&gt;
 - sleduje ľavú aj pravú stranu&lt;br /&gt;
 - naraz robí nasledujúce dva kroky:&lt;br /&gt;
   - v okamihu keď uvidí na ľavej strane krabicu, resetne ľavý otáčkový senzor&lt;br /&gt;
   - v okamihu keď uvidí na pravej strnae krabicu, resetne pravý otáčkový senzor&lt;br /&gt;
 - potom robí tieto dva kroky súčasne:&lt;br /&gt;
   - keď na ľavej strane zmizne prekážka, tak hodnotu z ľavého otáčkového senzora uloží do kufríka A&lt;br /&gt;
   - keď na pravej strane zmizne prekážka, tak hodnotu z pravého otáčkového senzora uloží do kufríka B&lt;br /&gt;
 - keď obidve veci urobí, tak prejde ešte malý kúsok a otoci sa 90 stupnov vlavo&lt;br /&gt;
   ide dopredu az kym nezachyti krabicu vpravo&lt;br /&gt;
   ked ju zachyti, znova resetne lavy otackovy sensor&lt;br /&gt;
   potom ide dopredu az kym nestrati krabicu&lt;br /&gt;
   ked ju strati posle namerane hodnoty do kufrika C&lt;br /&gt;
   zacne cuvat  az kym znova nezachyti, nestrati a znova nezachyti krabicu na pravej strane&lt;br /&gt;
   vtedy resetne pravy otackovy sensor a ide dozadu az kym nestrati &lt;br /&gt;
   potom nameranu hodnotu posle do kufrika D&lt;br /&gt;
   vynasobi A*C a B*D&lt;br /&gt;
   porovna ich &lt;br /&gt;
   vrati sa na povodne miesto a lopticku hodi do toho mensieho&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #00aa00;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;9.2. štvrtok:&#039;&#039;&lt;br /&gt;
Pokračovali sme v riešení letnej ligy a začali sme vymýšľať ako riadiť modely do tanca - prišli nám oblečenia na postavičky. Matej staval konštrukciu pre najväčší model.&lt;br /&gt;
&lt;br /&gt;
Dnes panter spravil toto:&lt;br /&gt;
&lt;br /&gt;
program letná liga 1. kolo:[[Media:krobeco.zip|krobeco.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #aaaa30;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;14.2. utorok:&#039;&#039;&lt;br /&gt;
Samo prišiel z lyžovačky!&lt;br /&gt;
Pokračovali sme v riešení letnej ligy, v stavbe modelov a konštruovaní prvej verzie koliesok pre postavičky do tanca.&lt;br /&gt;
Marvis, náš nový člen, usilovne staval a programoval odpruženého robota, ktorý ale potrebuje spevniť alebo vylepšiť konštrukciu.&lt;br /&gt;
Zostrihali sme zvukový klip do tanca tak, aby sa vošiel do 2 minút, je na samostatnej stránke venovanej tancu.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Arduino&amp;diff=497</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Arduino&amp;diff=497"/>
		<updated>2017-01-31T14:25:40Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#FAFFDA;&amp;quot;&amp;gt;&lt;br /&gt;
Slovo Arduino označuje niekoľko vecí: &lt;br /&gt;
* je to počítač (malá doska plošného spoja osadená väčšinou jednočipovým mikropočítačom Atmel AVR ATMega328) &lt;br /&gt;
* je to programovací jazyk v ktorom sa tento počítač dá programovať&lt;br /&gt;
* je to program - programovacie vývojové prostredie, pomocou ktorého sa program zapisuje a zároveň cez USB kábel prenáša a spúšťa na Arduine&lt;br /&gt;
* sú to všetky tieto veci dokopy.&lt;br /&gt;
&lt;br /&gt;
Arduino sa vyrába v rozličných verziách.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_uno.jpg|Arduino Uno]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Uno - najrozšírenejší model Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_nano.jpg|Arduino Nano|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Nano - funguje rovnako ako Uno, ale je oveľa menšie - takéto budeme používať aj my&lt;br /&gt;
&lt;br /&gt;
[[Image:robot_acrob.jpg|Robot Acrob]]&amp;lt;br&amp;gt;&lt;br /&gt;
Robot Acrob - používa dosku, ktorá sa podobá na Arduino, ale funguje rovnako, mali sme ich požičané od združenia Robotika.SK na krúžku&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328.jpg|ATMega328|250px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Jednočipový mikropočítač ATMega328, ktorý je základom Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328_pinout.png|ATMega328 pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
Funkcie jednotlivých vývodov jednočipového mikropočítača ATMega328&lt;br /&gt;
&lt;br /&gt;
Podrobné informácie o jednočipovom mikropočítači ATMega328 sa dajú nájsť v jeho [[Media:atmega328datasheet.pdf|datasheete]].&lt;br /&gt;
&lt;br /&gt;
Každý počítač sa skladá z týchto základných častí:&lt;br /&gt;
&lt;br /&gt;
[[Image:pocitac.png|základná schéma počítača]]&lt;br /&gt;
&lt;br /&gt;
Pamäť uchováva všetky údaje (obrázky, zvuky, texty, čísla, a podobne) a programy, ktoré sa vykonávajú príkaz za príkazom v procesore. Pamäť s procesorom sú navzájom prepojené zbernicou, ktorá medzi nimi prenáša údaje. Aby s počítač mohol komunikovať so svojím okolím - napr. s človekom, alebo s vonkajšími pamäťami, na ktorých ukladá rozsiahle údaje (pevné disky, DVD, Internet), tak sú na zbernici pripojené aj vstupné a výstupné zariadenia.&lt;br /&gt;
&lt;br /&gt;
To znamená, programy pozostávajú z postupnosti príkazov:&lt;br /&gt;
&lt;br /&gt;
 príkaz1&lt;br /&gt;
 príkaz2&lt;br /&gt;
 ...&lt;br /&gt;
 príkazN&lt;br /&gt;
&lt;br /&gt;
V každom okamihu procesor naraz vykonáva iba jeden príkaz, postupne od začiatku programu do konca. V programoch sa môžu vyskytovať cykly:&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 opakuj:&lt;br /&gt;
   príkaz&lt;br /&gt;
   príkaz&lt;br /&gt;
 koniec cyklu&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
- ak treba nejakú skupinu príkazov niekoľkokrát zopakovať, alebo podmienky, ktoré dovoľujú vykonať rozličné skupiny príkazov, podľa toho, ktorá z nich je práve vhodná (väčšinou na základe otestovania nejakej podmienky):&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 platí podmienka?&lt;br /&gt;
 ak áno, vykonaj túto skupinu príkazov:&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 ak nie, vykonaj inú skupinu príkazov&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 a potom pokračuj v každom prípade ďalej:&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Arduino je teda počítač, ktorý má svoju pamäť, procesor a nahrávame do neho cez kábel program, ktorý najskôr naprogramujeme pomocou prostredia Arduino:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_program.png|program zapisovaný v prostredí Arduino|450px]].&lt;br /&gt;
&lt;br /&gt;
Nato, aby sme mohli pracovať s prostredím Arduino si ho potrebujeme downloadnut a nainštalovať zo stránky [http://arduino.cc arduino.cc] - nainštalujte si &amp;quot;Windows Installer&amp;quot; - to by malo nainštalovať aj ovládače (drivers).&lt;br /&gt;
&lt;br /&gt;
Program sa do Arduina nahráva cez prevodník USB-Serial (ktorý je v bežných arduinach už zabudovaný - ale Acroby ich potrebujú):&lt;br /&gt;
&lt;br /&gt;
[[Image:usb_serial.jpg|prevodník USB-Serial|300px]]&lt;br /&gt;
&lt;br /&gt;
Arduinové výstupy sú označené D0-D13 a A0-A5. Napájanie sa privádza na piny VCC a AVCC (+5V) a GND (zem, 0V). RXD, TXD označujú sériový port na komunikáciu s inými počítačmi alebo zariadeniami (napr. s PC), motory sa väčšinou pripájajú na piny D9 a D10.&lt;br /&gt;
&lt;br /&gt;
Na väčšine Arduin je pin D13 pripojený na zabudovanú svietivú diódu (LED). Prvý program, ktorý napíšeme túto LEDku rozbliká.&lt;br /&gt;
&lt;br /&gt;
Každý arduinový program obsahuje aspoň tieto dve funkcie:&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;
  // put your setup code here, to run once:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcia setup() sa spustí vždy po zapnutí počítača - hneď po spustení programu. Jej úlohou je ponastavovať všetky zariadenia, ktoré sú k Arduinu pripojené. Funkcia loop() sa spustí, keď setup() skončí a ak loop() skončí (čo nemusí...), tak sa spúšťa znovu a znovu, stále dookola.&lt;br /&gt;
&lt;br /&gt;
Pre rozblikanie LED musíme najskôr počítaču nastaviť pin D13 ako výstupný. Každý digitálny pin sa dá používať buď ako vstupný (vtedy Arduino z nožičky integrovaného obvodu vie prečítať, či tam je logická 0 (nulové napätie), alebo logická 1 (napätie 5V). Pin nemôže byť naraz aj vstupný aj výstupný, musíme sa rozhodnúť ako ho chceme používať a podľa toho ho vo fukcii setup() nastaviť. Robí sa to príkazom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  pinMode(číslo_pinu, režim); // pričom režim je buď INPUT, alebo OUTPUT  (je možná aj tretia možnosť, ale o tom až niekedy neskôr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keď je pin nastavený ako výstupný, tak vo funkcii loop() môžeme LED kedykoľvek zasvietiť zapísaním logickej jednotky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, HIGH);  // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 1)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podobne, LED zhasneme takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, LOW);   // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 0)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arduino však stihne za sekundu vykonať 16 miliónov inštrukcií (taktovacia frekvencia procesora je 16 MHz) a tak, aby sme si blikanie LED stihli všimnúť, musíme po každej zmene pinu nejaký čas počkať - na to slúži funkcia delay(čas_v_milisekundách). Celý program na blikanie LED teda vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: blikaj_ledkou.ino&lt;br /&gt;
 // popis: program blikne raz za sekundu zabudovanou LED &lt;br /&gt;
 void setup() {&lt;br /&gt;
  pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby sa nám Arduino programovalo jednoduchšie, ak ho máme pripojené káblom, môžeme z neho cez kábel (čiže cez sériový port) do PC poslať nejakú textovú správu:&lt;br /&gt;
&lt;br /&gt;
Vo funkcii setup() najskôr nastavíme rýchlosť prenosu (počet prenesených bitov za sekundu), napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a potom môžeme používať funkcie na vstup a výstup cez sériový port, napr. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Ahoj&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celý takýto text sa odvysiela cez jediný pin TXD mikropočítača ATMega328 (pozri obrázok hore). Ako sa to udeje?&lt;br /&gt;
Každý znak (písmeno, číslica, znamienko a pod.) má nejaký číselný kód - väčšinou sa na to používa medzinárodný štandard ASCII. Vidíme, že napríklad znak &#039;A&#039; má kód 65, znak &#039;o&#039; má kód 111, atď.&lt;br /&gt;
&lt;br /&gt;
[[Image:ascii-codes-table.png|ASCII tabuľka|300px]]&lt;br /&gt;
&lt;br /&gt;
Tieto kódy sú v Arduine uložené v dvojkovej sústave, tak ako všetky ostatné čísla! Počítače totiž všetky čísla ukladajú v dvojkovej sústave, keďže na to stačí, aby na príslušnom pine bolo kladné napätie (logická jednotka) alebo nulové napätie (logická nula).&lt;br /&gt;
&lt;br /&gt;
Ľudia na výpočty používajú desiatkovú sústavu, keďže majú 10 prstov, je im prirodzenejšia: obsahuje 10 číslic: 0, 1, 2, ..., 9.&lt;br /&gt;
Za poslednou číslicou nasleduje číslo 10 zložené z dvoch číslic, za posledným dvojciferným číslo 99 nasleduje číslo 100, atď. V čísle, ktoré má viac číslic stojí každá číslica na nejakom mieste, napr. v čísle 2016: je číslica 6 na mieste jednotiek (má hodnotu 6 x 1), číslica 1 na mieste desiatok (má hodnotu 1 x 10), číslica 0 na mieste stoviek (hodnota 0 x 100) a číslica 2 na mieste tisícok (hodnota 2 x 1000). Podobne to funguje aj v dvojkovej sústave, ale namiesto 10 číslic máme k dispozícii iba číslice dve: 0 a 1. Čísla tam nasledujú za sebou takto:&lt;br /&gt;
&lt;br /&gt;
     0      - zodpovedá 0 v desiatkovej sústave)&lt;br /&gt;
     1      - 1&lt;br /&gt;
    10      - 2&lt;br /&gt;
    11      - 3&lt;br /&gt;
   100      - 4&lt;br /&gt;
   101      - 5&lt;br /&gt;
   110      - 6&lt;br /&gt;
   111      - 7&lt;br /&gt;
  1000      - 8&lt;br /&gt;
  1001      - 9&lt;br /&gt;
  1010      - 10&lt;br /&gt;
  1011      - 11&lt;br /&gt;
  1100      - 12&lt;br /&gt;
  1101      - 13&lt;br /&gt;
  1110      - 14&lt;br /&gt;
  1111      - 15&lt;br /&gt;
 10000      - 16&lt;br /&gt;
 10001      - 17&lt;br /&gt;
  atď.&lt;br /&gt;
&lt;br /&gt;
ľahko si všimneme, že aj tu majú číslice svoje &amp;quot;rády&amp;quot;, napr. v čísle 10110 (čiže 22 v desiatkovej sústave) máme:&lt;br /&gt;
  0 - rád jednotiek &lt;br /&gt;
  1 - rád dvojek (1 x 2) &lt;br /&gt;
  1 - rád štvoriek (1 x 4)&lt;br /&gt;
  0 - rád osmičiek&lt;br /&gt;
  1 - ráď šestnástok (1 x 16)&lt;br /&gt;
&lt;br /&gt;
 1 x 2 + 1 x 4 + 1 x 16 = 22&lt;br /&gt;
&lt;br /&gt;
Takže na odvysielanie čísla 8-bitového čísla 65 cez pin TXD sa tam postupne odvysielajú číslice 01000001 - a pri rýchlosti 115200 číslic za sekundu tam každá bude iba 1/115200 s, čo je približne 8,68 mikrosekúnd.&lt;br /&gt;
 &lt;br /&gt;
Predchádzajúci program upravme tak, aby okrem blikania LEDkou aj vypisoval texty ON a OFF:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: blikaj_a_vypisuj.ino&lt;br /&gt;
 // popis: program blikne raz za sekundu zabudovanou LED&lt;br /&gt;
 //        a pritom cez seriovy port vypisuje textovu spravu&lt;br /&gt;
 void setup() {&lt;br /&gt;
  pinMode(13, OUTPUT);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  Serial.println(&amp;quot;ON&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  Serial.println(&amp;quot;OFF&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dobrý robot by ale iba s výstupmi nevystačil, musí nejakým spôsobom získavať informácie z prostredia - pomocou senzorov, ktoré tvoria jeho vstupné zariadenia. Napríklad ak nárazník narazí do prekážky, stlačí sa mikrospínač a hodnota na výstupe z vypínača sa zmení z logickej nuly na logickú jednotku. Potrebujeme napísať program, ktorý hodnotu na svojom pine dokáže prečítať.&lt;br /&gt;
&lt;br /&gt;
Pin 2 nastavíme na vstupný:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 pinMode(2, INPUT);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a funkcia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 digitalRead(2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nám vráti buď 0 alebo 1 - podľa toho, či je na pine 2 logická nula, alebo jednotka. Túto hodnotu môžeme použiť napríklad v podmienke, ktorá sa v jazyku C++ (na ktorom je Arduino založené) používa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 if (podmienka) {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak je podmienka splnená&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak podmienka nie je splnená, čiže neplatí&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
časť else je nepovinná - môže a nemusí tam byť. V našom prípade môžeme program naprogramovať tak, že pri stlačení tlačidla LED zasvieti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: zasviet_pri_stlaceni.ino&lt;br /&gt;
 // zapojenie: D0 - zem cez rezistor a zaroven:&lt;br /&gt;
 //            D0 - na mikrospinac za ktorym je VCC&lt;br /&gt;
 // popis: pri stlaceni mirkospinaca sa rozsvieti zabudovana LED&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(2,INPUT);&lt;br /&gt;
   pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   if (digitalRead(2)) {&lt;br /&gt;
     digitalWrite(13, HIGH);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
     digitalWrite(13,LOW);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako to zapojiť?&lt;br /&gt;
&lt;br /&gt;
Mikrospínač, ktorý je v stavebnici Acroba funguje tak, že bez stlačenia sú prepojené len kontakty cez dlhšie strany obdĺžnika a po stlačení sú prepojené všetky 4 kontakty. &lt;br /&gt;
&lt;br /&gt;
[[Image:microswitch.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Preto do pinu D2 pripojíme jeden výstup z tlačidla. Druhý výstup tlačidla spojíme s napájaním (VCC), ktoré má hodnotu napätia ako logická 1. Tým zabezpečíme, že pri stlačení tlačidla bude na D2 logická jednotka. Lenže, ak tlačidlo nestlačíme - logická nula tam nebude, bude tam len pripojený &amp;quot;vo vzduchu visiaci&amp;quot; káblik a to nie je dobre. Preto ho treba prepojiť so zemou. Ale pozor - ak by sme ho so zemou prepojili len tak - priamo, tak by sme pri stlačení tlačidla spôsobili skrat - priamymi vodičmi by bolo spojené VCC (plus na baterke) so zemou (mínus na baterke) a takúto situáciu nesmieme dopustiť ani na krátky okamih. Preto pin D2 spojíme so zemou cez rezistor s dostatočne veľkým odporom, napr. 2 kOhm:&lt;br /&gt;
&lt;br /&gt;
[[Image:schema_tlacidlo.png|zapojenie s mikroswitchom]]&lt;br /&gt;
&lt;br /&gt;
Robot Acrob je poháňaný dvoma servomotormi. Servomotor je zaujímavá súčiastka - je to motor s prevodovkou a riadiacou elektronikou. Vnútri vyzerá nejak takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:servo_motor.jpg|vnútornosti servomotorov]]&lt;br /&gt;
&lt;br /&gt;
používajú sa väčšinou v robotických ramenách, pričom sa môžu otáčať v rozsahu 0-180 stupňov (90 je stredná poloha). Viac otočiť im nedovolí zabudovaná zarážka. Potenciometer je v skutočnosti rezistor s premenlivou hodnotou a používa sa ako spätná väzba, ktorá riadiacu elektroniku serva informuje o tom, ako je práve servo otočené. Cez signálny káblik (biely, alebo žltý) elektronika dostáva pokyn z počítača (napr. z Arduina), do akej polohy sa má servo nastaviť. Elektronika porovná aktuálnu hodnotu s požadovanou a podľa toho rozbehne motor správnym smerom a vhodnou rýchlosťou.&lt;br /&gt;
&lt;br /&gt;
Servá, ktoré sú zabudované do Acrobov, sú tzv. modifikované servá - zarážka, ktorá bráni súvislému otáčaniu je odstránená a potenciometer je nahradený rezistorom so zafixovanou - pevnou hodnotou. Elektronika serva si preto &amp;quot;myslí&amp;quot;, že servo je stále v strede (na hodnote 90) a pri pokyne nastavenia do polohy napr. 120 sa roztočí jedným smerom a bude sa tak točiť donekonečna. Pri pokyne napr. 30 sa bude točiť donekonečna opačným smerom. Pri požadovenej polohe 90 sa zastaví a pri polohách blízko 90 sa bude otáčať iba pomaly, pretože už je skoro &amp;quot;v cieli&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ako servo riadiť - ako mu vysvetliť, že sa má nastaviť do požadovanej polohy napr. 30 stupňov?&lt;br /&gt;
&lt;br /&gt;
Riadiaci signál do serva (biely alebo žltý káblik) by mal každých 20 ms obsahovať pulz (logickú jednotku na krátky okamih). Dĺžka tohto okamihu určuje do akej polohy sa servo má nastaviť. Typicky to býva od 0.5 - 1.5 ms. Nasledujúci program teda roztočí servo jedným smerom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: pohni_servom.ino&lt;br /&gt;
 // zapojenie: D10 - riadiaci signal pre servo (modifikovane)&lt;br /&gt;
 // popis: program toci modifikovanym servomotorom, &lt;br /&gt;
 //        alebo sa bezne servo posunie do svojej krajnej polohy&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(10, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(10, LOW);&lt;br /&gt;
   delay(20);&lt;br /&gt;
   digitalWrite(10, HIGH);&lt;br /&gt;
   delayMicroseconds(500);&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program vyšle na pin D10 krátky pulz 0.5 ms každých 20 ms. Toľko teória. Arduino je však vymyslené tak, aby sme sa nemuseli starať o každý bit sami a stačí použiť knižnicu Servo, ktorá sa o generovanie riadiaceho signálu stará sama v spolupráci so zabudovanými časovačmi počítača. Program, ktorý pohne robotom teda vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: ukazka_pohybu.ino&lt;br /&gt;
 // zapojenie: D9 - riadiaci signal pre lave servo&lt;br /&gt;
 //            D10 - riadiaci signal pre prave servo&lt;br /&gt;
 // popis: robot do nekonecna opakuje pohyb vpred a zastavenie&lt;br /&gt;
 #include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Servo lavy, pravy; &lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   lavy.attach(9);  // lave servo je na pine 9&lt;br /&gt;
   pravy.attach(10);  // prave servo je na pine 10&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // rozbehni sa&lt;br /&gt;
   lavy.write(120);&lt;br /&gt;
   pravy.write(30);&lt;br /&gt;
   // tri sekundy bez&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   // zastan&lt;br /&gt;
   lavy.write(90);&lt;br /&gt;
   pravy.write(90);&lt;br /&gt;
   // tri sekundy cakaj&lt;br /&gt;
   delay(3000);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;height: 1px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;a2&amp;quot; style=&amp;quot;background-color:#EAFFF3;&amp;quot;&amp;gt;&lt;br /&gt;
K Acrobu môžeme pripojiť malú sirénku, ktorá funguje ako reproduktor:&lt;br /&gt;
&lt;br /&gt;
[[Image:piezo.png|malá signálna siréna]]&lt;br /&gt;
&lt;br /&gt;
Sirénku si môžeme predstaviť ako taký malý reproduktor. Reproduktor vytvára zvuk tak, že po dvoch drôtoch doň prichádza premenlivé napätie pripojené na jeho cievku elektromagnetu. Elektromagnet je pevne spojený s kuželovitou kmitajúcou membránou a vytvorené magnetické pole ho striedavo priťahuje a odpudzuje k pevému magnetu, ktorý je tiež súčasťou reproduktora. &lt;br /&gt;
&lt;br /&gt;
[[Image:how_speakers_work.png|čo sú reproduktory?]]&lt;br /&gt;
&lt;br /&gt;
Membrána reproduktora naráža na častice vzduchu, rozkmitá ich a zvuk sa v prostredí šíri ako pozdĺžne kmitajúca vlna mechanického vlnenia ďalej. Na vytvorenie čistého zvuku by sme mali napätie privádzané do reproduktora meniť plynule&lt;br /&gt;
&lt;br /&gt;
[[Image:sinusoida.png|plynule sa meniace napätie]]&lt;br /&gt;
&lt;br /&gt;
ale pri využití digitálnej elektroniky, ktoré vie na výstupe generovať iba 0 a 1 si to môžeme zjednodušiť a pomocou pravidelného striedania digitálneho signálu medzi 0 a 1 môžeme vydať počuteľný tón. Dôležité je hlavne to, aby frekvencia kmitania sedela s frekvenciou požadovaného tónu. &lt;br /&gt;
&lt;br /&gt;
[[Image:hranaty_signal.png|digitálna aproximácia sinusoidy]]&lt;br /&gt;
&lt;br /&gt;
Treba dať pozor na pripojenie - jedna strana sirénky je ozačená ako &amp;quot;+&amp;quot; - tú môžeme pripojiť priamo na niektorý digitálny výstupný pin a riadiť ho rovnako ako pri blikaní LEDkou, len trochu rýchlejšie, druhú stranu sirénky pripojíme priamo na zem.&lt;br /&gt;
&lt;br /&gt;
Hudobné tóny rozličných výšok sa líšia svojimi frekvenciami. Tón s veľkou frekvenciou (za sekundu membrána kmitne veľakrát) je vysoký tón, naopak tón s nízkou frekvenciou kmitania membrány je nízky tón. Človek typicky počuje frekvencie okolo 20-15000 Hz. Nasledujúci program teda vydá tón malé &#039;A&#039;, ktorý má frekvenciu 440 Hz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: zajraj_a.ino&lt;br /&gt;
 // zapojenie: D11 - plus pin sirenky (jej minus ide na zem)&lt;br /&gt;
 // popis: suvisle pipa frekvenciou 440 Hz (ton male A)&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11,OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(11, HIGH);&lt;br /&gt;
   delayMicroseconds(1136);     // 1136 usec je dlzka trvania jednej pol-periody&lt;br /&gt;
   digitalWrite(11,LOW);        // ak kmitame 440-krat za sekundu, tak dlzka jedneho&lt;br /&gt;
   delayMicroseconds(1136);     // kmitnutia je 1/440 s, co je 0.0022727 s, polovica&lt;br /&gt;
 }                              // z toho je 0.0011363 s = 1.1363 ms = 1136.3 usec&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak chceme, aby robot zahral nejakú zaujímavejšiu pesničku, tak by sa nám hodila funkcia, ktorá vie zahrať tón s ľubovoľnou frekvenciou a bolo by fajn, keby sme tej funkcii vedeli povedať ako dlho ten tón znie. Funkcia? a to je čo? Funkciu si môžeme predstaviť ako &amp;quot;vlastný blok&amp;quot; v programovacom jazyku pre LEGO MINDSTORMS. Je to kus programu, ktorý môžeme vyvolať opakovane z rôznych miest nášho programu - a môžeme mu zadať nejaké parametre, ktoré určujú, čo presne má urobiť. Každý náš arduinovský program už pozostával z dvoch funkcií - setup() a loop(). Takýchto funkcií môžeme pridať koľko chceme a vyvolať ich z hociktorého miesta programu. Funkcii môžeme predpísať ľubovoľný počet parametrov - každý z nich musí mať stanovený &amp;quot;typ&amp;quot; - čiže napr. či je to číslo, logická hodnota, znak, alebo reťazec znakov. Napríklad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void scitaj(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(&amp;quot;Sucet je: &amp;quot;);&lt;br /&gt;
   Serial.println(a + b);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
je funkcia, ktorá dostane dva parametre a, b, a cez sériový port vypíše text &amp;quot;Sucet je XY&amp;quot;, kde XY bude skutočný súčet hodnôt a, b. Takúto funkciu môžeme z programu vyvolať napr. takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 scitaj(3, 4);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ale za parametre môžeme dosadiť aj hodnoty z premenných, napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int premenna = 12;&lt;br /&gt;
 int ina_premenna;&lt;br /&gt;
  &lt;br /&gt;
 ina_premenna = 10;&lt;br /&gt;
 &lt;br /&gt;
 scitaj(premenna, ina_premenna);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takže teraz napíšme funkciu, ktorá bude zadanou frekvenciou (určenou v Hz) kmitať stanovenú dobu (určenú v ms). Namiesto typu int použijeme typ long, lebo do premenných typu long sa vojdú oveľa väčšie čísla - čo potrebujeme, lebo budeme počítať v mikrosekundách (miliontinách sekundy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // f - frekvencia v Hz, d - dlzka trvania tonu v ms&lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long t = 500000 / f;     // ako dlho trva polovica jednej periody tonu s frekvenciou f? &lt;br /&gt;
   long p = d * f / 1000;   // kolko celych period sa vojde do casoveho useku dlzky d?&lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++) &lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(t);  // namiesto 1136 usec ako v pripade tonu s frekvenciou 440 Hz &lt;br /&gt;
     digitalWrite(11,LOW);  // budeme cakat t usec, ktore sme vypocitali z frekvencie f&lt;br /&gt;
     delayMicroseconds(t);  //  1 / f - v sekundach, takze este krat milion (na mikrosekundy) a deleno 2&lt;br /&gt;
   }                        // co je to iste ako 500000 / f&lt;br /&gt;
   delay(50);  // na konci kratka prestavka, aby boli tony zretelne oddelene a nezlievali sa&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tomto programe sú dva zaujímavé výpočty. Prvý z nich využíva fakt, že vzťah medzi frekvenciou a periódou je T = 1 / f a zároveň f = 1 / T. V prvom riadku funkcie teda vypočítame koľko mikrosekúnd trvá polovica periódy, ak sa má za jednu sekundu zopakovať f kmitnutí signálu nahor a nadol.&lt;br /&gt;
Druhý výpočet slúži na to, aby sme vedeli koľkokrát sa má kmitnutie nahor a nadol zopakovať (to je tá podmienka i &amp;lt; p v cykle for). Zistíme to tak, že vynásobíme dĺžku trvania tónu (d) frekvenciou (f). Napríklad ak kmitáme frekvenciou 440 Hz a tón má znieť 1 sekundu, tak potrebujeme kmitnúť 1 * 440 = 440-krát. Alebo ak má tón znieť 2 sekundy, tak potrebujeme kmitnúť 2 * 440 = 880-krát. Ak by mal znieť iba pol sekundy, tak by to bolo 0,5 * 440 = 220-krát. Lenže dĺžka trvania tónu (d) je zadaná v milisekundách, takže aby sme dostali správny výsledok, musíme ho ešte vydeliť 1000 (čím ako keby prevedieme hodnotu d na milisekundy). Cyklus for, ktorý sme použili je najbežnejšie používaný cyklus, pomocou ktorého môžeme nejakú skupinu príkazov uzavretú v zložených zátvorkách zopakovať viackrát. Zapisuje sa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 for (príkaz_ktory_sa_vykona_na_zaciatku; podmienka_opakovania; prikaz_ktory_sa_vykona_po_kazdom_opakovani)&lt;br /&gt;
 {&lt;br /&gt;
   //...prikazy...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Prikaz for teda vŽdy vykoná najskôr svoj prvý príkaz za zátvorkou - v našom prípade vytvorí premennú typu int a nastaví ju na hodnotu 0. Potom skontroluje, či platí podmienka opakovania - v našom prípade, či počet opakovaní (premenná i) je stále menší ako stanovený počet opakovaní (premenná p) - ak áno, prvýkrát vykoná príkazy v tele cyklu (medzi zloženými zátvorkami). Potom nasleduje príkaz, ktorý sa vykoná po každom opakovaní cyklu - posledný výraz v okrúhlych zátvorkách za slovíčkom for - v našom prípade &amp;quot;i++&amp;quot;, čo znamená zvýšiť premennú i o jedna a následne sa zasa skontroluje, či stále platí podmienka opakovania. Ak nie, cyklus skončil a program pokračuje ďalším príkazom za telom cyklu. Ak je podmienka stále splnená, znovu sa vykonajú príkazy v tele cyklu, príkaz po každom opakovaní a zasa sa otestuje podmienka - a takto až dovtedy, kým podmienka prestane byť splnená (čo v krajnom prípade nemusí byť nikdy - v takom prípade cyklus nikdy neskončí).&lt;br /&gt;
&lt;br /&gt;
Keď máme funkciu hotovú, môžeme ju využiť na to, aby robot zahral známu melódiu Kohútik jarabí :-)  C-D-E-F-F-F-F-E-D-E-E-E-E-D-C-D-D-D-D-E-D-C-C-C s dĺžkami nôt 1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1, kde 1 je polová a 2 je celá nota (polová má polovičnú dobu trvania):&lt;br /&gt;
&lt;br /&gt;
Aby to bolo zaujímavejšie na digitálne výstupy D0, D1, D2, D3 môžeme zapojiť rozličné LEDky a spolu s jednotlivými tónmi C,D,E,F zapínať jednotlivé LED - získame takto farebnú hudbu :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_farebna_hudba.jpg|farebná hudba na robotovi Acrob]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: kohutik.ino&lt;br /&gt;
 // zapojenie: D11 - plus pin sirenky (minus ide na zem)&lt;br /&gt;
 // popis: zahra melodiu pesnicky Kohutik jarabi&lt;br /&gt;
 void ton(long frekvencia, long trvanie)&lt;br /&gt;
 {&lt;br /&gt;
   long p = trvanie * frekvencia / 1000L;   // L na konci cisla zdoraznuje&lt;br /&gt;
   long polPeriody = 500000L / frekvencia;  // ze ide o konstantu typu long, nemusi tam byt&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
    pinMode(11, OUTPUT);  // pipac&lt;br /&gt;
    &lt;br /&gt;
    pinMode(0, OUTPUT);   // farebna hudba - 4 LED&lt;br /&gt;
    pinMode(1, OUTPUT);&lt;br /&gt;
    pinMode(2, OUTPUT);&lt;br /&gt;
    pinMode(3, OUTPUT);   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // dostane cislo LED 1-4, tu zasvieti a ostatne zhasne&lt;br /&gt;
 void led(int ktora)&lt;br /&gt;
 {&lt;br /&gt;
   if (ktora == 1) digitalWrite(0, HIGH);&lt;br /&gt;
   else digitalWrite(0, LOW);&lt;br /&gt;
   if (ktora == 2) digitalWrite(1, HIGH);&lt;br /&gt;
   else digitalWrite(1, LOW);&lt;br /&gt;
   if (ktora == 3) digitalWrite(2, HIGH);&lt;br /&gt;
   else digitalWrite(2, LOW);&lt;br /&gt;
   if (ktora == 4) digitalWrite(3, HIGH);&lt;br /&gt;
   else digitalWrite(3, LOW);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // C: 262&lt;br /&gt;
 // D: 293&lt;br /&gt;
 // E: 330&lt;br /&gt;
 // F: 349&lt;br /&gt;
 void hrajC(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(1);&lt;br /&gt;
   ton(262, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajD(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(2);&lt;br /&gt;
   ton(293, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajE(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(3);&lt;br /&gt;
   ton(330, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajF(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(4);  &lt;br /&gt;
   ton(349, dlzka);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 { &lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajF(1000);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajC(500); &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môže byť? Neviem, asi by bolo ešte lepšie, ak by sme melódiu nemuseli zapisovať takýmto spôsobom. Jednak tu máme iba funkcie na 4 tóny a na klavíri býva aj viac ako 80 klávesov a tak vytvárať funkciu pre každý tón nebude veľmi praktické. Skúsme to ešte trochu lepšie - použijeme pole. &lt;br /&gt;
&lt;br /&gt;
Využijeme pole na to, aby sme si uložili frekvencie všetkých tónov, ktoré bude náš muzikantský program poznať. Pole je taká premenná, do ktorej sa dá uložiť viacero hodnôt naraz, nielen jedna. Napríklad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[3];  // premenna a schovava tri cele cisla&lt;br /&gt;
 &lt;br /&gt;
 a[0] = 10; // prve z nich nech je 10&lt;br /&gt;
 a[1] = 11; // do druheho vloz 11&lt;br /&gt;
 a[2] = 12; // a posledne nech obsahuje 12&lt;br /&gt;
 &lt;br /&gt;
 int b = a[0] + a[1] + a[2];  // vypocitaj sucet vsetkych troch hodnot a uloz ho do premennej b&lt;br /&gt;
 &lt;br /&gt;
 Serial.print(&amp;quot;Sucet je: &amp;quot;);  // vypis vysledok na seriovy port&lt;br /&gt;
 Serial.println(b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na prístup k jednotlivým hodnotám v poli môžeme použiť aj premennú (niekedy sa jej hovorí indexová, lebo poradie prvku, ku ktorému sa pristupuje sa volá index):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[10];&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)   &lt;br /&gt;
 {&lt;br /&gt;
   a[i] = 1 + i * 2;   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int sucet = 0;&lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(a[i]);&lt;br /&gt;
   if (i &amp;lt; 9) Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
   sucet = sucet + a[i];&lt;br /&gt;
 }&lt;br /&gt;
 Serial.print(&amp;quot;=&amp;quot;);&lt;br /&gt;
 Serial.println(sucet);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistite, čo presne urobí tento program?&lt;br /&gt;
&lt;br /&gt;
Tak teda naspäť k nášmu hodobníckemu programu. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: melodia.ino&lt;br /&gt;
 // zapojenie: D11 - plus pin sirenky (minus ide na zem)&lt;br /&gt;
 // popis: zahra melodiu zadanu v poliach melodiaT - tony&lt;br /&gt;
 //        a melodiaD - dlzky tonov&lt;br /&gt;
 &lt;br /&gt;
 #define TEMPO 24    // cim vyssia hodnota, tym pomalsie tempo&lt;br /&gt;
 &lt;br /&gt;
 // pocet not v melodii&lt;br /&gt;
 int dlzka = 25;  &lt;br /&gt;
 &lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &lt;br /&gt;
                   &#039;C&#039;, &#039;h&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;g&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;e&#039;, &#039;d&#039;, &#039;c&#039;, &#039;c&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 16, 16,&lt;br /&gt;
                     8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 16, 16}; &lt;br /&gt;
 &lt;br /&gt;
 // ake tony pozname - pouzili sme specialne znaky na oznacenie poltonov, zatial nam stacia 2 oktavy &lt;br /&gt;
 char tony[] = {&#039;c&#039;, &#039;#&#039;, &#039;d&#039;, &#039;%&#039;, &#039;e&#039;, &#039;f&#039;, &#039;$&#039;, &#039;g&#039;, &#039;^&#039;, &#039;a&#039;, &#039;*&#039;, &#039;h&#039;,&lt;br /&gt;
                &#039;C&#039;, &#039;!&#039;, &#039;D&#039;, &#039;~&#039;, &#039;E&#039;, &#039;F&#039;, &#039;+&#039;, &#039;G&#039;, &#039;-&#039;, &#039;A&#039;, &#039;/&#039;, &#039;H&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // hodnoty frekvencii tonov a poltonov sme si nasli na internete:&lt;br /&gt;
 // radkon.eu/projects/other/tones.html&lt;br /&gt;
 &lt;br /&gt;
 int frekvencie[] = {261, 277, 293, 311, 329, 349, 369, 391, 415, 440, 466, 493, 523, 554, 587, 622, 659, 698, 739, 783, 830, 880, 932, 987};&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11, OUTPUT);                    // sirenku pripojime na D11&lt;br /&gt;
   &lt;br /&gt;
   // raz zahraj celu melodiu&lt;br /&gt;
   for (int i = 0; i &amp;lt; dlzka; i++)&lt;br /&gt;
     hraj(melodiaT[i], melodiaD[i]);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long p = d * f / 1000L;&lt;br /&gt;
   long polPeriody = 500000L / f;&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hraj(char nota, int trvanie)&lt;br /&gt;
 {&lt;br /&gt;
  int kde = 0;&lt;br /&gt;
  while (tony[kde] != nota) kde++;  // najdeme index pozadovaneho tonu&lt;br /&gt;
  ton(frekvencie[kde], trvanie * TEMPO);  // a zahrame ho&lt;br /&gt;
 }&lt;br /&gt;
                 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // melodiu zahrame priamo vo funkcii setup, aby sa po resete zahrala iba raz a nehrala stale dookola&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aká je to pesnička? Kto naprogramuje vianočnú melódiu? :-)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;a3&amp;quot; style=&amp;quot;background-color:#FFFADA;&amp;quot;&amp;gt;&lt;br /&gt;
Odpoveď Sama: Pesnička je to &amp;quot;jedna druhej riekla keď koláče atď.&amp;quot; a pesničku by som naprogramoval aj ja.&lt;br /&gt;
&lt;br /&gt;
A potom pridal túto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;E&#039;, &#039;~&#039;, &#039;E&#039;, &#039;~&#039;, &#039;E&#039;, &#039;h&#039;, &#039;D&#039;, &#039;C&#039;, &#039;a&#039;, &#039;c&#039;, &#039;e&#039;, &#039;a&#039;, &lt;br /&gt;
                   &#039;h&#039;, &#039;e&#039;, &#039;^&#039;, &#039;h&#039;, &#039;C&#039;};&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 8, 8, 8, 8, 16, 8, 8, 8,&lt;br /&gt;
                     16, 8, 8, 8, 16}; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program svieti LEDkou rozličnou silou - pomocou znakov &#039;+&#039; a &#039;-&#039; prijatých cez sériový port sa sila svietenia dá zvýšiť alebo znížiť.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: led_plynulo.ino&lt;br /&gt;
// popis: cez seriovy port pouzivatel posiela znaky + a -, cim riadi &lt;br /&gt;
//        intenzitu svietenia zabudovanej LED (ktora v skutocnosti len&lt;br /&gt;
//        rozne dlho blika, ale to ludske oko nezachyti)&lt;br /&gt;
void setup() {  &lt;br /&gt;
  pinMode(13, OUTPUT);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println(&amp;quot;Som pripraveny.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int text;&lt;br /&gt;
int dlzka1 = 2000;&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    text = Serial.read();&lt;br /&gt;
    if ((text == &#039;+&#039;) &amp;amp;&amp;amp; (dlzka1 &amp;lt; 2000)) {&lt;br /&gt;
      dlzka1 = dlzka1 + 50;&lt;br /&gt;
      Serial.println(dlzka1);&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    if ((text == &#039;-&#039;) &amp;amp;&amp;amp; (dlzka1 &amp;gt; 0)) {&lt;br /&gt;
      dlzka1 = dlzka1 - 50;&lt;br /&gt;
      Serial.println(dlzka1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  int dlzka2 = 2000 - dlzka1;&lt;br /&gt;
  delayMicroseconds(dlzka1);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delayMicroseconds(dlzka2);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na precvičenie sme si napísali program, ktorý vypíše na sériový port čísla 0-1000 v dvojkovej sústave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: vypis_binarne.ino&lt;br /&gt;
 // popis: na seriovy port sa vypisu cisla 0-1000 v dvojkovej sustave&lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(115200);&lt;br /&gt;
   for (int cislo = 1; cislo &amp;lt; 1001; cislo ++) {&lt;br /&gt;
     Serial.print(cislo, BIN);  // druhy nepovinny argument urcuje sustavu v ktorej&lt;br /&gt;
     Serial.print(&amp;quot; = &amp;quot;);       //  sa cislo vypisuje, BIN znamena dvojkovu, HEX - sestnastkovu,&lt;br /&gt;
     Serial.println(cislo);     //  DEC - desiatkovu a OCT osmickovu&lt;br /&gt;
     Serial.println();&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // cisla vypiseme iba raz priamo vo funkcii &lt;br /&gt;
  // setup(), aby sa vypisali len raz&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SHARP IR senzor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:sharp_ir_sensor.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Ide o analógový senzor, to znamená, že na svojom výstupe nedáva iba hodnoty 0 (0 Voltov) alebo 1 (5 Voltov), ale ľubovolnú hodnotu napätia medzi 0 a 5V. Arduino (teda jednočipový mikropočítač ATmega328) má zabudovaný prevodník, ktorý dokáže analógový signál previesť na digitálny (na 10-bitovú hodnotu 0-1023). Začnime programom, ktorý iba vypisuje hodnoty analógového senzora (pripojili sme ho na vstup A5) na sériovom porte (aj so Samovými vylepšeniami):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: sharp_ir.ino&lt;br /&gt;
// zapojenie: A5 - pripojime signalny kablik zo SHARP IR senzora&lt;br /&gt;
// popis: na seriovom porte neustale vypisuje hodnotu precitanu&lt;br /&gt;
//        zo senzora a komentuje ju podla odhadovanej vzdialenosti&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int sila = 0;&lt;br /&gt;
void loop() {&lt;br /&gt;
  sila = analogRead(5);&lt;br /&gt;
  Serial.println(sila);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  if (sila &amp;gt; 250 &amp;amp;&amp;amp; sila &amp;lt;= 300) {&lt;br /&gt;
    Serial.println(&amp;quot;Pozor! Blizim sa k nejakemu predmetu!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (sila &amp;lt; 50) {&lt;br /&gt;
    Serial.println(&amp;quot;Pokoj, moj senzor nevidi takmer nic.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (sila &amp;gt; 300) {&lt;br /&gt;
    Serial.println(&amp;quot;Hej! Takmer som donho narazil!!!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pomocou nasledujúceho programu sa robot pohybuje vpred, až kým nepríde k prekážke, ktorú zameria analógovým senzorom SHARP 2Y0A21 na meranie vzdialenosti (pracuje na princípe infračerveného svetla). Pri prekážke sa otáča, až kým nie je voľná cesta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: prieskumnik.ino&lt;br /&gt;
// zapojenie: D9  - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
//            A5  - signalny kablik z sharp ir senzora&lt;br /&gt;
// popis: robot so senzorom umiestnenym vpredu sa pohybuje neustale&lt;br /&gt;
//        vpred, kym nepride k prekazke, kde zmeni smer a znovu pokracuje&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
int dialka = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vzad(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  dialka = analogRead(5);&lt;br /&gt;
  &lt;br /&gt;
  if (dialka &amp;lt; 300) {&lt;br /&gt;
    rovno(0);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    vlavo(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Senzor na čiaru pracuje veľmi podobne - tiež je to analógový senzor, ale nie je ešte celý, potrebuje ešte jeden rezistor veľkosti 10kOhm medzi červený a biely (niekedy je žltý) káblik. Presné zapojenie si požičiame zo [http://ap.urk.fei.stuba.sk/sensorwiki/index.php/Acrob008 stránky o robotovi Acrob]:&lt;br /&gt;
&lt;br /&gt;
[[Image:zapojenie_line_senzora.png|Zapojenie senzora na čiaru]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;a4&amp;quot; style=&amp;quot;background-color:#F8F8AA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Sledovanie čiary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Podľa obrázka sme pripojili dva svetelné senzory na piny A1 a A3. Najkôr by sme senzory chceli vyskúšať a zmerať, aké hodnoty z nich prichádzajú v rôznych situáciách - keď je senzor nad čiernou čiarou a keď je nad svetlou podložkou. Použijeme jednoduchý program, ktorý neustále číta hodnotu z analógového portu A1 a vypisuje ju na sériový port:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: zobraz_ciarovy.ino&lt;br /&gt;
// zapojenie: A1 - signalny pin svetelneho senzora &lt;br /&gt;
//                 (medzi VCC a signalnym pinom je 10k rezistor)&lt;br /&gt;
// popis: program neustale vypisuje hodnotu analogoveho signalu A1&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int svetlo = 0;&lt;br /&gt;
void loop() {&lt;br /&gt;
  svetlo = analogRead(1);&lt;br /&gt;
  Serial.println(svetlo);&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kým je senzor nad stolom, hodnota je okolo 50-60, ak je nad čiernou čiarou, hodnota je až okolo 800-900. Naším cieľom bude napísať program, pomocou ktorého sa robot bude pohybovať po čiare, ktorá je zakrivená rôznymi smermi.&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_jazdi_po_ciare.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
Ak máme dva senzory, postačia nám tri rôzne stavy:&lt;br /&gt;
* ľavý senzor vidí čiaru - to znamená, že robot je príliš vpravo a mal by sa začať otáčať vľavo&lt;br /&gt;
* pravý senzor vidí čiaru - vtedy je robot príliš vľavo, mal by otáčať vpravo.&lt;br /&gt;
* ani jeden senzor nevidí čiaru - to znamená, čiara by mala byť medzi dvoma senzormi, robot sa pohybuje vpred&lt;br /&gt;
&lt;br /&gt;
Využijeme teda príkaz podmienky - if ... else ...  ale potrebujeme rozlíšiť nielen dva, ale až tri prípady. Ako to dosiahneme?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (lavy_senzor_vidi_ciaru) &lt;br /&gt;
{&lt;br /&gt;
  pohybuj sa vlavo&lt;br /&gt;
}&lt;br /&gt;
else  // zostavajuce dva pripady)&lt;br /&gt;
{&lt;br /&gt;
  if (pravy_senzor_vidi_ciaru)&lt;br /&gt;
  {&lt;br /&gt;
     pohybuj sa vpravo&lt;br /&gt;
  }&lt;br /&gt;
  else   // posledny pripad, cize ani jeden senzor nevidel ciaru&lt;br /&gt;
  {&lt;br /&gt;
     pohybuj sa rovno&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžeme využiť funkcie vlavo(int ms), vpravo(int ms), rovno(int ms), ktoré riadia pohyb robota a ktoré sme naprogramovali minule. Tu je výsledný Samov program:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: sleduj_ciaru.ino&lt;br /&gt;
// zapojenie: D9 - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
//            A1 - analogovy svetelny senzor pravy&lt;br /&gt;
//            A3 - analogovy svetelny senzor lavy&lt;br /&gt;
// popis: sleduje ciaru pomocou dvoch senzorov - ciara sa neustale&lt;br /&gt;
//        nachadza medzi senzormi, ak niektory zo senzorov zosnima&lt;br /&gt;
//        ciaru, robot uhne tak, aby sa ciara dostala znovu medzi&lt;br /&gt;
//        senzory.  ak sa vam robot pohybuje opacnym smerom,&lt;br /&gt;
//        alebo zataca opacnym smerom, skuste vymenit motory,&lt;br /&gt;
//        alebo zamenit hodnoty 60 a 120 vo funkciach vlavo(), vpravo()&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
void loop() &lt;br /&gt;
{ &lt;br /&gt;
  int lavysenzor = analogRead(3);&lt;br /&gt;
  int pravysenzor = analogRead(1);  &lt;br /&gt;
  if (lavysenzor&amp;gt;500) {&lt;br /&gt;
    vlavo(175); &lt;br /&gt;
  }&lt;br /&gt;
  else if(pravysenzor&amp;gt;500) {&lt;br /&gt;
    vpravo(175);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    rovno(0);&lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Bgu9YC32A3Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doteraz náš robot komunikoval s okolím iba cez USB kábel, ktorý bol cez prevodník pripojený na jeho sériový port. V situáciách, keď sa robot pohybuje v nejakom prostredí a plní pritom svoju úlohu, pripojenie káblom môže byť nepraktické. Namiesto kábla môžeme využiť bezdrôtové spojenie cez BlueTooth, ktoré dokáže prenášať sériovú komunikáciu tiež. Použijeme BT modul s označením HC-05.&lt;br /&gt;
&lt;br /&gt;
[[Image:BT_HC_05.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Jedna nevýhoda modulu HC-05 je, že pracuje na logike s napätím 3.3 V a robot pracuje na logike 5 V. Preto signálne kábliky, cez ktoré sa prenášajú logické nuly a jednotky nemôžeme vždy priamo prepojiť. Presnejšie: v niektorých prípadoch výstupné signály na logike 3.3 V môžeme pripojiť do vstupných portov s 5 V logikou, lebo 3.3 V väčšinou stačí vybudiť aj 5 V logiku, našťastie v prípade obvodu ATmega328, ktorý je v Acrobovi stačí aj 3.3 V signál na vybudenie logickej 1, takže informácie prichádzajúce z PC cez BT do Acroba môžeme prepojiť priamo: pin Tx na HC-05 prepojíme s pinom D0 na Acrobovi (na ňom je pin RxD - vstupný signál serióvého portu). Opačným smerom to však nie je bezpečné, lebo 5V signál sa väčšinou do 3.3V logiky pripájať nesmie (pokiaľ to nie je zvlášť uvedené v dokumentácii - tzv. &amp;quot;5V tolerant pin&amp;quot; - to ale nie je prípad obvodu HC-05). V nasledujúcom príklade teda použijeme iba jednosmernú komunikáciu z PC do Acroba a Acrob nebude môcť do PC cez sériový port nič vypisovať. Aby to nebolo až také jednoduché, tak na module HC-05 je vyvedený pin EN (enable), ktorý však musíme nastaviť na logickú 1 (tých 3.3 V), aby bol modul aktivovaný a pracoval. 3.3 V si vyrobíme pomocou odporového deliča: ak dva rezistory zapojíme do série, tak sa napätie na tejto vetve obvodu rozdelí podľa pomeru odporov jednotlivých dvoch rezistorov. Použijeme rezistory 1kOhm a 2kOhm takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:odporovy_delic.png]]&lt;br /&gt;
&lt;br /&gt;
tým pádom získame napätie 3.33V, ktoré je už dostatočne blízko požadovaných 3.3V a pripojíme ho na pin EN. Nezabudneme pripojiť napájanie - 5V (VCC) na VCC modulu HC-05 a prepojiť zem (GND) Acroba a BT modulu.&lt;br /&gt;
&lt;br /&gt;
BT modul využijeme na naprogramovanie diaľkovo riadeného robota. Cez sériový port z programu Putty budeme znakmi riadiť smer pohybu robota - vľavo, vpravo, rovno, vzad, zastaviť stáť.&lt;br /&gt;
&lt;br /&gt;
[[Image:Samo_Acrob_a_BT.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Do funkcií vlavo(int ms) a vpravo(int ms) doplníme možnosť zadať čas 0 ms, ktorý zodpovedá neohraničenému pohybu (ako v LEGO MINDSTORMS - &amp;quot;unlimited&amp;quot;) tak ako to bolo vo funkciách rovno(int ms) a vzad(int ms). Modul HC-05 je z výroby nastavený na nízku komunikačnú rýchlosť 9600, aj keď v prípade potreby sa dá prestaviť na vyššiu (neskôr sa k tomu vrátime). Tu je výsledný program: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: riadenie_cez_bt.ino&lt;br /&gt;
// zapojenie: D0 - TxD pin BT modulu HC-05 (alebo HC-06)&lt;br /&gt;
//            D9 - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
// popis: program reaguje na znaky w,d,a,medzera prijate zo serioveho&lt;br /&gt;
//        portu - kam mozeme pripojit BT modul. Jednotlive znaky riadia &lt;br /&gt;
//        pohyb robota&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vzad(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
 if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    int text=Serial.read();&lt;br /&gt;
    if (text == &#039;w&#039;) {&lt;br /&gt;
      rovno(0);&lt;br /&gt;
    }&lt;br /&gt;
    else if(text == &#039;d&#039;) {&lt;br /&gt;
      vlavo(0);&lt;br /&gt;
    }&lt;br /&gt;
    else if(text == &#039;a&#039;) {&lt;br /&gt;
      vpravo(0);&lt;br /&gt;
    }&lt;br /&gt;
    else if(text == &#039; &#039;) {&lt;br /&gt;
      lavy.write(90);&lt;br /&gt;
      pravy.write(90);&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;rhMXHtkBNPM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokázali by sme urobiť program, ktorý by vedel prejsť bludiskom? :-)&lt;br /&gt;
Neskúsime sa zamyslieť nad robotom do kategórie Micromouse?&lt;br /&gt;
Najskôr sa naučíme pracovať s programom [http://www.openscad.org/ OpenSCAD] na vytváranie 3D modelov, ktoré sa dajú vytlačiť na 3D tlačiarni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;a5&amp;quot; style=&amp;quot;background-color:#FACACA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Využitie viacerých senzorov súčasne&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
v našich predchádzajúcich programoch sme využívali buď svetelné senzory na pohyb po čiare, alebo IR senzor na meranie vzdialenosti. V nasledujúcom programe to spojíme dokopy - robot sa má pohybovať po čiare iba dovtedy, kým má pred sebou voľno. Ak zachytí prekážku, má zastať a počkať, kým prekážka nezmizne. Potom má pokračovať v sledovaní čiary ďalej - až kým nepríde k ďalšej prekážke...&lt;br /&gt;
&lt;br /&gt;
Tu je výsledok, ktorý vytvoril Ružový Panter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;00YFTEe2P30&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: ciara_a_prekazka.ino&lt;br /&gt;
// zapojenie: D9 - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
//            A5 - sharp IR senzor&lt;br /&gt;
//            A1 - lavy svetelny senzor&lt;br /&gt;
//            A2 - pravy svetelny senzor&lt;br /&gt;
// popis: program sleduje ciaru, kym sa pred nim nenachadza prekazka&lt;br /&gt;
//        pred prekazkou zastane a zostane stat, kym prekazka nezmizne,&lt;br /&gt;
//        potom pokracuje v sledovani ciary dalej&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
int sila = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
void loop() &lt;br /&gt;
{ &lt;br /&gt;
  sila = analogRead(5);            // tu vidime, ze premenne mozu byt delkarovane&lt;br /&gt;
  int lavysenzor = analogRead(1);  // bud mimo funkcie - ako premenna sila, alebo&lt;br /&gt;
  int pravysenzor = analogRead(2); // priamo vo funkcii ako lavysenzor, pravysenzor &lt;br /&gt;
  if (lavysenzor&amp;gt;420) {            // v tom pripade su pouzitelne iba v tej funkcii&lt;br /&gt;
    vlavo(175); &lt;br /&gt;
  }&lt;br /&gt;
  else if(pravysenzor&amp;gt;350) {&lt;br /&gt;
    vpravo(175);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    rovno(0);&lt;br /&gt;
  }  &lt;br /&gt;
  while (sila &amp;gt; 300) {&lt;br /&gt;
     sila = analogRead(5);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovanie čiary pomocou dvoch svetelných senzorov je pomerne spoľahlivé, ale v prípade veľmi prudkých zákrut, alebo križovatiek sa situácia začína komplikovať. Viac informácie robot získa, ak namiesto dvoch senzorov použije väčší počet. Napríklad senzor [https://www.pololu.com/product/961 Pololu QTR-8RC] obsahuje 8 svetelných senzorov jeden vedľa druhého. Keďže len máloktoré jednočipové mikropočítače majú až tak veľa analógových vstupov, autori tohto senzoru vymysleli zaujímavý trik, ako poslať analógovú hodnotu cez digitálny pin. Senzor funguje takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:qtr_8rc.png|400px]]&lt;br /&gt;
&lt;br /&gt;
# príslušný digitálny pin (je ich spolu 8 lebo súčiastka má až 8 svetelných senzorov) najskôr prepneme do režimu výstupu (pinMode(X, OUTPUT)) a zapíšeme naň logickú jednotku (digitalWrite(X, HIGH)&lt;br /&gt;
# počkáme aspoň 10 mikrosekúnd, aby sa senzor &amp;quot;nabil&amp;quot;&lt;br /&gt;
# prepneme digitálny pin na vstupný (pinMode(X, INPUT)) a začneme ho merať&lt;br /&gt;
# najskôr bude na pine logická 1, ale po nejakom čase &#039;&#039;t&#039;&#039; ju senzor prepne na logickú nulu&lt;br /&gt;
&lt;br /&gt;
Zmeraný čas &#039;&#039;t&#039;&#039; zodpovedá nameranej intenzite svetla odrazeného do senzora.&lt;br /&gt;
&lt;br /&gt;
Našou úlohou bude naprogramovať čítanie z tohto zaujímavého senzora - zatial nám bude stačiť jeden z 8 pinov, aby sme si overili, že čítanie funguje správne:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: citaj_jeden_qtr8rc.ino&lt;br /&gt;
// zapojenie: D3 - jeden z digitalnych pinov senzora QTR-8RC&lt;br /&gt;
// popis: program cita intenzitu odrazeneho svetla z jedneho pinu senzora QTR-8RC&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.setup(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  pinMode(3, INPUT);&lt;br /&gt;
  int cas = 0;&lt;br /&gt;
  while (digitalRead(3) == HIGH)&lt;br /&gt;
  {&lt;br /&gt;
    cas++;   // to je to iste ako: cas = cas + 1;&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(cas);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vedeli by sme napísať program, ktorý číta naraz zo všetkých 8 pinov senzora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Arduino&amp;diff=496</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Arduino&amp;diff=496"/>
		<updated>2017-01-31T14:25:24Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#FAFFDA;&amp;quot;&amp;gt;&lt;br /&gt;
Slovo Arduino označuje niekoľko vecí: &lt;br /&gt;
* je to počítač (malá doska plošného spoja osadená väčšinou jednočipovým mikropočítačom Atmel AVR ATMega328) &lt;br /&gt;
* je to programovací jazyk v ktorom sa tento počítač dá programovať&lt;br /&gt;
* je to program - programovacie vývojové prostredie, pomocou ktorého sa program zapisuje a zároveň cez USB kábel prenáša a spúšťa na Arduine&lt;br /&gt;
* sú to všetky tieto veci dokopy.&lt;br /&gt;
&lt;br /&gt;
Arduino sa vyrába v rozličných verziách.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_uno.jpg|Arduino Uno]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Uno - najrozšírenejší model Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_nano.jpg|Arduino Nano|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Nano - funguje rovnako ako Uno, ale je oveľa menšie - takéto budeme používať aj my&lt;br /&gt;
&lt;br /&gt;
[[Image:robot_acrob.jpg|Robot Acrob]]&amp;lt;br&amp;gt;&lt;br /&gt;
Robot Acrob - používa dosku, ktorá sa podobá na Arduino, ale funguje rovnako, mali sme ich požičané od združenia Robotika.SK na krúžku&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328.jpg|ATMega328|250px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Jednočipový mikropočítač ATMega328, ktorý je základom Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328_pinout.png|ATMega328 pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
Funkcie jednotlivých vývodov jednočipového mikropočítača ATMega328&lt;br /&gt;
&lt;br /&gt;
Podrobné informácie o jednočipovom mikropočítači ATMega328 sa dajú nájsť v jeho [[Media:atmega328datasheet.pdf|datasheete]].&lt;br /&gt;
&lt;br /&gt;
Každý počítač sa skladá z týchto základných častí:&lt;br /&gt;
&lt;br /&gt;
[[Image:pocitac.png|základná schéma počítača]]&lt;br /&gt;
&lt;br /&gt;
Pamäť uchováva všetky údaje (obrázky, zvuky, texty, čísla, a podobne) a programy, ktoré sa vykonávajú príkaz za príkazom v procesore. Pamäť s procesorom sú navzájom prepojené zbernicou, ktorá medzi nimi prenáša údaje. Aby s počítač mohol komunikovať so svojím okolím - napr. s človekom, alebo s vonkajšími pamäťami, na ktorých ukladá rozsiahle údaje (pevné disky, DVD, Internet), tak sú na zbernici pripojené aj vstupné a výstupné zariadenia.&lt;br /&gt;
&lt;br /&gt;
To znamená, programy pozostávajú z postupnosti príkazov:&lt;br /&gt;
&lt;br /&gt;
 príkaz1&lt;br /&gt;
 príkaz2&lt;br /&gt;
 ...&lt;br /&gt;
 príkazN&lt;br /&gt;
&lt;br /&gt;
V každom okamihu procesor naraz vykonáva iba jeden príkaz, postupne od začiatku programu do konca. V programoch sa môžu vyskytovať cykly:&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 opakuj:&lt;br /&gt;
   príkaz&lt;br /&gt;
   príkaz&lt;br /&gt;
 koniec cyklu&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
- ak treba nejakú skupinu príkazov niekoľkokrát zopakovať, alebo podmienky, ktoré dovoľujú vykonať rozličné skupiny príkazov, podľa toho, ktorá z nich je práve vhodná (väčšinou na základe otestovania nejakej podmienky):&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 platí podmienka?&lt;br /&gt;
 ak áno, vykonaj túto skupinu príkazov:&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 ak nie, vykonaj inú skupinu príkazov&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 a potom pokračuj v každom prípade ďalej:&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Arduino je teda počítač, ktorý má svoju pamäť, procesor a nahrávame do neho cez kábel program, ktorý najskôr naprogramujeme pomocou prostredia Arduino:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_program.png|program zapisovaný v prostredí Arduino|450px]].&lt;br /&gt;
&lt;br /&gt;
Nato, aby sme mohli pracovať s prostredím Arduino si ho potrebujeme downloadnut a nainštalovať zo stránky [http://arduino.cc arduino.cc] - nainštalujte si &amp;quot;Windows Installer&amp;quot; - to by malo nainštalovať aj ovládače (drivers).&lt;br /&gt;
&lt;br /&gt;
Program sa do Arduina nahráva cez prevodník USB-Serial (ktorý je v bežných arduinach už zabudovaný - ale Acroby ich potrebujú):&lt;br /&gt;
&lt;br /&gt;
[[Image:usb_serial.jpg|prevodník USB-Serial|300px]]&lt;br /&gt;
&lt;br /&gt;
Arduinové výstupy sú označené D0-D13 a A0-A5. Napájanie sa privádza na piny VCC a AVCC (+5V) a GND (zem, 0V). RXD, TXD označujú sériový port na komunikáciu s inými počítačmi alebo zariadeniami (napr. s PC), motory sa väčšinou pripájajú na piny D9 a D10.&lt;br /&gt;
&lt;br /&gt;
Na väčšine Arduin je pin D13 pripojený na zabudovanú svietivú diódu (LED). Prvý program, ktorý napíšeme túto LEDku rozbliká.&lt;br /&gt;
&lt;br /&gt;
Každý arduinový program obsahuje aspoň tieto dve funkcie:&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;
  // put your setup code here, to run once:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcia setup() sa spustí vždy po zapnutí počítača - hneď po spustení programu. Jej úlohou je ponastavovať všetky zariadenia, ktoré sú k Arduinu pripojené. Funkcia loop() sa spustí, keď setup() skončí a ak loop() skončí (čo nemusí...), tak sa spúšťa znovu a znovu, stále dookola.&lt;br /&gt;
&lt;br /&gt;
Pre rozblikanie LED musíme najskôr počítaču nastaviť pin D13 ako výstupný. Každý digitálny pin sa dá používať buď ako vstupný (vtedy Arduino z nožičky integrovaného obvodu vie prečítať, či tam je logická 0 (nulové napätie), alebo logická 1 (napätie 5V). Pin nemôže byť naraz aj vstupný aj výstupný, musíme sa rozhodnúť ako ho chceme používať a podľa toho ho vo fukcii setup() nastaviť. Robí sa to príkazom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  pinMode(číslo_pinu, režim); // pričom režim je buď INPUT, alebo OUTPUT  (je možná aj tretia možnosť, ale o tom až niekedy neskôr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keď je pin nastavený ako výstupný, tak vo funkcii loop() môžeme LED kedykoľvek zasvietiť zapísaním logickej jednotky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, HIGH);  // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 1)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podobne, LED zhasneme takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, LOW);   // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 0)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arduino však stihne za sekundu vykonať 16 miliónov inštrukcií (taktovacia frekvencia procesora je 16 MHz) a tak, aby sme si blikanie LED stihli všimnúť, musíme po každej zmene pinu nejaký čas počkať - na to slúži funkcia delay(čas_v_milisekundách). Celý program na blikanie LED teda vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: blikaj_ledkou.ino&lt;br /&gt;
 // popis: program blikne raz za sekundu zabudovanou LED &lt;br /&gt;
 void setup() {&lt;br /&gt;
  pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby sa nám Arduino programovalo jednoduchšie, ak ho máme pripojené káblom, môžeme z neho cez kábel (čiže cez sériový port) do PC poslať nejakú textovú správu:&lt;br /&gt;
&lt;br /&gt;
Vo funkcii setup() najskôr nastavíme rýchlosť prenosu (počet prenesených bitov za sekundu), napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a potom môžeme používať funkcie na vstup a výstup cez sériový port, napr. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Ahoj&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celý takýto text sa odvysiela cez jediný pin TXD mikropočítača ATMega328 (pozri obrázok hore). Ako sa to udeje?&lt;br /&gt;
Každý znak (písmeno, číslica, znamienko a pod.) má nejaký číselný kód - väčšinou sa na to používa medzinárodný štandard ASCII. Vidíme, že napríklad znak &#039;A&#039; má kód 65, znak &#039;o&#039; má kód 111, atď.&lt;br /&gt;
&lt;br /&gt;
[[Image:ascii-codes-table.png|ASCII tabuľka|300px]]&lt;br /&gt;
&lt;br /&gt;
Tieto kódy sú v Arduine uložené v dvojkovej sústave, tak ako všetky ostatné čísla! Počítače totiž všetky čísla ukladajú v dvojkovej sústave, keďže na to stačí, aby na príslušnom pine bolo kladné napätie (logická jednotka) alebo nulové napätie (logická nula).&lt;br /&gt;
&lt;br /&gt;
Ľudia na výpočty používajú desiatkovú sústavu, keďže majú 10 prstov, je im prirodzenejšia: obsahuje 10 číslic: 0, 1, 2, ..., 9.&lt;br /&gt;
Za poslednou číslicou nasleduje číslo 10 zložené z dvoch číslic, za posledným dvojciferným číslo 99 nasleduje číslo 100, atď. V čísle, ktoré má viac číslic stojí každá číslica na nejakom mieste, napr. v čísle 2016: je číslica 6 na mieste jednotiek (má hodnotu 6 x 1), číslica 1 na mieste desiatok (má hodnotu 1 x 10), číslica 0 na mieste stoviek (hodnota 0 x 100) a číslica 2 na mieste tisícok (hodnota 2 x 1000). Podobne to funguje aj v dvojkovej sústave, ale namiesto 10 číslic máme k dispozícii iba číslice dve: 0 a 1. Čísla tam nasledujú za sebou takto:&lt;br /&gt;
&lt;br /&gt;
     0      - zodpovedá 0 v desiatkovej sústave)&lt;br /&gt;
     1      - 1&lt;br /&gt;
    10      - 2&lt;br /&gt;
    11      - 3&lt;br /&gt;
   100      - 4&lt;br /&gt;
   101      - 5&lt;br /&gt;
   110      - 6&lt;br /&gt;
   111      - 7&lt;br /&gt;
  1000      - 8&lt;br /&gt;
  1001      - 9&lt;br /&gt;
  1010      - 10&lt;br /&gt;
  1011      - 11&lt;br /&gt;
  1100      - 12&lt;br /&gt;
  1101      - 13&lt;br /&gt;
  1110      - 14&lt;br /&gt;
  1111      - 15&lt;br /&gt;
 10000      - 16&lt;br /&gt;
 10001      - 17&lt;br /&gt;
  atď.&lt;br /&gt;
&lt;br /&gt;
ľahko si všimneme, že aj tu majú číslice svoje &amp;quot;rády&amp;quot;, napr. v čísle 10110 (čiže 22 v desiatkovej sústave) máme:&lt;br /&gt;
  0 - rád jednotiek &lt;br /&gt;
  1 - rád dvojek (1 x 2) &lt;br /&gt;
  1 - rád štvoriek (1 x 4)&lt;br /&gt;
  0 - rád osmičiek&lt;br /&gt;
  1 - ráď šestnástok (1 x 16)&lt;br /&gt;
&lt;br /&gt;
 1 x 2 + 1 x 4 + 1 x 16 = 22&lt;br /&gt;
&lt;br /&gt;
Takže na odvysielanie čísla 8-bitového čísla 65 cez pin TXD sa tam postupne odvysielajú číslice 01000001 - a pri rýchlosti 115200 číslic za sekundu tam každá bude iba 1/115200 s, čo je približne 8,68 mikrosekúnd.&lt;br /&gt;
 &lt;br /&gt;
Predchádzajúci program upravme tak, aby okrem blikania LEDkou aj vypisoval texty ON a OFF:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: blikaj_a_vypisuj.ino&lt;br /&gt;
 // popis: program blikne raz za sekundu zabudovanou LED&lt;br /&gt;
 //        a pritom cez seriovy port vypisuje textovu spravu&lt;br /&gt;
 void setup() {&lt;br /&gt;
  pinMode(13, OUTPUT);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  Serial.println(&amp;quot;ON&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  Serial.println(&amp;quot;OFF&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dobrý robot by ale iba s výstupmi nevystačil, musí nejakým spôsobom získavať informácie z prostredia - pomocou senzorov, ktoré tvoria jeho vstupné zariadenia. Napríklad ak nárazník narazí do prekážky, stlačí sa mikrospínač a hodnota na výstupe z vypínača sa zmení z logickej nuly na logickú jednotku. Potrebujeme napísať program, ktorý hodnotu na svojom pine dokáže prečítať.&lt;br /&gt;
&lt;br /&gt;
Pin 2 nastavíme na vstupný:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 pinMode(2, INPUT);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a funkcia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 digitalRead(2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nám vráti buď 0 alebo 1 - podľa toho, či je na pine 2 logická nula, alebo jednotka. Túto hodnotu môžeme použiť napríklad v podmienke, ktorá sa v jazyku C++ (na ktorom je Arduino založené) používa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 if (podmienka) {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak je podmienka splnená&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak podmienka nie je splnená, čiže neplatí&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
časť else je nepovinná - môže a nemusí tam byť. V našom prípade môžeme program naprogramovať tak, že pri stlačení tlačidla LED zasvieti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: zasviet_pri_stlaceni.ino&lt;br /&gt;
 // zapojenie: D0 - zem cez rezistor a zaroven:&lt;br /&gt;
 //            D0 - na mikrospinac za ktorym je VCC&lt;br /&gt;
 // popis: pri stlaceni mirkospinaca sa rozsvieti zabudovana LED&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(2,INPUT);&lt;br /&gt;
   pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   if (digitalRead(2)) {&lt;br /&gt;
     digitalWrite(13, HIGH);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
     digitalWrite(13,LOW);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako to zapojiť?&lt;br /&gt;
&lt;br /&gt;
Mikrospínač, ktorý je v stavebnici Acroba funguje tak, že bez stlačenia sú prepojené len kontakty cez dlhšie strany obdĺžnika a po stlačení sú prepojené všetky 4 kontakty. &lt;br /&gt;
&lt;br /&gt;
[[Image:microswitch.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Preto do pinu D2 pripojíme jeden výstup z tlačidla. Druhý výstup tlačidla spojíme s napájaním (VCC), ktoré má hodnotu napätia ako logická 1. Tým zabezpečíme, že pri stlačení tlačidla bude na D2 logická jednotka. Lenže, ak tlačidlo nestlačíme - logická nula tam nebude, bude tam len pripojený &amp;quot;vo vzduchu visiaci&amp;quot; káblik a to nie je dobre. Preto ho treba prepojiť so zemou. Ale pozor - ak by sme ho so zemou prepojili len tak - priamo, tak by sme pri stlačení tlačidla spôsobili skrat - priamymi vodičmi by bolo spojené VCC (plus na baterke) so zemou (mínus na baterke) a takúto situáciu nesmieme dopustiť ani na krátky okamih. Preto pin D2 spojíme so zemou cez rezistor s dostatočne veľkým odporom, napr. 2 kOhm:&lt;br /&gt;
&lt;br /&gt;
[[Image:schema_tlacidlo.png|zapojenie s mikroswitchom]]&lt;br /&gt;
&lt;br /&gt;
Robot Acrob je poháňaný dvoma servomotormi. Servomotor je zaujímavá súčiastka - je to motor s prevodovkou a riadiacou elektronikou. Vnútri vyzerá nejak takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:servo_motor.jpg|vnútornosti servomotorov]]&lt;br /&gt;
&lt;br /&gt;
používajú sa väčšinou v robotických ramenách, pričom sa môžu otáčať v rozsahu 0-180 stupňov (90 je stredná poloha). Viac otočiť im nedovolí zabudovaná zarážka. Potenciometer je v skutočnosti rezistor s premenlivou hodnotou a používa sa ako spätná väzba, ktorá riadiacu elektroniku serva informuje o tom, ako je práve servo otočené. Cez signálny káblik (biely, alebo žltý) elektronika dostáva pokyn z počítača (napr. z Arduina), do akej polohy sa má servo nastaviť. Elektronika porovná aktuálnu hodnotu s požadovanou a podľa toho rozbehne motor správnym smerom a vhodnou rýchlosťou.&lt;br /&gt;
&lt;br /&gt;
Servá, ktoré sú zabudované do Acrobov, sú tzv. modifikované servá - zarážka, ktorá bráni súvislému otáčaniu je odstránená a potenciometer je nahradený rezistorom so zafixovanou - pevnou hodnotou. Elektronika serva si preto &amp;quot;myslí&amp;quot;, že servo je stále v strede (na hodnote 90) a pri pokyne nastavenia do polohy napr. 120 sa roztočí jedným smerom a bude sa tak točiť donekonečna. Pri pokyne napr. 30 sa bude točiť donekonečna opačným smerom. Pri požadovenej polohe 90 sa zastaví a pri polohách blízko 90 sa bude otáčať iba pomaly, pretože už je skoro &amp;quot;v cieli&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ako servo riadiť - ako mu vysvetliť, že sa má nastaviť do požadovanej polohy napr. 30 stupňov?&lt;br /&gt;
&lt;br /&gt;
Riadiaci signál do serva (biely alebo žltý káblik) by mal každých 20 ms obsahovať pulz (logickú jednotku na krátky okamih). Dĺžka tohto okamihu určuje do akej polohy sa servo má nastaviť. Typicky to býva od 0.5 - 1.5 ms. Nasledujúci program teda roztočí servo jedným smerom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: pohni_servom.ino&lt;br /&gt;
 // zapojenie: D10 - riadiaci signal pre servo (modifikovane)&lt;br /&gt;
 // popis: program toci modifikovanym servomotorom, &lt;br /&gt;
 //        alebo sa bezne servo posunie do svojej krajnej polohy&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(10, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(10, LOW);&lt;br /&gt;
   delay(20);&lt;br /&gt;
   digitalWrite(10, HIGH);&lt;br /&gt;
   delayMicroseconds(500);&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program vyšle na pin D10 krátky pulz 0.5 ms každých 20 ms. Toľko teória. Arduino je však vymyslené tak, aby sme sa nemuseli starať o každý bit sami a stačí použiť knižnicu Servo, ktorá sa o generovanie riadiaceho signálu stará sama v spolupráci so zabudovanými časovačmi počítača. Program, ktorý pohne robotom teda vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: ukazka_pohybu.ino&lt;br /&gt;
 // zapojenie: D9 - riadiaci signal pre lave servo&lt;br /&gt;
 //            D10 - riadiaci signal pre prave servo&lt;br /&gt;
 // popis: robot do nekonecna opakuje pohyb vpred a zastavenie&lt;br /&gt;
 #include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Servo lavy, pravy; &lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   lavy.attach(9);  // lave servo je na pine 9&lt;br /&gt;
   pravy.attach(10);  // prave servo je na pine 10&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // rozbehni sa&lt;br /&gt;
   lavy.write(120);&lt;br /&gt;
   pravy.write(30);&lt;br /&gt;
   // tri sekundy bez&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   // zastan&lt;br /&gt;
   lavy.write(90);&lt;br /&gt;
   pravy.write(90);&lt;br /&gt;
   // tri sekundy cakaj&lt;br /&gt;
   delay(3000);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;height: 1px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;a2&amp;quot; style=&amp;quot;background-color:#EAFFF3;&amp;quot;&amp;gt;&lt;br /&gt;
K Acrobu môžeme pripojiť malú sirénku, ktorá funguje ako reproduktor:&lt;br /&gt;
&lt;br /&gt;
[[Image:piezo.png|malá signálna siréna]]&lt;br /&gt;
&lt;br /&gt;
Sirénku si môžeme predstaviť ako taký malý reproduktor. Reproduktor vytvára zvuk tak, že po dvoch drôtoch doň prichádza premenlivé napätie pripojené na jeho cievku elektromagnetu. Elektromagnet je pevne spojený s kuželovitou kmitajúcou membránou a vytvorené magnetické pole ho striedavo priťahuje a odpudzuje k pevému magnetu, ktorý je tiež súčasťou reproduktora. &lt;br /&gt;
&lt;br /&gt;
[[Image:how_speakers_work.png|čo sú reproduktory?]]&lt;br /&gt;
&lt;br /&gt;
Membrána reproduktora naráža na častice vzduchu, rozkmitá ich a zvuk sa v prostredí šíri ako pozdĺžne kmitajúca vlna mechanického vlnenia ďalej. Na vytvorenie čistého zvuku by sme mali napätie privádzané do reproduktora meniť plynule&lt;br /&gt;
&lt;br /&gt;
[[Image:sinusoida.png|plynule sa meniace napätie]]&lt;br /&gt;
&lt;br /&gt;
ale pri využití digitálnej elektroniky, ktoré vie na výstupe generovať iba 0 a 1 si to môžeme zjednodušiť a pomocou pravidelného striedania digitálneho signálu medzi 0 a 1 môžeme vydať počuteľný tón. Dôležité je hlavne to, aby frekvencia kmitania sedela s frekvenciou požadovaného tónu. &lt;br /&gt;
&lt;br /&gt;
[[Image:hranaty_signal.png|digitálna aproximácia sinusoidy]]&lt;br /&gt;
&lt;br /&gt;
Treba dať pozor na pripojenie - jedna strana sirénky je ozačená ako &amp;quot;+&amp;quot; - tú môžeme pripojiť priamo na niektorý digitálny výstupný pin a riadiť ho rovnako ako pri blikaní LEDkou, len trochu rýchlejšie, druhú stranu sirénky pripojíme priamo na zem.&lt;br /&gt;
&lt;br /&gt;
Hudobné tóny rozličných výšok sa líšia svojimi frekvenciami. Tón s veľkou frekvenciou (za sekundu membrána kmitne veľakrát) je vysoký tón, naopak tón s nízkou frekvenciou kmitania membrány je nízky tón. Človek typicky počuje frekvencie okolo 20-15000 Hz. Nasledujúci program teda vydá tón malé &#039;A&#039;, ktorý má frekvenciu 440 Hz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: zajraj_a.ino&lt;br /&gt;
 // zapojenie: D11 - plus pin sirenky (jej minus ide na zem)&lt;br /&gt;
 // popis: suvisle pipa frekvenciou 440 Hz (ton male A)&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11,OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(11, HIGH);&lt;br /&gt;
   delayMicroseconds(1136);     // 1136 usec je dlzka trvania jednej pol-periody&lt;br /&gt;
   digitalWrite(11,LOW);        // ak kmitame 440-krat za sekundu, tak dlzka jedneho&lt;br /&gt;
   delayMicroseconds(1136);     // kmitnutia je 1/440 s, co je 0.0022727 s, polovica&lt;br /&gt;
 }                              // z toho je 0.0011363 s = 1.1363 ms = 1136.3 usec&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak chceme, aby robot zahral nejakú zaujímavejšiu pesničku, tak by sa nám hodila funkcia, ktorá vie zahrať tón s ľubovoľnou frekvenciou a bolo by fajn, keby sme tej funkcii vedeli povedať ako dlho ten tón znie. Funkcia? a to je čo? Funkciu si môžeme predstaviť ako &amp;quot;vlastný blok&amp;quot; v programovacom jazyku pre LEGO MINDSTORMS. Je to kus programu, ktorý môžeme vyvolať opakovane z rôznych miest nášho programu - a môžeme mu zadať nejaké parametre, ktoré určujú, čo presne má urobiť. Každý náš arduinovský program už pozostával z dvoch funkcií - setup() a loop(). Takýchto funkcií môžeme pridať koľko chceme a vyvolať ich z hociktorého miesta programu. Funkcii môžeme predpísať ľubovoľný počet parametrov - každý z nich musí mať stanovený &amp;quot;typ&amp;quot; - čiže napr. či je to číslo, logická hodnota, znak, alebo reťazec znakov. Napríklad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void scitaj(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(&amp;quot;Sucet je: &amp;quot;);&lt;br /&gt;
   Serial.println(a + b);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
je funkcia, ktorá dostane dva parametre a, b, a cez sériový port vypíše text &amp;quot;Sucet je XY&amp;quot;, kde XY bude skutočný súčet hodnôt a, b. Takúto funkciu môžeme z programu vyvolať napr. takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 scitaj(3, 4);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ale za parametre môžeme dosadiť aj hodnoty z premenných, napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int premenna = 12;&lt;br /&gt;
 int ina_premenna;&lt;br /&gt;
  &lt;br /&gt;
 ina_premenna = 10;&lt;br /&gt;
 &lt;br /&gt;
 scitaj(premenna, ina_premenna);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takže teraz napíšme funkciu, ktorá bude zadanou frekvenciou (určenou v Hz) kmitať stanovenú dobu (určenú v ms). Namiesto typu int použijeme typ long, lebo do premenných typu long sa vojdú oveľa väčšie čísla - čo potrebujeme, lebo budeme počítať v mikrosekundách (miliontinách sekundy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // f - frekvencia v Hz, d - dlzka trvania tonu v ms&lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long t = 500000 / f;     // ako dlho trva polovica jednej periody tonu s frekvenciou f? &lt;br /&gt;
   long p = d * f / 1000;   // kolko celych period sa vojde do casoveho useku dlzky d?&lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++) &lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(t);  // namiesto 1136 usec ako v pripade tonu s frekvenciou 440 Hz &lt;br /&gt;
     digitalWrite(11,LOW);  // budeme cakat t usec, ktore sme vypocitali z frekvencie f&lt;br /&gt;
     delayMicroseconds(t);  //  1 / f - v sekundach, takze este krat milion (na mikrosekundy) a deleno 2&lt;br /&gt;
   }                        // co je to iste ako 500000 / f&lt;br /&gt;
   delay(50);  // na konci kratka prestavka, aby boli tony zretelne oddelene a nezlievali sa&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tomto programe sú dva zaujímavé výpočty. Prvý z nich využíva fakt, že vzťah medzi frekvenciou a periódou je T = 1 / f a zároveň f = 1 / T. V prvom riadku funkcie teda vypočítame koľko mikrosekúnd trvá polovica periódy, ak sa má za jednu sekundu zopakovať f kmitnutí signálu nahor a nadol.&lt;br /&gt;
Druhý výpočet slúži na to, aby sme vedeli koľkokrát sa má kmitnutie nahor a nadol zopakovať (to je tá podmienka i &amp;lt; p v cykle for). Zistíme to tak, že vynásobíme dĺžku trvania tónu (d) frekvenciou (f). Napríklad ak kmitáme frekvenciou 440 Hz a tón má znieť 1 sekundu, tak potrebujeme kmitnúť 1 * 440 = 440-krát. Alebo ak má tón znieť 2 sekundy, tak potrebujeme kmitnúť 2 * 440 = 880-krát. Ak by mal znieť iba pol sekundy, tak by to bolo 0,5 * 440 = 220-krát. Lenže dĺžka trvania tónu (d) je zadaná v milisekundách, takže aby sme dostali správny výsledok, musíme ho ešte vydeliť 1000 (čím ako keby prevedieme hodnotu d na milisekundy). Cyklus for, ktorý sme použili je najbežnejšie používaný cyklus, pomocou ktorého môžeme nejakú skupinu príkazov uzavretú v zložených zátvorkách zopakovať viackrát. Zapisuje sa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 for (príkaz_ktory_sa_vykona_na_zaciatku; podmienka_opakovania; prikaz_ktory_sa_vykona_po_kazdom_opakovani)&lt;br /&gt;
 {&lt;br /&gt;
   //...prikazy...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Prikaz for teda vŽdy vykoná najskôr svoj prvý príkaz za zátvorkou - v našom prípade vytvorí premennú typu int a nastaví ju na hodnotu 0. Potom skontroluje, či platí podmienka opakovania - v našom prípade, či počet opakovaní (premenná i) je stále menší ako stanovený počet opakovaní (premenná p) - ak áno, prvýkrát vykoná príkazy v tele cyklu (medzi zloženými zátvorkami). Potom nasleduje príkaz, ktorý sa vykoná po každom opakovaní cyklu - posledný výraz v okrúhlych zátvorkách za slovíčkom for - v našom prípade &amp;quot;i++&amp;quot;, čo znamená zvýšiť premennú i o jedna a následne sa zasa skontroluje, či stále platí podmienka opakovania. Ak nie, cyklus skončil a program pokračuje ďalším príkazom za telom cyklu. Ak je podmienka stále splnená, znovu sa vykonajú príkazy v tele cyklu, príkaz po každom opakovaní a zasa sa otestuje podmienka - a takto až dovtedy, kým podmienka prestane byť splnená (čo v krajnom prípade nemusí byť nikdy - v takom prípade cyklus nikdy neskončí).&lt;br /&gt;
&lt;br /&gt;
Keď máme funkciu hotovú, môžeme ju využiť na to, aby robot zahral známu melódiu Kohútik jarabí :-)  C-D-E-F-F-F-F-E-D-E-E-E-E-D-C-D-D-D-D-E-D-C-C-C s dĺžkami nôt 1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1, kde 1 je polová a 2 je celá nota (polová má polovičnú dobu trvania):&lt;br /&gt;
&lt;br /&gt;
Aby to bolo zaujímavejšie na digitálne výstupy D0, D1, D2, D3 môžeme zapojiť rozličné LEDky a spolu s jednotlivými tónmi C,D,E,F zapínať jednotlivé LED - získame takto farebnú hudbu :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_farebna_hudba.jpg|farebná hudba na robotovi Acrob]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: kohutik.ino&lt;br /&gt;
 // zapojenie: D11 - plus pin sirenky (minus ide na zem)&lt;br /&gt;
 // popis: zahra melodiu pesnicky Kohutik jarabi&lt;br /&gt;
 void ton(long frekvencia, long trvanie)&lt;br /&gt;
 {&lt;br /&gt;
   long p = trvanie * frekvencia / 1000L;   // L na konci cisla zdoraznuje&lt;br /&gt;
   long polPeriody = 500000L / frekvencia;  // ze ide o konstantu typu long, nemusi tam byt&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
    pinMode(11, OUTPUT);  // pipac&lt;br /&gt;
    &lt;br /&gt;
    pinMode(0, OUTPUT);   // farebna hudba - 4 LED&lt;br /&gt;
    pinMode(1, OUTPUT);&lt;br /&gt;
    pinMode(2, OUTPUT);&lt;br /&gt;
    pinMode(3, OUTPUT);   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // dostane cislo LED 1-4, tu zasvieti a ostatne zhasne&lt;br /&gt;
 void led(int ktora)&lt;br /&gt;
 {&lt;br /&gt;
   if (ktora == 1) digitalWrite(0, HIGH);&lt;br /&gt;
   else digitalWrite(0, LOW);&lt;br /&gt;
   if (ktora == 2) digitalWrite(1, HIGH);&lt;br /&gt;
   else digitalWrite(1, LOW);&lt;br /&gt;
   if (ktora == 3) digitalWrite(2, HIGH);&lt;br /&gt;
   else digitalWrite(2, LOW);&lt;br /&gt;
   if (ktora == 4) digitalWrite(3, HIGH);&lt;br /&gt;
   else digitalWrite(3, LOW);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // C: 262&lt;br /&gt;
 // D: 293&lt;br /&gt;
 // E: 330&lt;br /&gt;
 // F: 349&lt;br /&gt;
 void hrajC(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(1);&lt;br /&gt;
   ton(262, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajD(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(2);&lt;br /&gt;
   ton(293, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajE(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(3);&lt;br /&gt;
   ton(330, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajF(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(4);  &lt;br /&gt;
   ton(349, dlzka);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 { &lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajF(1000);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajC(500); &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môže byť? Neviem, asi by bolo ešte lepšie, ak by sme melódiu nemuseli zapisovať takýmto spôsobom. Jednak tu máme iba funkcie na 4 tóny a na klavíri býva aj viac ako 80 klávesov a tak vytvárať funkciu pre každý tón nebude veľmi praktické. Skúsme to ešte trochu lepšie - použijeme pole. &lt;br /&gt;
&lt;br /&gt;
Využijeme pole na to, aby sme si uložili frekvencie všetkých tónov, ktoré bude náš muzikantský program poznať. Pole je taká premenná, do ktorej sa dá uložiť viacero hodnôt naraz, nielen jedna. Napríklad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[3];  // premenna a schovava tri cele cisla&lt;br /&gt;
 &lt;br /&gt;
 a[0] = 10; // prve z nich nech je 10&lt;br /&gt;
 a[1] = 11; // do druheho vloz 11&lt;br /&gt;
 a[2] = 12; // a posledne nech obsahuje 12&lt;br /&gt;
 &lt;br /&gt;
 int b = a[0] + a[1] + a[2];  // vypocitaj sucet vsetkych troch hodnot a uloz ho do premennej b&lt;br /&gt;
 &lt;br /&gt;
 Serial.print(&amp;quot;Sucet je: &amp;quot;);  // vypis vysledok na seriovy port&lt;br /&gt;
 Serial.println(b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na prístup k jednotlivým hodnotám v poli môžeme použiť aj premennú (niekedy sa jej hovorí indexová, lebo poradie prvku, ku ktorému sa pristupuje sa volá index):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[10];&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)   &lt;br /&gt;
 {&lt;br /&gt;
   a[i] = 1 + i * 2;   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int sucet = 0;&lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(a[i]);&lt;br /&gt;
   if (i &amp;lt; 9) Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
   sucet = sucet + a[i];&lt;br /&gt;
 }&lt;br /&gt;
 Serial.print(&amp;quot;=&amp;quot;);&lt;br /&gt;
 Serial.println(sucet);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistite, čo presne urobí tento program?&lt;br /&gt;
&lt;br /&gt;
Tak teda naspäť k nášmu hodobníckemu programu. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: melodia.ino&lt;br /&gt;
 // zapojenie: D11 - plus pin sirenky (minus ide na zem)&lt;br /&gt;
 // popis: zahra melodiu zadanu v poliach melodiaT - tony&lt;br /&gt;
 //        a melodiaD - dlzky tonov&lt;br /&gt;
 &lt;br /&gt;
 #define TEMPO 24    // cim vyssia hodnota, tym pomalsie tempo&lt;br /&gt;
 &lt;br /&gt;
 // pocet not v melodii&lt;br /&gt;
 int dlzka = 25;  &lt;br /&gt;
 &lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &lt;br /&gt;
                   &#039;C&#039;, &#039;h&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;g&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;e&#039;, &#039;d&#039;, &#039;c&#039;, &#039;c&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 16, 16,&lt;br /&gt;
                     8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 16, 16}; &lt;br /&gt;
 &lt;br /&gt;
 // ake tony pozname - pouzili sme specialne znaky na oznacenie poltonov, zatial nam stacia 2 oktavy &lt;br /&gt;
 char tony[] = {&#039;c&#039;, &#039;#&#039;, &#039;d&#039;, &#039;%&#039;, &#039;e&#039;, &#039;f&#039;, &#039;$&#039;, &#039;g&#039;, &#039;^&#039;, &#039;a&#039;, &#039;*&#039;, &#039;h&#039;,&lt;br /&gt;
                &#039;C&#039;, &#039;!&#039;, &#039;D&#039;, &#039;~&#039;, &#039;E&#039;, &#039;F&#039;, &#039;+&#039;, &#039;G&#039;, &#039;-&#039;, &#039;A&#039;, &#039;/&#039;, &#039;H&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // hodnoty frekvencii tonov a poltonov sme si nasli na internete:&lt;br /&gt;
 // radkon.eu/projects/other/tones.html&lt;br /&gt;
 &lt;br /&gt;
 int frekvencie[] = {261, 277, 293, 311, 329, 349, 369, 391, 415, 440, 466, 493, 523, 554, 587, 622, 659, 698, 739, 783, 830, 880, 932, 987};&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11, OUTPUT);                    // sirenku pripojime na D11&lt;br /&gt;
   &lt;br /&gt;
   // raz zahraj celu melodiu&lt;br /&gt;
   for (int i = 0; i &amp;lt; dlzka; i++)&lt;br /&gt;
     hraj(melodiaT[i], melodiaD[i]);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long p = d * f / 1000L;&lt;br /&gt;
   long polPeriody = 500000L / f;&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hraj(char nota, int trvanie)&lt;br /&gt;
 {&lt;br /&gt;
  int kde = 0;&lt;br /&gt;
  while (tony[kde] != nota) kde++;  // najdeme index pozadovaneho tonu&lt;br /&gt;
  ton(frekvencie[kde], trvanie * TEMPO);  // a zahrame ho&lt;br /&gt;
 }&lt;br /&gt;
                 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // melodiu zahrame priamo vo funkcii setup, aby sa po resete zahrala iba raz a nehrala stale dookola&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aká je to pesnička? Kto naprogramuje vianočnú melódiu? :-)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;a3&amp;quot; style=&amp;quot;background-color:#FFFADA;&amp;quot;&amp;gt;&lt;br /&gt;
A potom pridal túto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;E&#039;, &#039;~&#039;, &#039;E&#039;, &#039;~&#039;, &#039;E&#039;, &#039;h&#039;, &#039;D&#039;, &#039;C&#039;, &#039;a&#039;, &#039;c&#039;, &#039;e&#039;, &#039;a&#039;, &lt;br /&gt;
                   &#039;h&#039;, &#039;e&#039;, &#039;^&#039;, &#039;h&#039;, &#039;C&#039;};&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 8, 8, 8, 8, 16, 8, 8, 8,&lt;br /&gt;
                     16, 8, 8, 8, 16}; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program svieti LEDkou rozličnou silou - pomocou znakov &#039;+&#039; a &#039;-&#039; prijatých cez sériový port sa sila svietenia dá zvýšiť alebo znížiť.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: led_plynulo.ino&lt;br /&gt;
// popis: cez seriovy port pouzivatel posiela znaky + a -, cim riadi &lt;br /&gt;
//        intenzitu svietenia zabudovanej LED (ktora v skutocnosti len&lt;br /&gt;
//        rozne dlho blika, ale to ludske oko nezachyti)&lt;br /&gt;
void setup() {  &lt;br /&gt;
  pinMode(13, OUTPUT);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println(&amp;quot;Som pripraveny.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int text;&lt;br /&gt;
int dlzka1 = 2000;&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    text = Serial.read();&lt;br /&gt;
    if ((text == &#039;+&#039;) &amp;amp;&amp;amp; (dlzka1 &amp;lt; 2000)) {&lt;br /&gt;
      dlzka1 = dlzka1 + 50;&lt;br /&gt;
      Serial.println(dlzka1);&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    if ((text == &#039;-&#039;) &amp;amp;&amp;amp; (dlzka1 &amp;gt; 0)) {&lt;br /&gt;
      dlzka1 = dlzka1 - 50;&lt;br /&gt;
      Serial.println(dlzka1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  int dlzka2 = 2000 - dlzka1;&lt;br /&gt;
  delayMicroseconds(dlzka1);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delayMicroseconds(dlzka2);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na precvičenie sme si napísali program, ktorý vypíše na sériový port čísla 0-1000 v dvojkovej sústave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // subor: vypis_binarne.ino&lt;br /&gt;
 // popis: na seriovy port sa vypisu cisla 0-1000 v dvojkovej sustave&lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(115200);&lt;br /&gt;
   for (int cislo = 1; cislo &amp;lt; 1001; cislo ++) {&lt;br /&gt;
     Serial.print(cislo, BIN);  // druhy nepovinny argument urcuje sustavu v ktorej&lt;br /&gt;
     Serial.print(&amp;quot; = &amp;quot;);       //  sa cislo vypisuje, BIN znamena dvojkovu, HEX - sestnastkovu,&lt;br /&gt;
     Serial.println(cislo);     //  DEC - desiatkovu a OCT osmickovu&lt;br /&gt;
     Serial.println();&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // cisla vypiseme iba raz priamo vo funkcii &lt;br /&gt;
  // setup(), aby sa vypisali len raz&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SHARP IR senzor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:sharp_ir_sensor.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Ide o analógový senzor, to znamená, že na svojom výstupe nedáva iba hodnoty 0 (0 Voltov) alebo 1 (5 Voltov), ale ľubovolnú hodnotu napätia medzi 0 a 5V. Arduino (teda jednočipový mikropočítač ATmega328) má zabudovaný prevodník, ktorý dokáže analógový signál previesť na digitálny (na 10-bitovú hodnotu 0-1023). Začnime programom, ktorý iba vypisuje hodnoty analógového senzora (pripojili sme ho na vstup A5) na sériovom porte (aj so Samovými vylepšeniami):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: sharp_ir.ino&lt;br /&gt;
// zapojenie: A5 - pripojime signalny kablik zo SHARP IR senzora&lt;br /&gt;
// popis: na seriovom porte neustale vypisuje hodnotu precitanu&lt;br /&gt;
//        zo senzora a komentuje ju podla odhadovanej vzdialenosti&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int sila = 0;&lt;br /&gt;
void loop() {&lt;br /&gt;
  sila = analogRead(5);&lt;br /&gt;
  Serial.println(sila);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  if (sila &amp;gt; 250 &amp;amp;&amp;amp; sila &amp;lt;= 300) {&lt;br /&gt;
    Serial.println(&amp;quot;Pozor! Blizim sa k nejakemu predmetu!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (sila &amp;lt; 50) {&lt;br /&gt;
    Serial.println(&amp;quot;Pokoj, moj senzor nevidi takmer nic.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (sila &amp;gt; 300) {&lt;br /&gt;
    Serial.println(&amp;quot;Hej! Takmer som donho narazil!!!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pomocou nasledujúceho programu sa robot pohybuje vpred, až kým nepríde k prekážke, ktorú zameria analógovým senzorom SHARP 2Y0A21 na meranie vzdialenosti (pracuje na princípe infračerveného svetla). Pri prekážke sa otáča, až kým nie je voľná cesta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: prieskumnik.ino&lt;br /&gt;
// zapojenie: D9  - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
//            A5  - signalny kablik z sharp ir senzora&lt;br /&gt;
// popis: robot so senzorom umiestnenym vpredu sa pohybuje neustale&lt;br /&gt;
//        vpred, kym nepride k prekazke, kde zmeni smer a znovu pokracuje&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
int dialka = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vzad(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  dialka = analogRead(5);&lt;br /&gt;
  &lt;br /&gt;
  if (dialka &amp;lt; 300) {&lt;br /&gt;
    rovno(0);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    vlavo(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Senzor na čiaru pracuje veľmi podobne - tiež je to analógový senzor, ale nie je ešte celý, potrebuje ešte jeden rezistor veľkosti 10kOhm medzi červený a biely (niekedy je žltý) káblik. Presné zapojenie si požičiame zo [http://ap.urk.fei.stuba.sk/sensorwiki/index.php/Acrob008 stránky o robotovi Acrob]:&lt;br /&gt;
&lt;br /&gt;
[[Image:zapojenie_line_senzora.png|Zapojenie senzora na čiaru]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;a4&amp;quot; style=&amp;quot;background-color:#F8F8AA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Sledovanie čiary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Podľa obrázka sme pripojili dva svetelné senzory na piny A1 a A3. Najkôr by sme senzory chceli vyskúšať a zmerať, aké hodnoty z nich prichádzajú v rôznych situáciách - keď je senzor nad čiernou čiarou a keď je nad svetlou podložkou. Použijeme jednoduchý program, ktorý neustále číta hodnotu z analógového portu A1 a vypisuje ju na sériový port:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: zobraz_ciarovy.ino&lt;br /&gt;
// zapojenie: A1 - signalny pin svetelneho senzora &lt;br /&gt;
//                 (medzi VCC a signalnym pinom je 10k rezistor)&lt;br /&gt;
// popis: program neustale vypisuje hodnotu analogoveho signalu A1&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int svetlo = 0;&lt;br /&gt;
void loop() {&lt;br /&gt;
  svetlo = analogRead(1);&lt;br /&gt;
  Serial.println(svetlo);&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistili sme, že kým je senzor nad stolom, hodnota je okolo 50-60, ak je nad čiernou čiarou, hodnota je až okolo 800-900. Naším cieľom bude napísať program, pomocou ktorého sa robot bude pohybovať po čiare, ktorá je zakrivená rôznymi smermi.&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_jazdi_po_ciare.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
Ak máme dva senzory, postačia nám tri rôzne stavy:&lt;br /&gt;
* ľavý senzor vidí čiaru - to znamená, že robot je príliš vpravo a mal by sa začať otáčať vľavo&lt;br /&gt;
* pravý senzor vidí čiaru - vtedy je robot príliš vľavo, mal by otáčať vpravo.&lt;br /&gt;
* ani jeden senzor nevidí čiaru - to znamená, čiara by mala byť medzi dvoma senzormi, robot sa pohybuje vpred&lt;br /&gt;
&lt;br /&gt;
Využijeme teda príkaz podmienky - if ... else ...  ale potrebujeme rozlíšiť nielen dva, ale až tri prípady. Ako to dosiahneme?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (lavy_senzor_vidi_ciaru) &lt;br /&gt;
{&lt;br /&gt;
  pohybuj sa vlavo&lt;br /&gt;
}&lt;br /&gt;
else  // zostavajuce dva pripady)&lt;br /&gt;
{&lt;br /&gt;
  if (pravy_senzor_vidi_ciaru)&lt;br /&gt;
  {&lt;br /&gt;
     pohybuj sa vpravo&lt;br /&gt;
  }&lt;br /&gt;
  else   // posledny pripad, cize ani jeden senzor nevidel ciaru&lt;br /&gt;
  {&lt;br /&gt;
     pohybuj sa rovno&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môžeme využiť funkcie vlavo(int ms), vpravo(int ms), rovno(int ms), ktoré riadia pohyb robota a ktoré sme naprogramovali minule. Tu je výsledný Samov program:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: sleduj_ciaru.ino&lt;br /&gt;
// zapojenie: D9 - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
//            A1 - analogovy svetelny senzor pravy&lt;br /&gt;
//            A3 - analogovy svetelny senzor lavy&lt;br /&gt;
// popis: sleduje ciaru pomocou dvoch senzorov - ciara sa neustale&lt;br /&gt;
//        nachadza medzi senzormi, ak niektory zo senzorov zosnima&lt;br /&gt;
//        ciaru, robot uhne tak, aby sa ciara dostala znovu medzi&lt;br /&gt;
//        senzory.  ak sa vam robot pohybuje opacnym smerom,&lt;br /&gt;
//        alebo zataca opacnym smerom, skuste vymenit motory,&lt;br /&gt;
//        alebo zamenit hodnoty 60 a 120 vo funkciach vlavo(), vpravo()&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
void loop() &lt;br /&gt;
{ &lt;br /&gt;
  int lavysenzor = analogRead(3);&lt;br /&gt;
  int pravysenzor = analogRead(1);  &lt;br /&gt;
  if (lavysenzor&amp;gt;500) {&lt;br /&gt;
    vlavo(175); &lt;br /&gt;
  }&lt;br /&gt;
  else if(pravysenzor&amp;gt;500) {&lt;br /&gt;
    vpravo(175);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    rovno(0);&lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Bgu9YC32A3Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doteraz náš robot komunikoval s okolím iba cez USB kábel, ktorý bol cez prevodník pripojený na jeho sériový port. V situáciách, keď sa robot pohybuje v nejakom prostredí a plní pritom svoju úlohu, pripojenie káblom môže byť nepraktické. Namiesto kábla môžeme využiť bezdrôtové spojenie cez BlueTooth, ktoré dokáže prenášať sériovú komunikáciu tiež. Použijeme BT modul s označením HC-05.&lt;br /&gt;
&lt;br /&gt;
[[Image:BT_HC_05.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Jedna nevýhoda modulu HC-05 je, že pracuje na logike s napätím 3.3 V a robot pracuje na logike 5 V. Preto signálne kábliky, cez ktoré sa prenášajú logické nuly a jednotky nemôžeme vždy priamo prepojiť. Presnejšie: v niektorých prípadoch výstupné signály na logike 3.3 V môžeme pripojiť do vstupných portov s 5 V logikou, lebo 3.3 V väčšinou stačí vybudiť aj 5 V logiku, našťastie v prípade obvodu ATmega328, ktorý je v Acrobovi stačí aj 3.3 V signál na vybudenie logickej 1, takže informácie prichádzajúce z PC cez BT do Acroba môžeme prepojiť priamo: pin Tx na HC-05 prepojíme s pinom D0 na Acrobovi (na ňom je pin RxD - vstupný signál serióvého portu). Opačným smerom to však nie je bezpečné, lebo 5V signál sa väčšinou do 3.3V logiky pripájať nesmie (pokiaľ to nie je zvlášť uvedené v dokumentácii - tzv. &amp;quot;5V tolerant pin&amp;quot; - to ale nie je prípad obvodu HC-05). V nasledujúcom príklade teda použijeme iba jednosmernú komunikáciu z PC do Acroba a Acrob nebude môcť do PC cez sériový port nič vypisovať. Aby to nebolo až také jednoduché, tak na module HC-05 je vyvedený pin EN (enable), ktorý však musíme nastaviť na logickú 1 (tých 3.3 V), aby bol modul aktivovaný a pracoval. 3.3 V si vyrobíme pomocou odporového deliča: ak dva rezistory zapojíme do série, tak sa napätie na tejto vetve obvodu rozdelí podľa pomeru odporov jednotlivých dvoch rezistorov. Použijeme rezistory 1kOhm a 2kOhm takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:odporovy_delic.png]]&lt;br /&gt;
&lt;br /&gt;
tým pádom získame napätie 3.33V, ktoré je už dostatočne blízko požadovaných 3.3V a pripojíme ho na pin EN. Nezabudneme pripojiť napájanie - 5V (VCC) na VCC modulu HC-05 a prepojiť zem (GND) Acroba a BT modulu.&lt;br /&gt;
&lt;br /&gt;
BT modul využijeme na naprogramovanie diaľkovo riadeného robota. Cez sériový port z programu Putty budeme znakmi riadiť smer pohybu robota - vľavo, vpravo, rovno, vzad, zastaviť stáť.&lt;br /&gt;
&lt;br /&gt;
[[Image:Samo_Acrob_a_BT.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Do funkcií vlavo(int ms) a vpravo(int ms) doplníme možnosť zadať čas 0 ms, ktorý zodpovedá neohraničenému pohybu (ako v LEGO MINDSTORMS - &amp;quot;unlimited&amp;quot;) tak ako to bolo vo funkciách rovno(int ms) a vzad(int ms). Modul HC-05 je z výroby nastavený na nízku komunikačnú rýchlosť 9600, aj keď v prípade potreby sa dá prestaviť na vyššiu (neskôr sa k tomu vrátime). Tu je výsledný program: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: riadenie_cez_bt.ino&lt;br /&gt;
// zapojenie: D0 - TxD pin BT modulu HC-05 (alebo HC-06)&lt;br /&gt;
//            D9 - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
// popis: program reaguje na znaky w,d,a,medzera prijate zo serioveho&lt;br /&gt;
//        portu - kam mozeme pripojit BT modul. Jednotlive znaky riadia &lt;br /&gt;
//        pohyb robota&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vzad(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
 if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    int text=Serial.read();&lt;br /&gt;
    if (text == &#039;w&#039;) {&lt;br /&gt;
      rovno(0);&lt;br /&gt;
    }&lt;br /&gt;
    else if(text == &#039;d&#039;) {&lt;br /&gt;
      vlavo(0);&lt;br /&gt;
    }&lt;br /&gt;
    else if(text == &#039;a&#039;) {&lt;br /&gt;
      vpravo(0);&lt;br /&gt;
    }&lt;br /&gt;
    else if(text == &#039; &#039;) {&lt;br /&gt;
      lavy.write(90);&lt;br /&gt;
      pravy.write(90);&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;rhMXHtkBNPM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokázali by sme urobiť program, ktorý by vedel prejsť bludiskom? :-)&lt;br /&gt;
Neskúsime sa zamyslieť nad robotom do kategórie Micromouse?&lt;br /&gt;
Najskôr sa naučíme pracovať s programom [http://www.openscad.org/ OpenSCAD] na vytváranie 3D modelov, ktoré sa dajú vytlačiť na 3D tlačiarni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;a5&amp;quot; style=&amp;quot;background-color:#FACACA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Využitie viacerých senzorov súčasne&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
v našich predchádzajúcich programoch sme využívali buď svetelné senzory na pohyb po čiare, alebo IR senzor na meranie vzdialenosti. V nasledujúcom programe to spojíme dokopy - robot sa má pohybovať po čiare iba dovtedy, kým má pred sebou voľno. Ak zachytí prekážku, má zastať a počkať, kým prekážka nezmizne. Potom má pokračovať v sledovaní čiary ďalej - až kým nepríde k ďalšej prekážke...&lt;br /&gt;
&lt;br /&gt;
Tu je výsledok, ktorý vytvoril Ružový Panter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;00YFTEe2P30&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: ciara_a_prekazka.ino&lt;br /&gt;
// zapojenie: D9 - lave servo&lt;br /&gt;
//            D10 - prave servo&lt;br /&gt;
//            A5 - sharp IR senzor&lt;br /&gt;
//            A1 - lavy svetelny senzor&lt;br /&gt;
//            A2 - pravy svetelny senzor&lt;br /&gt;
// popis: program sleduje ciaru, kym sa pred nim nenachadza prekazka&lt;br /&gt;
//        pred prekazkou zastane a zostane stat, kym prekazka nezmizne,&lt;br /&gt;
//        potom pokracuje v sledovani ciary dalej&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servo lavy;&lt;br /&gt;
Servo pravy;&lt;br /&gt;
int sila = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  lavy.attach(9);&lt;br /&gt;
  pravy.attach(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vpravo(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(60);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vlavo(int ms) {&lt;br /&gt;
  lavy.write(120);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  delay(ms);&lt;br /&gt;
  lavy.write(90);&lt;br /&gt;
  pravy.write(90);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rovno(int ms) {&lt;br /&gt;
  lavy.write(60);&lt;br /&gt;
  pravy.write(120);&lt;br /&gt;
  if (ms&amp;gt;0) {&lt;br /&gt;
    delay(ms);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
void loop() &lt;br /&gt;
{ &lt;br /&gt;
  sila = analogRead(5);            // tu vidime, ze premenne mozu byt delkarovane&lt;br /&gt;
  int lavysenzor = analogRead(1);  // bud mimo funkcie - ako premenna sila, alebo&lt;br /&gt;
  int pravysenzor = analogRead(2); // priamo vo funkcii ako lavysenzor, pravysenzor &lt;br /&gt;
  if (lavysenzor&amp;gt;420) {            // v tom pripade su pouzitelne iba v tej funkcii&lt;br /&gt;
    vlavo(175); &lt;br /&gt;
  }&lt;br /&gt;
  else if(pravysenzor&amp;gt;350) {&lt;br /&gt;
    vpravo(175);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    rovno(0);&lt;br /&gt;
  }  &lt;br /&gt;
  while (sila &amp;gt; 300) {&lt;br /&gt;
     sila = analogRead(5);&lt;br /&gt;
    lavy.write(90);&lt;br /&gt;
    pravy.write(90);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovanie čiary pomocou dvoch svetelných senzorov je pomerne spoľahlivé, ale v prípade veľmi prudkých zákrut, alebo križovatiek sa situácia začína komplikovať. Viac informácie robot získa, ak namiesto dvoch senzorov použije väčší počet. Napríklad senzor [https://www.pololu.com/product/961 Pololu QTR-8RC] obsahuje 8 svetelných senzorov jeden vedľa druhého. Keďže len máloktoré jednočipové mikropočítače majú až tak veľa analógových vstupov, autori tohto senzoru vymysleli zaujímavý trik, ako poslať analógovú hodnotu cez digitálny pin. Senzor funguje takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:qtr_8rc.png|400px]]&lt;br /&gt;
&lt;br /&gt;
# príslušný digitálny pin (je ich spolu 8 lebo súčiastka má až 8 svetelných senzorov) najskôr prepneme do režimu výstupu (pinMode(X, OUTPUT)) a zapíšeme naň logickú jednotku (digitalWrite(X, HIGH)&lt;br /&gt;
# počkáme aspoň 10 mikrosekúnd, aby sa senzor &amp;quot;nabil&amp;quot;&lt;br /&gt;
# prepneme digitálny pin na vstupný (pinMode(X, INPUT)) a začneme ho merať&lt;br /&gt;
# najskôr bude na pine logická 1, ale po nejakom čase &#039;&#039;t&#039;&#039; ju senzor prepne na logickú nulu&lt;br /&gt;
&lt;br /&gt;
Zmeraný čas &#039;&#039;t&#039;&#039; zodpovedá nameranej intenzite svetla odrazeného do senzora.&lt;br /&gt;
&lt;br /&gt;
Našou úlohou bude naprogramovať čítanie z tohto zaujímavého senzora - zatial nám bude stačiť jeden z 8 pinov, aby sme si overili, že čítanie funguje správne:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// subor: citaj_jeden_qtr8rc.ino&lt;br /&gt;
// zapojenie: D3 - jeden z digitalnych pinov senzora QTR-8RC&lt;br /&gt;
// popis: program cita intenzitu odrazeneho svetla z jedneho pinu senzora QTR-8RC&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.setup(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  pinMode(3, INPUT);&lt;br /&gt;
  int cas = 0;&lt;br /&gt;
  while (digitalRead(3) == HIGH)&lt;br /&gt;
  {&lt;br /&gt;
    cas++;   // to je to iste ako: cas = cas + 1;&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(cas);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vedeli by sme napísať program, ktorý číta naraz zo všetkých 8 pinov senzora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_janu%C3%A1r_2017&amp;diff=495</id>
		<title>Denníček - január 2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_janu%C3%A1r_2017&amp;diff=495"/>
		<updated>2017-01-31T14:10:06Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #EEFEFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;6.1. piatok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Roboty sa naučili spozorovať prekážku - pozri stránku [[arduino#a3]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #EEFEEE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;17.1. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Roboty sa naučili sledovať čiaru - pozri stránku [[arduino#a4]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FEFEEF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;19.1. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Navštívil nás nový nádejný člen krúžku.&lt;br /&gt;
Naučili sme sa snímať hodnotu z 8-kanálového senzora QTR-8RC, pozri stránku [[arduino#a5]].&lt;br /&gt;
&lt;br /&gt;
Matejove sledovanie ciary: [[Media:sledovanie_ciary.zip|sledovanie_ciary.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #EEEEFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;24.1. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Oliver Tiger dnes pochopil ako funguje odporový delič a pripojil si 3.3V BT modul na Acroba, zistil, čo je Putty a ako sa používajú funkcie Serial.available() a Serial.read(). Za domácu úlohu by mohol naprogramovať diaľkové riadenie robota cez BT.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Samuel Krotiteľ Hadov sa venoval tvorbe programu, ktorý bude čítať hodnoty zo všetkých 8 senzorov z QTR-8RC naraz a už sme boli blízko cieľa, nasleduje nedokončený program...&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;
{&lt;br /&gt;
  Serial.setup(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{ &lt;br /&gt;
  int cas[9];&lt;br /&gt;
  int kolki = 0;&lt;br /&gt;
  for (int m = 0;m &amp;lt;= 8;m++) {&lt;br /&gt;
    cas[m] = 0;&lt;br /&gt;
  }&lt;br /&gt;
  for(int i = 1;i&amp;lt;=8;i++) {&lt;br /&gt;
    pinMode(i, OUTPUT);&lt;br /&gt;
  }&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  for(int i = 1;i&amp;lt;=8;i++) {&lt;br /&gt;
    pinMode(3, INPUT);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  while (kolki &amp;lt; 8) {&lt;br /&gt;
    for (i = 1;i&amp;lt;=8;i++)&lt;br /&gt;
    if (digitalRead(i) == HIGH) {&lt;br /&gt;
      cas[i]++;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  for (int m = 1;m &amp;lt;= 8;m++); {&lt;br /&gt;
    Serial.print(cas[m]);&lt;br /&gt;
    Serial.print(&amp;quot; &amp;quot;);  &lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
keď na neho zaútočila potreba pripojiť sa ku gangu Ružového pantera a Raka, ktorí stavali LEGO roboty na pretláčanie sa. Celá skupina sa vzápätí nadchla pre riadenie robotov NXT cez BT a tu je prvý výsledok:&lt;br /&gt;
&lt;br /&gt;
Naučili sme sa používať bluetooth na nxt platformu: riadený robot - [[Media:posielaniesignalu.zip|posielaniesignalu.zip]] a riadiaca nxt kocka (diaľkové ovládanie) s dvoma touch senzormi: [[Media:robotvojna.zip|robotvojna.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Arduino&amp;diff=458</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Arduino&amp;diff=458"/>
		<updated>2017-01-06T15:30:14Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#FAFFDA;&amp;quot;&amp;gt;&lt;br /&gt;
Slovo Arduino označuje niekoľko vecí: &lt;br /&gt;
* je to počítač (malá doska plošného spoja osadená väčšinou jednočipovým mikropočítačom Atmel AVR ATMega328) &lt;br /&gt;
* je to programovací jazyk v ktorom sa tento počítač dá programovať&lt;br /&gt;
* je to program - programovacie vývojové prostredie, pomocou ktorého sa program zapisuje a zároveň cez USB kábel prenáša a spúšťa na Arduine&lt;br /&gt;
* sú to všetky tieto veci dokopy.&lt;br /&gt;
&lt;br /&gt;
Arduino sa vyrába v rozličných verziách.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_uno.jpg|Arduino Uno]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Uno - najrozšírenejší model Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_nano.jpg|Arduino Nano|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Nano - funguje rovnako ako Uno, ale je oveľa menšie - takéto budeme používať aj my&lt;br /&gt;
&lt;br /&gt;
[[Image:robot_acrob.jpg|Robot Acrob]]&amp;lt;br&amp;gt;&lt;br /&gt;
Robot Acrob - používa dosku, ktorá sa podobá na Arduino, ale funguje rovnako, mali sme ich požičané od združenia Robotika.SK na krúžku&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328.jpg|ATMega328|250px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Jednočipový mikropočítač ATMega328, ktorý je základom Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328_pinout.png|ATMega328 pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
Funkcie jednotlivých vývodov jednočipového mikropočítača ATMega328&lt;br /&gt;
&lt;br /&gt;
Podrobné informácie o jednočipovom mikropočítači ATMega328 sa dajú nájsť v jeho [[Media:atmega328datasheet.pdf|datasheete]].&lt;br /&gt;
&lt;br /&gt;
Každý počítač sa skladá z týchto základných častí:&lt;br /&gt;
&lt;br /&gt;
[[Image:pocitac.png|základná schéma počítača]]&lt;br /&gt;
&lt;br /&gt;
Pamäť uchováva všetky údaje (obrázky, zvuky, texty, čísla, a podobne) a programy, ktoré sa vykonávajú príkaz za príkazom v procesore. Pamäť s procesorom sú navzájom prepojené zbernicou, ktorá medzi nimi prenáša údaje. Aby s počítač mohol komunikovať so svojím okolím - napr. s človekom, alebo s vonkajšími pamäťami, na ktorých ukladá rozsiahle údaje (pevné disky, DVD, Internet), tak sú na zbernici pripojené aj vstupné a výstupné zariadenia.&lt;br /&gt;
&lt;br /&gt;
To znamená, programy pozostávajú z postupnosti príkazov:&lt;br /&gt;
&lt;br /&gt;
 príkaz1&lt;br /&gt;
 príkaz2&lt;br /&gt;
 ...&lt;br /&gt;
 príkazN&lt;br /&gt;
&lt;br /&gt;
V každom okamihu procesor naraz vykonáva iba jeden príkaz, postupne od začiatku programu do konca. V programoch sa môžu vyskytovať cykly:&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 opakuj:&lt;br /&gt;
   príkaz&lt;br /&gt;
   príkaz&lt;br /&gt;
 koniec cyklu&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
- ak treba nejakú skupinu príkazov niekoľkokrát zopakovať, alebo podmienky, ktoré dovoľujú vykonať rozličné skupiny príkazov, podľa toho, ktorá z nich je práve vhodná (väčšinou na základe otestovania nejakej podmienky):&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 platí podmienka?&lt;br /&gt;
 ak áno, vykonaj túto skupinu príkazov:&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 ak nie, vykonaj inú skupinu príkazov&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 a potom pokračuj v každom prípade ďalej:&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Arduino je teda počítač, ktorý má svoju pamäť, procesor a nahrávame do neho cez kábel program, ktorý najskôr naprogramujeme pomocou prostredia Arduino:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_program.png|program zapisovaný v prostredí Arduino|450px]].&lt;br /&gt;
&lt;br /&gt;
Nato, aby sme mohli pracovať s prostredím Arduino si ho potrebujeme downloadnut a nainštalovať zo stránky [http://arduino.cc arduino.cc] - nainštalujte si &amp;quot;Windows Installer&amp;quot; - to by malo nainštalovať aj ovládače (drivers).&lt;br /&gt;
&lt;br /&gt;
Program sa do Arduina nahráva cez prevodník USB-Serial (ktorý je v bežných arduinach už zabudovaný - ale Acroby ich potrebujú):&lt;br /&gt;
&lt;br /&gt;
[[Image:usb_serial.jpg|prevodník USB-Serial|300px]]&lt;br /&gt;
&lt;br /&gt;
Arduinové výstupy sú označené D0-D13 a A0-A5. Napájanie sa privádza na piny VCC a AVCC (+5V) a GND (zem, 0V). RXD, TXD označujú sériový port na komunikáciu s inými počítačmi alebo zariadeniami (napr. s PC), motory sa väčšinou pripájajú na piny D9 a D10.&lt;br /&gt;
&lt;br /&gt;
Na väčšine Arduin je pin D13 pripojený na zabudovanú svietivú diódu (LED). Prvý program, ktorý napíšeme túto LEDku rozbliká.&lt;br /&gt;
&lt;br /&gt;
Každý arduinový program obsahuje aspoň tieto dve funkcie:&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;
  // put your setup code here, to run once:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcia setup() sa spustí vždy po zapnutí počítača - hneď po spustení programu. Jej úlohou je ponastavovať všetky zariadenia, ktoré sú k Arduinu pripojené. Funkcia loop() sa spustí, keď setup() skončí a ak loop() skončí (čo nemusí...), tak sa spúšťa znovu a znovu, stále dookola.&lt;br /&gt;
&lt;br /&gt;
Pre rozblikanie LED musíme najskôr počítaču nastaviť pin D13 ako výstupný. Každý digitálny pin sa dá používať buď ako vstupný (vtedy Arduino z nožičky integrovaného obvodu vie prečítať, či tam je logická 0 (nulové napätie), alebo logická 1 (napätie 5V). Pin nemôže byť naraz aj vstupný aj výstupný, musíme sa rozhodnúť ako ho chceme používať a podľa toho ho vo fukcii setup() nastaviť. Robí sa to príkazom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  pinMode(číslo_pinu, režim); // pričom režim je buď INPUT, alebo OUTPUT  (je možná aj tretia možnosť, ale o tom až niekedy neskôr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keď je pin nastavený ako výstupný, tak vo funkcii loop() môžeme LED kedykoľvek zasvietiť zapísaním logickej jednotky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, HIGH);  // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 1)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podobne, LED zhasneme takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, LOW);   // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 0)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arduino však stihne za sekundu vykonať 16 miliónov inštrukcií (taktovacia frekvencia procesora je 16 MHz) a tak, aby sme si blikanie LED stihli všimnúť, musíme po každej zmene pinu nejaký čas počkať - na to slúži funkcia delay(čas_v_milisekundách). Celý program na blikanie LED teda vyzerá takto:&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);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby sa nám Arduino programovalo jednoduchšie, ak ho máme pripojené káblom, môžeme z neho cez kábel (čiže cez sériový port) do PC poslať nejakú textovú správu:&lt;br /&gt;
&lt;br /&gt;
Vo funkcii setup() najskôr nastavíme rýchlosť prenosu (počet prenesených bitov za sekundu), napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a potom môžeme používať funkcie na vstup a výstup cez sériový port, napr. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Ahoj&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celý takýto text sa odvysiela cez jediný pin TXD mikropočítača ATMega328 (pozri obrázok hore). Ako sa to udeje?&lt;br /&gt;
Každý znak (písmeno, číslica, znamienko a pod.) má nejaký číselný kód - väčšinou sa na to používa medzinárodný štandard ASCII. Vidíme, že napríklad znak &#039;A&#039; má kód 65, znak &#039;o&#039; má kód 111, atď.&lt;br /&gt;
&lt;br /&gt;
[[Image:ascii-codes-table.png|ASCII tabuľka|300px]]&lt;br /&gt;
&lt;br /&gt;
Tieto kódy sú v Arduine uložené v dvojkovej sústave, tak ako všetky ostatné čísla! Počítače totiž všetky čísla ukladajú v dvojkovej sústave, keďže na to stačí, aby na príslušnom pine bolo kladné napätie (logická jednotka) alebo nulové napätie (logická nula).&lt;br /&gt;
&lt;br /&gt;
Ľudia na výpočty používajú desiatkovú sústavu, keďže majú 10 prstov, je im prirodzenejšia: obsahuje 10 číslic: 0, 1, 2, ..., 9.&lt;br /&gt;
Za poslednou číslicou nasleduje číslo 10 zložené z dvoch číslic, za posledným dvojciferným číslo 99 nasleduje číslo 100, atď. V čísle, ktoré má viac číslic stojí každá číslica na nejakom mieste, napr. v čísle 2016: je číslica 6 na mieste jednotiek (má hodnotu 6 x 1), číslica 1 na mieste desiatok (má hodnotu 1 x 10), číslica 0 na mieste stoviek (hodnota 0 x 100) a číslica 2 na mieste tisícok (hodnota 2 x 1000). Podobne to funguje aj v dvojkovej sústave, ale namiesto 10 číslic máme k dispozícii iba číslice dve: 0 a 1. Čísla tam nasledujú za sebou takto:&lt;br /&gt;
&lt;br /&gt;
     0      - zodpovedá 0 v desiatkovej sústave)&lt;br /&gt;
     1      - 1&lt;br /&gt;
    10      - 2&lt;br /&gt;
    11      - 3&lt;br /&gt;
   100      - 4&lt;br /&gt;
   101      - 5&lt;br /&gt;
   110      - 6&lt;br /&gt;
   111      - 7&lt;br /&gt;
  1000      - 8&lt;br /&gt;
  1001      - 9&lt;br /&gt;
  1010      - 10&lt;br /&gt;
  1011      - 11&lt;br /&gt;
  1100      - 12&lt;br /&gt;
  1101      - 13&lt;br /&gt;
  1110      - 14&lt;br /&gt;
  1111      - 15&lt;br /&gt;
 10000      - 16&lt;br /&gt;
 10001      - 17&lt;br /&gt;
  atď.&lt;br /&gt;
&lt;br /&gt;
ľahko si všimneme, že aj tu majú číslice svoje &amp;quot;rády&amp;quot;, napr. v čísle 10110 (čiže 22 v desiatkovej sústave) máme:&lt;br /&gt;
  0 - rád jednotiek &lt;br /&gt;
  1 - rád dvojek (1 x 2) &lt;br /&gt;
  1 - rád štvoriek (1 x 4)&lt;br /&gt;
  0 - rád osmičiek&lt;br /&gt;
  1 - ráď šestnástok (1 x 16)&lt;br /&gt;
&lt;br /&gt;
 1 x 2 + 1 x 4 + 1 x 16 = 22&lt;br /&gt;
&lt;br /&gt;
Takže na odvysielanie čísla 8-bitového čísla 65 cez pin TXD sa tam postupne odvysielajú číslice 01000001 - a pri rýchlosti 115200 číslic za sekundu tam každá bude iba 1/115200 s, čo je približne 8,68 mikrosekúnd.&lt;br /&gt;
 &lt;br /&gt;
Predchádzajúci program upravme tak, aby okrem blikania LEDkou aj vypisoval texty ON a OFF:&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);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  Serial.println(&amp;quot;ON&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  Serial.println(&amp;quot;OFF&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dobrý robot by ale iba s výstupmi nevystačil, musí nejakým spôsobom získavať informácie z prostredia - pomocou senzorov, ktoré tvoria jeho vstupné zariadenia. Napríklad ak nárazník narazí do prekážky, stlačí sa mikrospínač a hodnota na výstupe z vypínača sa zmení z logickej nuly na logickú jednotku. Potrebujeme napísať program, ktorý hodnotu na svojom pine dokáže prečítať.&lt;br /&gt;
&lt;br /&gt;
Pin 2 nastavíme na vstupný:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 pinMode(2, INPUT);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a funkcia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 digitalRead(2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nám vráti buď 0 alebo 1 - podľa toho, či je na pine 2 logická nula, alebo jednotka. Túto hodnotu môžeme použiť napríklad v podmienke, ktorá sa v jazyku C++ (na ktorom je Arduino založené) používa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 if (podmienka) {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak je podmienka splnená&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak podmienka nie je splnená, čiže neplatí&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
časť else je nepovinná - môže a nemusí tam byť. V našom prípade môžeme program naprogramovať tak, že pri stlačení tlačidla LED zasvieti:&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;
 {&lt;br /&gt;
   pinMode(2,INPUT);&lt;br /&gt;
   pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   if (digitalRead(2)) {&lt;br /&gt;
     digitalWrite(13, HIGH);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
     digitalWrite(13,LOW);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako to zapojiť?&lt;br /&gt;
&lt;br /&gt;
Mikrospínač, ktorý je v stavebnici Acroba funguje tak, že bez stlačenia sú prepojené len kontakty cez dlhšie strany obdĺžnika a po stlačení sú prepojené všetky 4 kontakty. &lt;br /&gt;
&lt;br /&gt;
[[Image:microswitch.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Preto do pinu D2 pripojíme jeden výstup z tlačidla. Druhý výstup tlačidla spojíme s napájaním (VCC), ktoré má hodnotu napätia ako logická 1. Tým zabezpečíme, že pri stlačení tlačidla bude na D2 logická jednotka. Lenže, ak tlačidlo nestlačíme - logická nula tam nebude, bude tam len pripojený &amp;quot;vo vzduchu visiaci&amp;quot; káblik a to nie je dobre. Preto ho treba prepojiť so zemou. Ale pozor - ak by sme ho so zemou prepojili len tak - priamo, tak by sme pri stlačení tlačidla spôsobili skrat - priamymi vodičmi by bolo spojené VCC (plus na baterke) so zemou (mínus na baterke) a takúto situáciu nesmieme dopustiť ani na krátky okamih. Preto pin D2 spojíme so zemou cez rezistor s dostatočne veľkým odporom, napr. 2 kOhm:&lt;br /&gt;
&lt;br /&gt;
[[Image:schema_tlacidlo.png|zapojenie s mikroswitchom]]&lt;br /&gt;
&lt;br /&gt;
Robot Acrob je poháňaný dvoma servomotormi. Servomotor je zaujímavá súčiastka - je to motor s prevodovkou a riadiacou elektronikou. Vnútri vyzerá nejak takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:servo_motor.jpg|vnútornosti servomotorov]]&lt;br /&gt;
&lt;br /&gt;
používajú sa väčšinou v robotických ramenách, pričom sa môžu otáčať v rozsahu 0-180 stupňov (90 je stredná poloha). Viac otočiť im nedovolí zabudovaná zarážka. Potenciometer je v skutočnosti rezistor s premenlivou hodnotou a používa sa ako spätná väzba, ktorá riadiacu elektroniku serva informuje o tom, ako je práve servo otočené. Cez signálny káblik (biely, alebo žltý) elektronika dostáva pokyn z počítača (napr. z Arduina), do akej polohy sa má servo nastaviť. Elektronika porovná aktuálnu hodnotu s požadovanou a podľa toho rozbehne motor správnym smerom a vhodnou rýchlosťou.&lt;br /&gt;
&lt;br /&gt;
Servá, ktoré sú zabudované do Acrobov, sú tzv. modifikované servá - zarážka, ktorá bráni súvislému otáčaniu je odstránená a potenciometer je nahradený rezistorom so zafixovanou - pevnou hodnotou. Elektronika serva si preto &amp;quot;myslí&amp;quot;, že servo je stále v strede (na hodnote 90) a pri pokyne nastavenia do polohy napr. 120 sa roztočí jedným smerom a bude sa tak točiť donekonečna. Pri pokyne napr. 30 sa bude točiť donekonečna opačným smerom. Pri požadovenej polohe 90 sa zastaví a pri polohách blízko 90 sa bude otáčať iba pomaly, pretože už je skoro &amp;quot;v cieli&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ako servo riadiť - ako mu vysvetliť, že sa má nastaviť do požadovanej polohy napr. 30 stupňov?&lt;br /&gt;
&lt;br /&gt;
Riadiaci signál do serva (biely alebo žltý káblik) by mal každých 20 ms obsahovať pulz (logickú jednotku na krátky okamih). Dĺžka tohto okamihu určuje do akej polohy sa servo má nastaviť. Typicky to býva od 0.5 - 1.5 ms. Nasledujúci program teda roztočí servo jedným smerom:&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;
 {&lt;br /&gt;
   pinMode(10, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(10, LOW);&lt;br /&gt;
   delay(20);&lt;br /&gt;
   digitalWrite(10, HIGH);&lt;br /&gt;
   delayMicroseconds(500);&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program vyšle na pin D10 krátky pulz 0.5 ms každých 20 ms. Toľko teória. Arduino je však vymyslené tak, aby sme sa nemuseli starať o každý bit sami a stačí použiť knižnicu Servo, ktorá sa o generovanie riadiaceho signálu stará sama v spolupráci so zabudovanými časovačmi počítača. Program, ktorý pohne robotom teda vyzerá takto:&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;
 Servo lavy, pravy; &lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   lavy.attach(9);  // lave servo je na pine 9&lt;br /&gt;
   pravy.attach(10);  // prave servo je na pine 10&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // rozbehni sa&lt;br /&gt;
   lavy.write(120);&lt;br /&gt;
   pravy.write(30);&lt;br /&gt;
   // tri sekundy bez&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   // zastan&lt;br /&gt;
   lavy.write(90);&lt;br /&gt;
   pravy.write(90);&lt;br /&gt;
   // tri sekundy cakaj&lt;br /&gt;
   delay(3000);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;height: 1px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#EAFFF3;&amp;quot;&amp;gt;&lt;br /&gt;
K Acrobu môžeme pripojiť malú sirénku, ktorá funguje ako reproduktor:&lt;br /&gt;
&lt;br /&gt;
[[Image:piezo.png|malá signálna siréna]]&lt;br /&gt;
&lt;br /&gt;
Sirénku si môžeme predstaviť ako taký malý reproduktor. Reproduktor vytvára zvuk tak, že po dvoch drôtoch doň prichádza premenlivé napätie pripojené na jeho cievku elektromagnetu. Elektromagnet je pevne spojený s kuželovitou kmitajúcou membránou a vytvorené magnetické pole ho striedavo priťahuje a odpudzuje k pevému magnetu, ktorý je tiež súčasťou reproduktora. &lt;br /&gt;
&lt;br /&gt;
[[Image:how_speakers_work.png|čo sú reproduktory?]]&lt;br /&gt;
&lt;br /&gt;
Membrána reproduktora naráža na častice vzduchu, rozkmitá ich a zvuk sa v prostredí šíri ako pozdĺžne kmitajúca vlna mechanického vlnenia ďalej. Na vytvorenie čistého zvuku by sme mali napätie privádzané do reproduktora meniť plynule&lt;br /&gt;
&lt;br /&gt;
[[Image:sinusoida.png|plynule sa meniace napätie]]&lt;br /&gt;
&lt;br /&gt;
ale pri využití digitálnej elektroniky, ktoré vie na výstupe generovať iba 0 a 1 si to môžeme zjednodušiť a pomocou pravidelného striedania digitálneho signálu medzi 0 a 1 môžeme vydať počuteľný tón. Dôležité je hlavne to, aby frekvencia kmitania sedela s frekvenciou požadovaného tónu. &lt;br /&gt;
&lt;br /&gt;
[[Image:hranaty_signal.png|digitálna aproximácia sinusoidy]]&lt;br /&gt;
&lt;br /&gt;
Treba dať pozor na pripojenie - jedna strana sirénky je ozačená ako &amp;quot;+&amp;quot; - tú môžeme pripojiť priamo na niektorý digitálny výstupný pin a riadiť ho rovnako ako pri blikaní LEDkou, len trochu rýchlejšie, druhú stranu sirénky pripojíme priamo na zem.&lt;br /&gt;
&lt;br /&gt;
Hudobné tóny rozličných výšok sa líšia svojimi frekvenciami. Tón s veľkou frekvenciou (za sekundu membrána kmitne veľakrát) je vysoký tón, naopak tón s nízkou frekvenciou kmitania membrány je nízky tón. Človek typicky počuje frekvencie okolo 20-15000 Hz. Nasledujúci program teda vydá tón malé &#039;A&#039;, ktorý má frekvenciu 440 Hz:&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;
 {&lt;br /&gt;
   pinMode(11,OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(11, HIGH);&lt;br /&gt;
   delayMicroseconds(1136);     // 1136 usec je dlzka trvania jednej pol-periody&lt;br /&gt;
   digitalWrite(11,LOW);        // ak kmitame 440-krat za sekundu, tak dlzka jedneho&lt;br /&gt;
   delayMicroseconds(1136);     // kmitnutia je 1/440 s, co je 0.0022727 s, polovica&lt;br /&gt;
 }                              // z toho je 0.0011363 s = 1.1363 ms = 1136.3 usec&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak chceme, aby robot zahral nejakú zaujímavejšiu pesničku, tak by sa nám hodila funkcia, ktorá vie zahrať tón s ľubovoľnou frekvenciou a bolo by fajn, keby sme tej funkcii vedeli povedať ako dlho ten tón znie. Funkcia? a to je čo? Funkciu si môžeme predstaviť ako &amp;quot;vlastný blok&amp;quot; v programovacom jazyku pre LEGO MINDSTORMS. Je to kus programu, ktorý môžeme vyvolať opakovane z rôznych miest nášho programu - a môžeme mu zadať nejaké parametre, ktoré určujú, čo presne má urobiť. Každý náš arduinovský program už pozostával z dvoch funkcií - setup() a loop(). Takýchto funkcií môžeme pridať koľko chceme a vyvolať ich z hociktorého miesta programu. Funkcii môžeme predpísať ľubovoľný počet parametrov - každý z nich musí mať stanovený &amp;quot;typ&amp;quot; - čiže napr. či je to číslo, logická hodnota, znak, alebo reťazec znakov. Napríklad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void scitaj(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(&amp;quot;Sucet je: &amp;quot;);&lt;br /&gt;
   Serial.println(a + b);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
je funkcia, ktorá dostane dva parametre a, b, a cez sériový port vypíše text &amp;quot;Sucet je XY&amp;quot;, kde XY bude skutočný súčet hodnôt a, b. Takúto funkciu môžeme z programu vyvolať napr. takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 scitaj(3, 4);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ale za parametre môžeme dosadiť aj hodnoty z premenných, napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int premenna = 12;&lt;br /&gt;
 int ina_premenna;&lt;br /&gt;
  &lt;br /&gt;
 ina_premenna = 10;&lt;br /&gt;
 &lt;br /&gt;
 scitaj(premenna, ina_premenna);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takže teraz napíšme funkciu, ktorá bude zadanou frekvenciou (určenou v Hz) kmitať stanovenú dobu (určenú v ms). Namiesto typu int použijeme typ long, lebo do premenných typu long sa vojdú oveľa väčšie čísla - čo potrebujeme, lebo budeme počítať v mikrosekundách (miliontinách sekundy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // f - frekvencia v Hz, d - dlzka trvania tonu v ms&lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long t = 500000 / f;     // ako dlho trva polovica jednej periody tonu s frekvenciou f? &lt;br /&gt;
   long p = d * f / 1000;   // kolko celych period sa vojde do casoveho useku dlzky d?&lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++) &lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(t);  // namiesto 1136 usec ako v pripade tonu s frekvenciou 440 Hz &lt;br /&gt;
     digitalWrite(11,LOW);  // budeme cakat t usec, ktore sme vypocitali z frekvencie f&lt;br /&gt;
     delayMicroseconds(t);  //  1 / f - v sekundach, takze este krat milion (na mikrosekundy) a deleno 2&lt;br /&gt;
   }                        // co je to iste ako 500000 / f&lt;br /&gt;
   delay(50);  // na konci kratka prestavka, aby boli tony zretelne oddelene a nezlievali sa&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tomto programe sú dva zaujímavé výpočty. Prvý z nich využíva fakt, že vzťah medzi frekvenciou a periódou je T = 1 / f a zároveň f = 1 / T. V prvom riadku funkcie teda vypočítame koľko mikrosekúnd trvá polovica periódy, ak sa má za jednu sekundu zopakovať f kmitnutí signálu nahor a nadol.&lt;br /&gt;
Druhý výpočet slúži na to, aby sme vedeli koľkokrát sa má kmitnutie nahor a nadol zopakovať (to je tá podmienka i &amp;lt; p v cykle for). Zistíme to tak, že vynásobíme dĺžku trvania tónu (d) frekvenciou (f). Napríklad ak kmitáme frekvenciou 440 Hz a tón má znieť 1 sekundu, tak potrebujeme kmitnúť 1 * 440 = 440-krát. Alebo ak má tón znieť 2 sekundy, tak potrebujeme kmitnúť 2 * 440 = 880-krát. Ak by mal znieť iba pol sekundy, tak by to bolo 0,5 * 440 = 220-krát. Lenže dĺžka trvania tónu (d) je zadaná v milisekundách, takže aby sme dostali správny výsledok, musíme ho ešte vydeliť 1000 (čím ako keby prevedieme hodnotu d na milisekundy). Cyklus for, ktorý sme použili je najbežnejšie používaný cyklus, pomocou ktorého môžeme nejakú skupinu príkazov uzavretú v zložených zátvorkách zopakovať viackrát. Zapisuje sa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 for (príkaz_ktory_sa_vykona_na_zaciatku; podmienka_opakovania; prikaz_ktory_sa_vykona_po_kazdom_opakovani)&lt;br /&gt;
 {&lt;br /&gt;
   //...prikazy...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Prikaz for teda vŽdy vykoná najskôr svoj prvý príkaz za zátvorkou - v našom prípade vytvorí premennú typu int a nastaví ju na hodnotu 0. Potom skontroluje, či platí podmienka opakovania - v našom prípade, či počet opakovaní (premenná i) je stále menší ako stanovený počet opakovaní (premenná p) - ak áno, prvýkrát vykoná príkazy v tele cyklu (medzi zloženými zátvorkami). Potom nasleduje príkaz, ktorý sa vykoná po každom opakovaní cyklu - posledný výraz v okrúhlych zátvorkách za slovíčkom for - v našom prípade &amp;quot;i++&amp;quot;, čo znamená zvýšiť premennú i o jedna a následne sa zasa skontroluje, či stále platí podmienka opakovania. Ak nie, cyklus skončil a program pokračuje ďalším príkazom za telom cyklu. Ak je podmienka stále splnená, znovu sa vykonajú príkazy v tele cyklu, príkaz po každom opakovaní a zasa sa otestuje podmienka - a takto až dovtedy, kým podmienka prestane byť splnená (čo v krajnom prípade nemusí byť nikdy - v takom prípade cyklus nikdy neskončí).&lt;br /&gt;
&lt;br /&gt;
Keď máme funkciu hotovú, môžeme ju využiť na to, aby robot zahral známu melódiu Kohútik jarabí :-)  C-D-E-F-F-F-F-E-D-E-E-E-E-D-C-D-D-D-D-E-D-C-C-C s dĺžkami nôt 1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1, kde 1 je polová a 2 je celá nota (polová má polovičnú dobu trvania):&lt;br /&gt;
&lt;br /&gt;
Aby to bolo zaujímavejšie na digitálne výstupy D0, D1, D2, D3 môžeme zapojiť rozličné LEDky a spolu s jednotlivými tónmi C,D,E,F zapínať jednotlivé LED - získame takto farebnú hudbu :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_farebna_hudba.jpg|farebná hudba na robotovi Acrob]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void ton(long frekvencia, long trvanie)&lt;br /&gt;
 {&lt;br /&gt;
   long p = trvanie * frekvencia / 1000L;   // L na konci cisla zdoraznuje&lt;br /&gt;
   long polPeriody = 500000L / frekvencia;  // ze ide o konstantu typu long, nemusi tam byt&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
    pinMode(11, OUTPUT);  // pipac&lt;br /&gt;
    &lt;br /&gt;
    pinMode(0, OUTPUT);   // farebna hudba - 4 LED&lt;br /&gt;
    pinMode(1, OUTPUT);&lt;br /&gt;
    pinMode(2, OUTPUT);&lt;br /&gt;
    pinMode(3, OUTPUT);   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // dostane cislo LED 1-4, tu zasvieti a ostatne zhasne&lt;br /&gt;
 void led(int ktora)&lt;br /&gt;
 {&lt;br /&gt;
   if (ktora == 1) digitalWrite(0, HIGH);&lt;br /&gt;
   else digitalWrite(0, LOW);&lt;br /&gt;
   if (ktora == 2) digitalWrite(1, HIGH);&lt;br /&gt;
   else digitalWrite(1, LOW);&lt;br /&gt;
   if (ktora == 3) digitalWrite(2, HIGH);&lt;br /&gt;
   else digitalWrite(2, LOW);&lt;br /&gt;
   if (ktora == 4) digitalWrite(3, HIGH);&lt;br /&gt;
   else digitalWrite(3, LOW);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // C: 262&lt;br /&gt;
 // D: 293&lt;br /&gt;
 // E: 330&lt;br /&gt;
 // F: 349&lt;br /&gt;
 void hrajC(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(1);&lt;br /&gt;
   ton(262, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajD(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(2);&lt;br /&gt;
   ton(293, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajE(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(3);&lt;br /&gt;
   ton(330, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajF(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(4);  &lt;br /&gt;
   ton(349, dlzka);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 { &lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajF(1000);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajC(500); &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môže byť? Neviem, asi by bolo ešte lepšie, ak by sme melódiu nemuseli zapisovať takýmto spôsobom. Jednak tu máme iba funkcie na 4 tóny a na klavíri býva aj viac ako 80 klávesov a tak vytvárať funkciu pre každý tón nebude veľmi praktické. Skúsme to ešte trochu lepšie - použijeme pole. &lt;br /&gt;
&lt;br /&gt;
Využijeme pole na to, aby sme si uložili frekvencie všetkých tónov, ktoré bude náš muzikantský program poznať. Pole je taká premenná, do ktorej sa dá uložiť viacero hodnôt naraz, nielen jedna. Napríklad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[3];  // premenna a schovava tri cele cisla&lt;br /&gt;
 &lt;br /&gt;
 a[0] = 10; // prve z nich nech je 10&lt;br /&gt;
 a[1] = 11; // do druheho vloz 11&lt;br /&gt;
 a[2] = 12; // a posledne nech obsahuje 12&lt;br /&gt;
 &lt;br /&gt;
 int b = a[0] + a[1] + a[2];  // vypocitaj sucet vsetkych troch hodnot a uloz ho do premennej b&lt;br /&gt;
 &lt;br /&gt;
 Serial.print(&amp;quot;Sucet je: &amp;quot;);  // vypis vysledok na seriovy port&lt;br /&gt;
 Serial.println(b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na prístup k jednotlivým hodnotám v poli môžeme použiť aj premennú (niekedy sa jej hovorí indexová, lebo poradie prvku, ku ktorému sa pristupuje sa volá index):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[10];&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)   &lt;br /&gt;
 {&lt;br /&gt;
   a[i] = 1 + i * 2;   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int sucet = 0;&lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(a[i]);&lt;br /&gt;
   if (i &amp;lt; 9) Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
   sucet = sucet + a[i];&lt;br /&gt;
 }&lt;br /&gt;
 Serial.print(&amp;quot;=&amp;quot;);&lt;br /&gt;
 Serial.println(sucet);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistite, čo presne urobí tento program?&lt;br /&gt;
&lt;br /&gt;
Tak teda naspäť k nášmu hodobníckemu programu. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #define TEMPO 24    // cim vyssia hodnota, tym pomalsie tempo&lt;br /&gt;
 &lt;br /&gt;
 // pocet not v melodii&lt;br /&gt;
 int dlzka = 25;  &lt;br /&gt;
 &lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &lt;br /&gt;
                   &#039;C&#039;, &#039;h&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;g&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;e&#039;, &#039;d&#039;, &#039;c&#039;, &#039;c&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 16, 16,&lt;br /&gt;
                     8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 16, 16}; &lt;br /&gt;
 &lt;br /&gt;
 // ake tony pozname - pouzili sme specialne znaky na oznacenie poltonov, zatial nam stacia 2 oktavy &lt;br /&gt;
 char tony[] = {&#039;c&#039;, &#039;#&#039;, &#039;d&#039;, &#039;%&#039;, &#039;e&#039;, &#039;f&#039;, &#039;$&#039;, &#039;g&#039;, &#039;^&#039;, &#039;a&#039;, &#039;*&#039;, &#039;h&#039;,&lt;br /&gt;
                &#039;C&#039;, &#039;!&#039;, &#039;D&#039;, &#039;~&#039;, &#039;E&#039;, &#039;F&#039;, &#039;+&#039;, &#039;G&#039;, &#039;-&#039;, &#039;A&#039;, &#039;/&#039;, &#039;H&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // hodnoty frekvencii tonov a poltonov sme si nasli na internete:&lt;br /&gt;
 // radkon.eu/projects/other/tones.html&lt;br /&gt;
 &lt;br /&gt;
 int frekvencie[] = {261, 277, 293, 311, 329, 349, 369, 391, 415, 440, 466, 493, 523, 554, 587, 622, 659, 698, 739, 783, 830, 880, 932, 987};&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11, OUTPUT);                    // sirenku pripojime na D11&lt;br /&gt;
   &lt;br /&gt;
   // raz zahraj celu melodiu&lt;br /&gt;
   for (int i = 0; i &amp;lt; dlzka; i++)&lt;br /&gt;
     hraj(melodiaT[i], melodiaD[i]);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long p = d * f / 1000L;&lt;br /&gt;
   long polPeriody = 500000L / f;&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hraj(char nota, int trvanie)&lt;br /&gt;
 {&lt;br /&gt;
  int kde = 0;&lt;br /&gt;
  while (tony[kde] != nota) kde++;  // najdeme index pozadovaneho tonu&lt;br /&gt;
  ton(frekvencie[kde], trvanie * TEMPO);  // a zahrame ho&lt;br /&gt;
 }&lt;br /&gt;
                 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // melodiu zahrame priamo vo funkcii setup, aby sa po resete zahrala iba raz a nehrala stale dookola&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aká je to pesnička? Kto naprogramuje vianočnú melódiu? :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Odpoveď Sama: Pesnička je to &amp;quot;jedna druhej riekla keď koláče atď.&amp;quot; a pesničku by som naprogramoval aj ja.&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);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println(&amp;quot;Som pripraveny.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int text;&lt;br /&gt;
int dlzka1 = 2000;&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    text = Serial.read();&lt;br /&gt;
    if ((text == &#039;+&#039;)&amp;amp;&amp;amp; (dlzka1 &amp;lt; 2000)) {&lt;br /&gt;
      dlzka1 = dlzka1 + 50;&lt;br /&gt;
      Serial.println(dlzka1);&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    if ((text == &#039;-&#039;) &amp;amp;&amp;amp; (dlzka1 &amp;gt; 0)) {&lt;br /&gt;
    dlzka1 = dlzka1 - 50;&lt;br /&gt;
    Serial.println(dlzka1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  int dlzka2 = 2000 - dlzka1;&lt;br /&gt;
  delayMicroseconds(dlzka1);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delayMicroseconds(dlzka2);&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Arduino&amp;diff=455</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Arduino&amp;diff=455"/>
		<updated>2017-01-03T15:19:07Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#FAFFDA;&amp;quot;&amp;gt;&lt;br /&gt;
Slovo Arduino označuje niekoľko vecí: &lt;br /&gt;
* je to počítač (malá doska plošného spoja osadená väčšinou jednočipovým mikropočítačom Atmel AVR ATMega328) &lt;br /&gt;
* je to programovací jazyk v ktorom sa tento počítač dá programovať&lt;br /&gt;
* je to program - programovacie vývojové prostredie, pomocou ktorého sa program zapisuje a zároveň cez USB kábel prenáša a spúšťa na Arduine&lt;br /&gt;
* sú to všetky tieto veci dokopy.&lt;br /&gt;
&lt;br /&gt;
Arduino sa vyrába v rozličných verziách.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_uno.jpg|Arduino Uno]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Uno - najrozšírenejší model Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_nano.jpg|Arduino Nano|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Nano - funguje rovnako ako Uno, ale je oveľa menšie - takéto budeme používať aj my&lt;br /&gt;
&lt;br /&gt;
[[Image:robot_acrob.jpg|Robot Acrob]]&amp;lt;br&amp;gt;&lt;br /&gt;
Robot Acrob - používa dosku, ktorá sa podobá na Arduino, ale funguje rovnako, mali sme ich požičané od združenia Robotika.SK na krúžku&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328.jpg|ATMega328|250px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Jednočipový mikropočítač ATMega328, ktorý je základom Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328_pinout.png|ATMega328 pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
Funkcie jednotlivých vývodov jednočipového mikropočítača ATMega328&lt;br /&gt;
&lt;br /&gt;
Podrobné informácie o jednočipovom mikropočítači ATMega328 sa dajú nájsť v jeho [[Media:atmega328datasheet.pdf|datasheete]].&lt;br /&gt;
&lt;br /&gt;
Každý počítač sa skladá z týchto základných častí:&lt;br /&gt;
&lt;br /&gt;
[[Image:pocitac.png|základná schéma počítača]]&lt;br /&gt;
&lt;br /&gt;
Pamäť uchováva všetky údaje (obrázky, zvuky, texty, čísla, a podobne) a programy, ktoré sa vykonávajú príkaz za príkazom v procesore. Pamäť s procesorom sú navzájom prepojené zbernicou, ktorá medzi nimi prenáša údaje. Aby s počítač mohol komunikovať so svojím okolím - napr. s človekom, alebo s vonkajšími pamäťami, na ktorých ukladá rozsiahle údaje (pevné disky, DVD, Internet), tak sú na zbernici pripojené aj vstupné a výstupné zariadenia.&lt;br /&gt;
&lt;br /&gt;
To znamená, programy pozostávajú z postupnosti príkazov:&lt;br /&gt;
&lt;br /&gt;
 príkaz1&lt;br /&gt;
 príkaz2&lt;br /&gt;
 ...&lt;br /&gt;
 príkazN&lt;br /&gt;
&lt;br /&gt;
V každom okamihu procesor naraz vykonáva iba jeden príkaz, postupne od začiatku programu do konca. V programoch sa môžu vyskytovať cykly:&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 opakuj:&lt;br /&gt;
   príkaz&lt;br /&gt;
   príkaz&lt;br /&gt;
 koniec cyklu&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
- ak treba nejakú skupinu príkazov niekoľkokrát zopakovať, alebo podmienky, ktoré dovoľujú vykonať rozličné skupiny príkazov, podľa toho, ktorá z nich je práve vhodná (väčšinou na základe otestovania nejakej podmienky):&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 platí podmienka?&lt;br /&gt;
 ak áno, vykonaj túto skupinu príkazov:&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 ak nie, vykonaj inú skupinu príkazov&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 a potom pokračuj v každom prípade ďalej:&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Arduino je teda počítač, ktorý má svoju pamäť, procesor a nahrávame do neho cez kábel program, ktorý najskôr naprogramujeme pomocou prostredia Arduino:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_program.png|program zapisovaný v prostredí Arduino|450px]].&lt;br /&gt;
&lt;br /&gt;
Nato, aby sme mohli pracovať s prostredím Arduino si ho potrebujeme downloadnut a nainštalovať zo stránky [http://arduino.cc arduino.cc] - nainštalujte si &amp;quot;Windows Installer&amp;quot; - to by malo nainštalovať aj ovládače (drivers).&lt;br /&gt;
&lt;br /&gt;
Program sa do Arduina nahráva cez prevodník USB-Serial (ktorý je v bežných arduinach už zabudovaný - ale Acroby ich potrebujú):&lt;br /&gt;
&lt;br /&gt;
[[Image:usb_serial.jpg|prevodník USB-Serial|300px]]&lt;br /&gt;
&lt;br /&gt;
Arduinové výstupy sú označené D0-D13 a A0-A5. Napájanie sa privádza na piny VCC a AVCC (+5V) a GND (zem, 0V). RXD, TXD označujú sériový port na komunikáciu s inými počítačmi alebo zariadeniami (napr. s PC), motory sa väčšinou pripájajú na piny D9 a D10.&lt;br /&gt;
&lt;br /&gt;
Na väčšine Arduin je pin D13 pripojený na zabudovanú svietivú diódu (LED). Prvý program, ktorý napíšeme túto LEDku rozbliká.&lt;br /&gt;
&lt;br /&gt;
Každý arduinový program obsahuje aspoň tieto dve funkcie:&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;
  // put your setup code here, to run once:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcia setup() sa spustí vždy po zapnutí počítača - hneď po spustení programu. Jej úlohou je ponastavovať všetky zariadenia, ktoré sú k Arduinu pripojené. Funkcia loop() sa spustí, keď setup() skončí a ak loop() skončí (čo nemusí...), tak sa spúšťa znovu a znovu, stále dookola.&lt;br /&gt;
&lt;br /&gt;
Pre rozblikanie LED musíme najskôr počítaču nastaviť pin D13 ako výstupný. Každý digitálny pin sa dá používať buď ako vstupný (vtedy Arduino z nožičky integrovaného obvodu vie prečítať, či tam je logická 0 (nulové napätie), alebo logická 1 (napätie 5V). Pin nemôže byť naraz aj vstupný aj výstupný, musíme sa rozhodnúť ako ho chceme používať a podľa toho ho vo fukcii setup() nastaviť. Robí sa to príkazom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  pinMode(číslo_pinu, režim); // pričom režim je buď INPUT, alebo OUTPUT  (je možná aj tretia možnosť, ale o tom až niekedy neskôr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keď je pin nastavený ako výstupný, tak vo funkcii loop() môžeme LED kedykoľvek zasvietiť zapísaním logickej jednotky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, HIGH);  // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 1)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podobne, LED zhasneme takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, LOW);   // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 0)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arduino však stihne za sekundu vykonať 16 miliónov inštrukcií (taktovacia frekvencia procesora je 16 MHz) a tak, aby sme si blikanie LED stihli všimnúť, musíme po každej zmene pinu nejaký čas počkať - na to slúži funkcia delay(čas_v_milisekundách). Celý program na blikanie LED teda vyzerá takto:&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);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby sa nám Arduino programovalo jednoduchšie, ak ho máme pripojené káblom, môžeme z neho cez kábel (čiže cez sériový port) do PC poslať nejakú textovú správu:&lt;br /&gt;
&lt;br /&gt;
Vo funkcii setup() najskôr nastavíme rýchlosť prenosu (počet prenesených bitov za sekundu), napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a potom môžeme používať funkcie na vstup a výstup cez sériový port, napr. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Ahoj&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celý takýto text sa odvysiela cez jediný pin TXD mikropočítača ATMega328 (pozri obrázok hore). Ako sa to udeje?&lt;br /&gt;
Každý znak (písmeno, číslica, znamienko a pod.) má nejaký číselný kód - väčšinou sa na to používa medzinárodný štandard ASCII. Vidíme, že napríklad znak &#039;A&#039; má kód 65, znak &#039;o&#039; má kód 111, atď.&lt;br /&gt;
&lt;br /&gt;
[[Image:ascii-codes-table.png|ASCII tabuľka|300px]]&lt;br /&gt;
&lt;br /&gt;
Tieto kódy sú v Arduine uložené v dvojkovej sústave, tak ako všetky ostatné čísla! Počítače totiž všetky čísla ukladajú v dvojkovej sústave, keďže na to stačí, aby na príslušnom pine bolo kladné napätie (logická jednotka) alebo nulové napätie (logická nula).&lt;br /&gt;
&lt;br /&gt;
Ľudia na výpočty používajú desiatkovú sústavu, keďže majú 10 prstov, je im prirodzenejšia: obsahuje 10 číslic: 0, 1, 2, ..., 9.&lt;br /&gt;
Za poslednou číslicou nasleduje číslo 10 zložené z dvoch číslic, za posledným dvojciferným číslo 99 nasleduje číslo 100, atď. V čísle, ktoré má viac číslic stojí každá číslica na nejakom mieste, napr. v čísle 2016: je číslica 6 na mieste jednotiek (má hodnotu 6 x 1), číslica 1 na mieste desiatok (má hodnotu 1 x 10), číslica 0 na mieste stoviek (hodnota 0 x 100) a číslica 2 na mieste tisícok (hodnota 2 x 1000). Podobne to funguje aj v dvojkovej sústave, ale namiesto 10 číslic máme k dispozícii iba číslice dve: 0 a 1. Čísla tam nasledujú za sebou takto:&lt;br /&gt;
&lt;br /&gt;
     0      - zodpovedá 0 v desiatkovej sústave)&lt;br /&gt;
     1      - 1&lt;br /&gt;
    10      - 2&lt;br /&gt;
    11      - 3&lt;br /&gt;
   100      - 4&lt;br /&gt;
   101      - 5&lt;br /&gt;
   110      - 6&lt;br /&gt;
   111      - 7&lt;br /&gt;
  1000      - 8&lt;br /&gt;
  1001      - 9&lt;br /&gt;
  1010      - 10&lt;br /&gt;
  1011      - 11&lt;br /&gt;
  1100      - 12&lt;br /&gt;
  1101      - 13&lt;br /&gt;
  1110      - 14&lt;br /&gt;
  1111      - 15&lt;br /&gt;
 10000      - 16&lt;br /&gt;
 10001      - 17&lt;br /&gt;
  atď.&lt;br /&gt;
&lt;br /&gt;
ľahko si všimneme, že aj tu majú číslice svoje &amp;quot;rády&amp;quot;, napr. v čísle 10110 (čiže 22 v desiatkovej sústave) máme:&lt;br /&gt;
  0 - rád jednotiek &lt;br /&gt;
  1 - rád dvojek (1 x 2) &lt;br /&gt;
  1 - rád štvoriek (1 x 4)&lt;br /&gt;
  0 - rád osmičiek&lt;br /&gt;
  1 - ráď šestnástok (1 x 16)&lt;br /&gt;
&lt;br /&gt;
 1 x 2 + 1 x 4 + 1 x 16 = 22&lt;br /&gt;
&lt;br /&gt;
Takže na odvysielanie čísla 8-bitového čísla 65 cez pin TXD sa tam postupne odvysielajú číslice 01000001 - a pri rýchlosti 115200 číslic za sekundu tam každá bude iba 1/115200 s, čo je približne 8,68 mikrosekúnd.&lt;br /&gt;
 &lt;br /&gt;
Predchádzajúci program upravme tak, aby okrem blikania LEDkou aj vypisoval texty ON a OFF:&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);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  Serial.println(&amp;quot;ON&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  Serial.println(&amp;quot;OFF&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dobrý robot by ale iba s výstupmi nevystačil, musí nejakým spôsobom získavať informácie z prostredia - pomocou senzorov, ktoré tvoria jeho vstupné zariadenia. Napríklad ak nárazník narazí do prekážky, stlačí sa mikrospínač a hodnota na výstupe z vypínača sa zmení z logickej nuly na logickú jednotku. Potrebujeme napísať program, ktorý hodnotu na svojom pine dokáže prečítať.&lt;br /&gt;
&lt;br /&gt;
Pin 2 nastavíme na vstupný:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 pinMode(2, INPUT);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a funkcia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 digitalRead(2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nám vráti buď 0 alebo 1 - podľa toho, či je na pine 2 logická nula, alebo jednotka. Túto hodnotu môžeme použiť napríklad v podmienke, ktorá sa v jazyku C++ (na ktorom je Arduino založené) používa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 if (podmienka) {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak je podmienka splnená&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak podmienka nie je splnená, čiže neplatí&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
časť else je nepovinná - môže a nemusí tam byť. V našom prípade môžeme program naprogramovať tak, že pri stlačení tlačidla LED zasvieti:&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;
 {&lt;br /&gt;
   pinMode(2,INPUT);&lt;br /&gt;
   pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   if (digitalRead(2)) {&lt;br /&gt;
     digitalWrite(13, HIGH);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
     digitalWrite(13,LOW);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako to zapojiť?&lt;br /&gt;
&lt;br /&gt;
Mikrospínač, ktorý je v stavebnici Acroba funguje tak, že bez stlačenia sú prepojené len kontakty cez dlhšie strany obdĺžnika a po stlačení sú prepojené všetky 4 kontakty. &lt;br /&gt;
&lt;br /&gt;
[[Image:microswitch.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Preto do pinu D2 pripojíme jeden výstup z tlačidla. Druhý výstup tlačidla spojíme s napájaním (VCC), ktoré má hodnotu napätia ako logická 1. Tým zabezpečíme, že pri stlačení tlačidla bude na D2 logická jednotka. Lenže, ak tlačidlo nestlačíme - logická nula tam nebude, bude tam len pripojený &amp;quot;vo vzduchu visiaci&amp;quot; káblik a to nie je dobre. Preto ho treba prepojiť so zemou. Ale pozor - ak by sme ho so zemou prepojili len tak - priamo, tak by sme pri stlačení tlačidla spôsobili skrat - priamymi vodičmi by bolo spojené VCC (plus na baterke) so zemou (mínus na baterke) a takúto situáciu nesmieme dopustiť ani na krátky okamih. Preto pin D2 spojíme so zemou cez rezistor s dostatočne veľkým odporom, napr. 2 kOhm:&lt;br /&gt;
&lt;br /&gt;
[[Image:schema_tlacidlo.png|zapojenie s mikroswitchom]]&lt;br /&gt;
&lt;br /&gt;
Robot Acrob je poháňaný dvoma servomotormi. Servomotor je zaujímavá súčiastka - je to motor s prevodovkou a riadiacou elektronikou. Vnútri vyzerá nejak takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:servo_motor.jpg|vnútornosti servomotorov]]&lt;br /&gt;
&lt;br /&gt;
používajú sa väčšinou v robotických ramenách, pričom sa môžu otáčať v rozsahu 0-180 stupňov (90 je stredná poloha). Viac otočiť im nedovolí zabudovaná zarážka. Potenciometer je v skutočnosti rezistor s premenlivou hodnotou a používa sa ako spätná väzba, ktorá riadiacu elektroniku serva informuje o tom, ako je práve servo otočené. Cez signálny káblik (biely, alebo žltý) elektronika dostáva pokyn z počítača (napr. z Arduina), do akej polohy sa má servo nastaviť. Elektronika porovná aktuálnu hodnotu s požadovanou a podľa toho rozbehne motor správnym smerom a vhodnou rýchlosťou.&lt;br /&gt;
&lt;br /&gt;
Servá, ktoré sú zabudované do Acrobov, sú tzv. modifikované servá - zarážka, ktorá bráni súvislému otáčaniu je odstránená a potenciometer je nahradený rezistorom so zafixovanou - pevnou hodnotou. Elektronika serva si preto &amp;quot;myslí&amp;quot;, že servo je stále v strede (na hodnote 90) a pri pokyne nastavenia do polohy napr. 120 sa roztočí jedným smerom a bude sa tak točiť donekonečna. Pri pokyne napr. 30 sa bude točiť donekonečna opačným smerom. Pri požadovenej polohe 90 sa zastaví a pri polohách blízko 90 sa bude otáčať iba pomaly, pretože už je skoro &amp;quot;v cieli&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ako servo riadiť - ako mu vysvetliť, že sa má nastaviť do požadovanej polohy napr. 30 stupňov?&lt;br /&gt;
&lt;br /&gt;
Riadiaci signál do serva (biely alebo žltý káblik) by mal každých 20 ms obsahovať pulz (logickú jednotku na krátky okamih). Dĺžka tohto okamihu určuje do akej polohy sa servo má nastaviť. Typicky to býva od 0.5 - 1.5 ms. Nasledujúci program teda roztočí servo jedným smerom:&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;
 {&lt;br /&gt;
   pinMode(10, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(10, LOW);&lt;br /&gt;
   delay(20);&lt;br /&gt;
   digitalWrite(10, HIGH);&lt;br /&gt;
   delayMicroseconds(500);&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program vyšle na pin D10 krátky pulz 0.5 ms každých 20 ms. Toľko teória. Arduino je však vymyslené tak, aby sme sa nemuseli starať o každý bit sami a stačí použiť knižnicu Servo, ktorá sa o generovanie riadiaceho signálu stará sama v spolupráci so zabudovanými časovačmi počítača. Program, ktorý pohne robotom teda vyzerá takto:&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;
 Servo lavy, pravy; &lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   lavy.attach(9);  // lave servo je na pine 9&lt;br /&gt;
   pravy.attach(10);  // prave servo je na pine 10&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // rozbehni sa&lt;br /&gt;
   lavy.write(120);&lt;br /&gt;
   pravy.write(30);&lt;br /&gt;
   // tri sekundy bez&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   // zastan&lt;br /&gt;
   lavy.write(90);&lt;br /&gt;
   pravy.write(90);&lt;br /&gt;
   // tri sekundy cakaj&lt;br /&gt;
   delay(3000);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;height: 1px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#EAFFF3;&amp;quot;&amp;gt;&lt;br /&gt;
K Acrobu môžeme pripojiť malú sirénku, ktorá funguje ako reproduktor:&lt;br /&gt;
&lt;br /&gt;
[[Image:piezo.png|malá signálna siréna]]&lt;br /&gt;
&lt;br /&gt;
Sirénku si môžeme predstaviť ako taký malý reproduktor. Reproduktor vytvára zvuk tak, že po dvoch drôtoch doň prichádza premenlivé napätie pripojené na jeho cievku elektromagnetu. Elektromagnet je pevne spojený s kuželovitou kmitajúcou membránou a vytvorené magnetické pole ho striedavo priťahuje a odpudzuje k pevému magnetu, ktorý je tiež súčasťou reproduktora. &lt;br /&gt;
&lt;br /&gt;
[[Image:how_speakers_work.png|čo sú reproduktory?]]&lt;br /&gt;
&lt;br /&gt;
Membrána reproduktora naráža na častice vzduchu, rozkmitá ich a zvuk sa v prostredí šíri ako pozdĺžne kmitajúca vlna mechanického vlnenia ďalej. Na vytvorenie čistého zvuku by sme mali napätie privádzané do reproduktora meniť plynule&lt;br /&gt;
&lt;br /&gt;
[[Image:sinusoida.png|plynule sa meniace napätie]]&lt;br /&gt;
&lt;br /&gt;
ale pri využití digitálnej elektroniky, ktoré vie na výstupe generovať iba 0 a 1 si to môžeme zjednodušiť a pomocou pravidelného striedania digitálneho signálu medzi 0 a 1 môžeme vydať počuteľný tón. Dôležité je hlavne to, aby frekvencia kmitania sedela s frekvenciou požadovaného tónu. &lt;br /&gt;
&lt;br /&gt;
[[Image:hranaty_signal.png|digitálna aproximácia sinusoidy]]&lt;br /&gt;
&lt;br /&gt;
Treba dať pozor na pripojenie - jedna strana sirénky je ozačená ako &amp;quot;+&amp;quot; - tú môžeme pripojiť priamo na niektorý digitálny výstupný pin a riadiť ho rovnako ako pri blikaní LEDkou, len trochu rýchlejšie, druhú stranu sirénky pripojíme priamo na zem.&lt;br /&gt;
&lt;br /&gt;
Hudobné tóny rozličných výšok sa líšia svojimi frekvenciami. Tón s veľkou frekvenciou (za sekundu membrána kmitne veľakrát) je vysoký tón, naopak tón s nízkou frekvenciou kmitania membrány je nízky tón. Človek typicky počuje frekvencie okolo 20-15000 Hz. Nasledujúci program teda vydá tón malé &#039;A&#039;, ktorý má frekvenciu 440 Hz:&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;
 {&lt;br /&gt;
   pinMode(11,OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(11, HIGH);&lt;br /&gt;
   delayMicroseconds(1136);     // 1136 usec je dlzka trvania jednej pol-periody&lt;br /&gt;
   digitalWrite(11,LOW);        // ak kmitame 440-krat za sekundu, tak dlzka jedneho&lt;br /&gt;
   delayMicroseconds(1136);     // kmitnutia je 1/440 s, co je 0.0022727 s, polovica&lt;br /&gt;
 }                              // z toho je 0.0011363 s = 1.1363 ms = 1136.3 usec&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak chceme, aby robot zahral nejakú zaujímavejšiu pesničku, tak by sa nám hodila funkcia, ktorá vie zahrať tón s ľubovoľnou frekvenciou a bolo by fajn, keby sme tej funkcii vedeli povedať ako dlho ten tón znie. Funkcia? a to je čo? Funkciu si môžeme predstaviť ako &amp;quot;vlastný blok&amp;quot; v programovacom jazyku pre LEGO MINDSTORMS. Je to kus programu, ktorý môžeme vyvolať opakovane z rôznych miest nášho programu - a môžeme mu zadať nejaké parametre, ktoré určujú, čo presne má urobiť. Každý náš arduinovský program už pozostával z dvoch funkcií - setup() a loop(). Takýchto funkcií môžeme pridať koľko chceme a vyvolať ich z hociktorého miesta programu. Funkcii môžeme predpísať ľubovoľný počet parametrov - každý z nich musí mať stanovený &amp;quot;typ&amp;quot; - čiže napr. či je to číslo, logická hodnota, znak, alebo reťazec znakov. Napríklad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void scitaj(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(&amp;quot;Sucet je: &amp;quot;);&lt;br /&gt;
   Serial.println(a + b);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
je funkcia, ktorá dostane dva parametre a, b, a cez sériový port vypíše text &amp;quot;Sucet je XY&amp;quot;, kde XY bude skutočný súčet hodnôt a, b. Takúto funkciu môžeme z programu vyvolať napr. takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 scitaj(3, 4);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ale za parametre môžeme dosadiť aj hodnoty z premenných, napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int premenna = 12;&lt;br /&gt;
 int ina_premenna;&lt;br /&gt;
  &lt;br /&gt;
 ina_premenna = 10;&lt;br /&gt;
 &lt;br /&gt;
 scitaj(premenna, ina_premenna);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takže teraz napíšme funkciu, ktorá bude zadanou frekvenciou (určenou v Hz) kmitať stanovenú dobu (určenú v ms). Namiesto typu int použijeme typ long, lebo do premenných typu long sa vojdú oveľa väčšie čísla - čo potrebujeme, lebo budeme počítať v mikrosekundách (miliontinách sekundy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // f - frekvencia v Hz, d - dlzka trvania tonu v ms&lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long t = 500000 / f;     // ako dlho trva polovica jednej periody tonu s frekvenciou f? &lt;br /&gt;
   long p = d * f / 1000;   // kolko celych period sa vojde do casoveho useku dlzky d?&lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++) &lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(t);  // namiesto 1136 usec ako v pripade tonu s frekvenciou 440 Hz &lt;br /&gt;
     digitalWrite(11,LOW);  // budeme cakat t usec, ktore sme vypocitali z frekvencie f&lt;br /&gt;
     delayMicroseconds(t);  //  1 / f - v sekundach, takze este krat milion (na mikrosekundy) a deleno 2&lt;br /&gt;
   }                        // co je to iste ako 500000 / f&lt;br /&gt;
   delay(50);  // na konci kratka prestavka, aby boli tony zretelne oddelene a nezlievali sa&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tomto programe sú dva zaujímavé výpočty. Prvý z nich využíva fakt, že vzťah medzi frekvenciou a periódou je T = 1 / f a zároveň f = 1 / T. V prvom riadku funkcie teda vypočítame koľko mikrosekúnd trvá polovica periódy, ak sa má za jednu sekundu zopakovať f kmitnutí signálu nahor a nadol.&lt;br /&gt;
Druhý výpočet slúži na to, aby sme vedeli koľkokrát sa má kmitnutie nahor a nadol zopakovať (to je tá podmienka i &amp;lt; p v cykle for). Zistíme to tak, že vynásobíme dĺžku trvania tónu (d) frekvenciou (f). Napríklad ak kmitáme frekvenciou 440 Hz a tón má znieť 1 sekundu, tak potrebujeme kmitnúť 1 * 440 = 440-krát. Alebo ak má tón znieť 2 sekundy, tak potrebujeme kmitnúť 2 * 440 = 880-krát. Ak by mal znieť iba pol sekundy, tak by to bolo 0,5 * 440 = 220-krát. Lenže dĺžka trvania tónu (d) je zadaná v milisekundách, takže aby sme dostali správny výsledok, musíme ho ešte vydeliť 1000 (čím ako keby prevedieme hodnotu d na milisekundy). Cyklus for, ktorý sme použili je najbežnejšie používaný cyklus, pomocou ktorého môžeme nejakú skupinu príkazov uzavretú v zložených zátvorkách zopakovať viackrát. Zapisuje sa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 for (príkaz_ktory_sa_vykona_na_zaciatku; podmienka_opakovania; prikaz_ktory_sa_vykona_po_kazdom_opakovani)&lt;br /&gt;
 {&lt;br /&gt;
   //...prikazy...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Prikaz for teda vŽdy vykoná najskôr svoj prvý príkaz za zátvorkou - v našom prípade vytvorí premennú typu int a nastaví ju na hodnotu 0. Potom skontroluje, či platí podmienka opakovania - v našom prípade, či počet opakovaní (premenná i) je stále menší ako stanovený počet opakovaní (premenná p) - ak áno, prvýkrát vykoná príkazy v tele cyklu (medzi zloženými zátvorkami). Potom nasleduje príkaz, ktorý sa vykoná po každom opakovaní cyklu - posledný výraz v okrúhlych zátvorkách za slovíčkom for - v našom prípade &amp;quot;i++&amp;quot;, čo znamená zvýšiť premennú i o jedna a následne sa zasa skontroluje, či stále platí podmienka opakovania. Ak nie, cyklus skončil a program pokračuje ďalším príkazom za telom cyklu. Ak je podmienka stále splnená, znovu sa vykonajú príkazy v tele cyklu, príkaz po každom opakovaní a zasa sa otestuje podmienka - a takto až dovtedy, kým podmienka prestane byť splnená (čo v krajnom prípade nemusí byť nikdy - v takom prípade cyklus nikdy neskončí).&lt;br /&gt;
&lt;br /&gt;
Keď máme funkciu hotovú, môžeme ju využiť na to, aby robot zahral známu melódiu Kohútik jarabí :-)  C-D-E-F-F-F-F-E-D-E-E-E-E-D-C-D-D-D-D-E-D-C-C-C s dĺžkami nôt 1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1, kde 1 je polová a 2 je celá nota (polová má polovičnú dobu trvania):&lt;br /&gt;
&lt;br /&gt;
Aby to bolo zaujímavejšie na digitálne výstupy D0, D1, D2, D3 môžeme zapojiť rozličné LEDky a spolu s jednotlivými tónmi C,D,E,F zapínať jednotlivé LED - získame takto farebnú hudbu :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_farebna_hudba.jpg|farebná hudba na robotovi Acrob]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void ton(long frekvencia, long trvanie)&lt;br /&gt;
 {&lt;br /&gt;
   long p = trvanie * frekvencia / 1000L;   // L na konci cisla zdoraznuje&lt;br /&gt;
   long polPeriody = 500000L / frekvencia;  // ze ide o konstantu typu long, nemusi tam byt&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
    pinMode(11, OUTPUT);  // pipac&lt;br /&gt;
    &lt;br /&gt;
    pinMode(0, OUTPUT);   // farebna hudba - 4 LED&lt;br /&gt;
    pinMode(1, OUTPUT);&lt;br /&gt;
    pinMode(2, OUTPUT);&lt;br /&gt;
    pinMode(3, OUTPUT);   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // dostane cislo LED 1-4, tu zasvieti a ostatne zhasne&lt;br /&gt;
 void led(int ktora)&lt;br /&gt;
 {&lt;br /&gt;
   if (ktora == 1) digitalWrite(0, HIGH);&lt;br /&gt;
   else digitalWrite(0, LOW);&lt;br /&gt;
   if (ktora == 2) digitalWrite(1, HIGH);&lt;br /&gt;
   else digitalWrite(1, LOW);&lt;br /&gt;
   if (ktora == 3) digitalWrite(2, HIGH);&lt;br /&gt;
   else digitalWrite(2, LOW);&lt;br /&gt;
   if (ktora == 4) digitalWrite(3, HIGH);&lt;br /&gt;
   else digitalWrite(3, LOW);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // C: 262&lt;br /&gt;
 // D: 293&lt;br /&gt;
 // E: 330&lt;br /&gt;
 // F: 349&lt;br /&gt;
 void hrajC(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(1);&lt;br /&gt;
   ton(262, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajD(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(2);&lt;br /&gt;
   ton(293, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajE(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(3);&lt;br /&gt;
   ton(330, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajF(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(4);  &lt;br /&gt;
   ton(349, dlzka);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 { &lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajF(1000);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajC(500); &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môže byť? Neviem, asi by bolo ešte lepšie, ak by sme melódiu nemuseli zapisovať takýmto spôsobom. Jednak tu máme iba funkcie na 4 tóny a na klavíri býva aj viac ako 80 klávesov a tak vytvárať funkciu pre každý tón nebude veľmi praktické. Skúsme to ešte trochu lepšie - použijeme pole. &lt;br /&gt;
&lt;br /&gt;
Využijeme pole na to, aby sme si uložili frekvencie všetkých tónov, ktoré bude náš muzikantský program poznať. Pole je taká premenná, do ktorej sa dá uložiť viacero hodnôt naraz, nielen jedna. Napríklad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[3];  // premenna a schovava tri cele cisla&lt;br /&gt;
 &lt;br /&gt;
 a[0] = 10; // prve z nich nech je 10&lt;br /&gt;
 a[1] = 11; // do druheho vloz 11&lt;br /&gt;
 a[2] = 12; // a posledne nech obsahuje 12&lt;br /&gt;
 &lt;br /&gt;
 int b = a[0] + a[1] + a[2];  // vypocitaj sucet vsetkych troch hodnot a uloz ho do premennej b&lt;br /&gt;
 &lt;br /&gt;
 Serial.print(&amp;quot;Sucet je: &amp;quot;);  // vypis vysledok na seriovy port&lt;br /&gt;
 Serial.println(b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na prístup k jednotlivým hodnotám v poli môžeme použiť aj premennú (niekedy sa jej hovorí indexová, lebo poradie prvku, ku ktorému sa pristupuje sa volá index):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[10];&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)   &lt;br /&gt;
 {&lt;br /&gt;
   a[i] = 1 + i * 2;   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int sucet = 0;&lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(a[i]);&lt;br /&gt;
   if (i &amp;lt; 9) Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 Serial.print(&amp;quot;=&amp;quot;);&lt;br /&gt;
 Serial.println(sucet);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistite, čo presne urobí tento program?&lt;br /&gt;
&lt;br /&gt;
Tak teda naspäť k nášmu hodobníckemu programu. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #define TEMPO 24    // cim vyssia hodnota, tym pomalsie tempo&lt;br /&gt;
 &lt;br /&gt;
 // pocet not v melodii&lt;br /&gt;
 int dlzka = 25;  &lt;br /&gt;
 &lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &lt;br /&gt;
                   &#039;C&#039;, &#039;h&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;g&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;e&#039;, &#039;d&#039;, &#039;c&#039;, &#039;c&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 16, 16,&lt;br /&gt;
                     8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 16, 16}; &lt;br /&gt;
 &lt;br /&gt;
 // ake tony pozname - pouzili sme specialne znaky na oznacenie poltonov, zatial nam stacia 2 oktavy &lt;br /&gt;
 char tony[] = {&#039;c&#039;, &#039;#&#039;, &#039;d&#039;, &#039;%&#039;, &#039;e&#039;, &#039;f&#039;, &#039;$&#039;, &#039;g&#039;, &#039;^&#039;, &#039;a&#039;, &#039;*&#039;, &#039;h&#039;,&lt;br /&gt;
                &#039;C&#039;, &#039;!&#039;, &#039;D&#039;, &#039;~&#039;, &#039;E&#039;, &#039;F&#039;, &#039;+&#039;, &#039;G&#039;, &#039;-&#039;, &#039;A&#039;, &#039;/&#039;, &#039;H&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // hodnoty frekvencii tonov a poltonov sme si nasli na internete:&lt;br /&gt;
 // radkon.eu/projects/other/tones.html&lt;br /&gt;
 &lt;br /&gt;
 int frekvencie[] = {261, 277, 293, 311, 329, 349, 369, 391, 415, 440, 466, 493, 523, 554, 587, 622, 659, 698, 739, 783, 830, 880, 932, 987};&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11, OUTPUT);                    // sirenku pripojime na D11&lt;br /&gt;
   &lt;br /&gt;
   // raz zahraj celu melodiu&lt;br /&gt;
   for (int i = 0; i &amp;lt; dlzka; i++)&lt;br /&gt;
     hraj(melodiaT[i], melodiaD[i]);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long p = d * f / 1000L;&lt;br /&gt;
   long polPeriody = 500000L / f;&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hraj(char nota, int trvanie)&lt;br /&gt;
 {&lt;br /&gt;
  int kde = 0;&lt;br /&gt;
  while (tony[kde] != nota) kde++;  // najdeme index pozadovaneho tonu&lt;br /&gt;
  ton(frekvencie[kde], trvanie * TEMPO);  // a zahrame ho&lt;br /&gt;
 }&lt;br /&gt;
                 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // melodiu zahrame priamo vo funkcii setup, aby sa po resete zahrala iba raz a nehrala stale dookola&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aká je to pesnička? Kto naprogramuje vianočnú melódiu? :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Odpoveď Sama: Pesnička je to &amp;quot;jedna druhej riekla keď koláče atď.&amp;quot; a pesničku by som naprogramovať aj ja.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Arduino&amp;diff=454</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Arduino&amp;diff=454"/>
		<updated>2017-01-03T15:18:24Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#FAFFDA;&amp;quot;&amp;gt;&lt;br /&gt;
Slovo Arduino označuje niekoľko vecí: &lt;br /&gt;
* je to počítač (malá doska plošného spoja osadená väčšinou jednočipovým mikropočítačom Atmel AVR ATMega328) &lt;br /&gt;
* je to programovací jazyk v ktorom sa tento počítač dá programovať&lt;br /&gt;
* je to program - programovacie vývojové prostredie, pomocou ktorého sa program zapisuje a zároveň cez USB kábel prenáša a spúšťa na Arduine&lt;br /&gt;
* sú to všetky tieto veci dokopy.&lt;br /&gt;
&lt;br /&gt;
Arduino sa vyrába v rozličných verziách.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_uno.jpg|Arduino Uno]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Uno - najrozšírenejší model Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_nano.jpg|Arduino Nano|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Nano - funguje rovnako ako Uno, ale je oveľa menšie - takéto budeme používať aj my&lt;br /&gt;
&lt;br /&gt;
[[Image:robot_acrob.jpg|Robot Acrob]]&amp;lt;br&amp;gt;&lt;br /&gt;
Robot Acrob - používa dosku, ktorá sa podobá na Arduino, ale funguje rovnako, mali sme ich požičané od združenia Robotika.SK na krúžku&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328.jpg|ATMega328|250px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Jednočipový mikropočítač ATMega328, ktorý je základom Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328_pinout.png|ATMega328 pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
Funkcie jednotlivých vývodov jednočipového mikropočítača ATMega328&lt;br /&gt;
&lt;br /&gt;
Podrobné informácie o jednočipovom mikropočítači ATMega328 sa dajú nájsť v jeho [[Media:atmega328datasheet.pdf|datasheete]].&lt;br /&gt;
&lt;br /&gt;
Každý počítač sa skladá z týchto základných častí:&lt;br /&gt;
&lt;br /&gt;
[[Image:pocitac.png|základná schéma počítača]]&lt;br /&gt;
&lt;br /&gt;
Pamäť uchováva všetky údaje (obrázky, zvuky, texty, čísla, a podobne) a programy, ktoré sa vykonávajú príkaz za príkazom v procesore. Pamäť s procesorom sú navzájom prepojené zbernicou, ktorá medzi nimi prenáša údaje. Aby s počítač mohol komunikovať so svojím okolím - napr. s človekom, alebo s vonkajšími pamäťami, na ktorých ukladá rozsiahle údaje (pevné disky, DVD, Internet), tak sú na zbernici pripojené aj vstupné a výstupné zariadenia.&lt;br /&gt;
&lt;br /&gt;
To znamená, programy pozostávajú z postupnosti príkazov:&lt;br /&gt;
&lt;br /&gt;
 príkaz1&lt;br /&gt;
 príkaz2&lt;br /&gt;
 ...&lt;br /&gt;
 príkazN&lt;br /&gt;
&lt;br /&gt;
V každom okamihu procesor naraz vykonáva iba jeden príkaz, postupne od začiatku programu do konca. V programoch sa môžu vyskytovať cykly:&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 opakuj:&lt;br /&gt;
   príkaz&lt;br /&gt;
   príkaz&lt;br /&gt;
 koniec cyklu&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
- ak treba nejakú skupinu príkazov niekoľkokrát zopakovať, alebo podmienky, ktoré dovoľujú vykonať rozličné skupiny príkazov, podľa toho, ktorá z nich je práve vhodná (väčšinou na základe otestovania nejakej podmienky):&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 platí podmienka?&lt;br /&gt;
 ak áno, vykonaj túto skupinu príkazov:&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 ak nie, vykonaj inú skupinu príkazov&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 a potom pokračuj v každom prípade ďalej:&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Arduino je teda počítač, ktorý má svoju pamäť, procesor a nahrávame do neho cez kábel program, ktorý najskôr naprogramujeme pomocou prostredia Arduino:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_program.png|program zapisovaný v prostredí Arduino|450px]].&lt;br /&gt;
&lt;br /&gt;
Nato, aby sme mohli pracovať s prostredím Arduino si ho potrebujeme downloadnut a nainštalovať zo stránky [http://arduino.cc arduino.cc] - nainštalujte si &amp;quot;Windows Installer&amp;quot; - to by malo nainštalovať aj ovládače (drivers).&lt;br /&gt;
&lt;br /&gt;
Program sa do Arduina nahráva cez prevodník USB-Serial (ktorý je v bežných arduinach už zabudovaný - ale Acroby ich potrebujú):&lt;br /&gt;
&lt;br /&gt;
[[Image:usb_serial.jpg|prevodník USB-Serial|300px]]&lt;br /&gt;
&lt;br /&gt;
Arduinové výstupy sú označené D0-D13 a A0-A5. Napájanie sa privádza na piny VCC a AVCC (+5V) a GND (zem, 0V). RXD, TXD označujú sériový port na komunikáciu s inými počítačmi alebo zariadeniami (napr. s PC), motory sa väčšinou pripájajú na piny D9 a D10.&lt;br /&gt;
&lt;br /&gt;
Na väčšine Arduin je pin D13 pripojený na zabudovanú svietivú diódu (LED). Prvý program, ktorý napíšeme túto LEDku rozbliká.&lt;br /&gt;
&lt;br /&gt;
Každý arduinový program obsahuje aspoň tieto dve funkcie:&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;
  // put your setup code here, to run once:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcia setup() sa spustí vždy po zapnutí počítača - hneď po spustení programu. Jej úlohou je ponastavovať všetky zariadenia, ktoré sú k Arduinu pripojené. Funkcia loop() sa spustí, keď setup() skončí a ak loop() skončí (čo nemusí...), tak sa spúšťa znovu a znovu, stále dookola.&lt;br /&gt;
&lt;br /&gt;
Pre rozblikanie LED musíme najskôr počítaču nastaviť pin D13 ako výstupný. Každý digitálny pin sa dá používať buď ako vstupný (vtedy Arduino z nožičky integrovaného obvodu vie prečítať, či tam je logická 0 (nulové napätie), alebo logická 1 (napätie 5V). Pin nemôže byť naraz aj vstupný aj výstupný, musíme sa rozhodnúť ako ho chceme používať a podľa toho ho vo fukcii setup() nastaviť. Robí sa to príkazom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  pinMode(číslo_pinu, režim); // pričom režim je buď INPUT, alebo OUTPUT  (je možná aj tretia možnosť, ale o tom až niekedy neskôr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keď je pin nastavený ako výstupný, tak vo funkcii loop() môžeme LED kedykoľvek zasvietiť zapísaním logickej jednotky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, HIGH);  // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 1)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podobne, LED zhasneme takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, LOW);   // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 0)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arduino však stihne za sekundu vykonať 16 miliónov inštrukcií (taktovacia frekvencia procesora je 16 MHz) a tak, aby sme si blikanie LED stihli všimnúť, musíme po každej zmene pinu nejaký čas počkať - na to slúži funkcia delay(čas_v_milisekundách). Celý program na blikanie LED teda vyzerá takto:&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);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby sa nám Arduino programovalo jednoduchšie, ak ho máme pripojené káblom, môžeme z neho cez kábel (čiže cez sériový port) do PC poslať nejakú textovú správu:&lt;br /&gt;
&lt;br /&gt;
Vo funkcii setup() najskôr nastavíme rýchlosť prenosu (počet prenesených bitov za sekundu), napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a potom môžeme používať funkcie na vstup a výstup cez sériový port, napr. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Ahoj&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celý takýto text sa odvysiela cez jediný pin TXD mikropočítača ATMega328 (pozri obrázok hore). Ako sa to udeje?&lt;br /&gt;
Každý znak (písmeno, číslica, znamienko a pod.) má nejaký číselný kód - väčšinou sa na to používa medzinárodný štandard ASCII. Vidíme, že napríklad znak &#039;A&#039; má kód 65, znak &#039;o&#039; má kód 111, atď.&lt;br /&gt;
&lt;br /&gt;
[[Image:ascii-codes-table.png|ASCII tabuľka|300px]]&lt;br /&gt;
&lt;br /&gt;
Tieto kódy sú v Arduine uložené v dvojkovej sústave, tak ako všetky ostatné čísla! Počítače totiž všetky čísla ukladajú v dvojkovej sústave, keďže na to stačí, aby na príslušnom pine bolo kladné napätie (logická jednotka) alebo nulové napätie (logická nula).&lt;br /&gt;
&lt;br /&gt;
Ľudia na výpočty používajú desiatkovú sústavu, keďže majú 10 prstov, je im prirodzenejšia: obsahuje 10 číslic: 0, 1, 2, ..., 9.&lt;br /&gt;
Za poslednou číslicou nasleduje číslo 10 zložené z dvoch číslic, za posledným dvojciferným číslo 99 nasleduje číslo 100, atď. V čísle, ktoré má viac číslic stojí každá číslica na nejakom mieste, napr. v čísle 2016: je číslica 6 na mieste jednotiek (má hodnotu 6 x 1), číslica 1 na mieste desiatok (má hodnotu 1 x 10), číslica 0 na mieste stoviek (hodnota 0 x 100) a číslica 2 na mieste tisícok (hodnota 2 x 1000). Podobne to funguje aj v dvojkovej sústave, ale namiesto 10 číslic máme k dispozícii iba číslice dve: 0 a 1. Čísla tam nasledujú za sebou takto:&lt;br /&gt;
&lt;br /&gt;
     0      - zodpovedá 0 v desiatkovej sústave)&lt;br /&gt;
     1      - 1&lt;br /&gt;
    10      - 2&lt;br /&gt;
    11      - 3&lt;br /&gt;
   100      - 4&lt;br /&gt;
   101      - 5&lt;br /&gt;
   110      - 6&lt;br /&gt;
   111      - 7&lt;br /&gt;
  1000      - 8&lt;br /&gt;
  1001      - 9&lt;br /&gt;
  1010      - 10&lt;br /&gt;
  1011      - 11&lt;br /&gt;
  1100      - 12&lt;br /&gt;
  1101      - 13&lt;br /&gt;
  1110      - 14&lt;br /&gt;
  1111      - 15&lt;br /&gt;
 10000      - 16&lt;br /&gt;
 10001      - 17&lt;br /&gt;
  atď.&lt;br /&gt;
&lt;br /&gt;
ľahko si všimneme, že aj tu majú číslice svoje &amp;quot;rády&amp;quot;, napr. v čísle 10110 (čiže 22 v desiatkovej sústave) máme:&lt;br /&gt;
  0 - rád jednotiek &lt;br /&gt;
  1 - rád dvojek (1 x 2) &lt;br /&gt;
  1 - rád štvoriek (1 x 4)&lt;br /&gt;
  0 - rád osmičiek&lt;br /&gt;
  1 - ráď šestnástok (1 x 16)&lt;br /&gt;
&lt;br /&gt;
 1 x 2 + 1 x 4 + 1 x 16 = 22&lt;br /&gt;
&lt;br /&gt;
Takže na odvysielanie čísla 8-bitového čísla 65 cez pin TXD sa tam postupne odvysielajú číslice 01000001 - a pri rýchlosti 115200 číslic za sekundu tam každá bude iba 1/115200 s, čo je približne 8,68 mikrosekúnd.&lt;br /&gt;
 &lt;br /&gt;
Predchádzajúci program upravme tak, aby okrem blikania LEDkou aj vypisoval texty ON a OFF:&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);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  Serial.println(&amp;quot;ON&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  Serial.println(&amp;quot;OFF&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dobrý robot by ale iba s výstupmi nevystačil, musí nejakým spôsobom získavať informácie z prostredia - pomocou senzorov, ktoré tvoria jeho vstupné zariadenia. Napríklad ak nárazník narazí do prekážky, stlačí sa mikrospínač a hodnota na výstupe z vypínača sa zmení z logickej nuly na logickú jednotku. Potrebujeme napísať program, ktorý hodnotu na svojom pine dokáže prečítať.&lt;br /&gt;
&lt;br /&gt;
Pin 2 nastavíme na vstupný:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 pinMode(2, INPUT);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a funkcia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 digitalRead(2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nám vráti buď 0 alebo 1 - podľa toho, či je na pine 2 logická nula, alebo jednotka. Túto hodnotu môžeme použiť napríklad v podmienke, ktorá sa v jazyku C++ (na ktorom je Arduino založené) používa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 if (podmienka) {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak je podmienka splnená&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak podmienka nie je splnená, čiže neplatí&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
časť else je nepovinná - môže a nemusí tam byť. V našom prípade môžeme program naprogramovať tak, že pri stlačení tlačidla LED zasvieti:&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;
 {&lt;br /&gt;
   pinMode(2,INPUT);&lt;br /&gt;
   pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   if (digitalRead(2)) {&lt;br /&gt;
     digitalWrite(13, HIGH);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
     digitalWrite(13,LOW);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako to zapojiť?&lt;br /&gt;
&lt;br /&gt;
Mikrospínač, ktorý je v stavebnici Acroba funguje tak, že bez stlačenia sú prepojené len kontakty cez dlhšie strany obdĺžnika a po stlačení sú prepojené všetky 4 kontakty. &lt;br /&gt;
&lt;br /&gt;
[[Image:microswitch.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Preto do pinu D2 pripojíme jeden výstup z tlačidla. Druhý výstup tlačidla spojíme s napájaním (VCC), ktoré má hodnotu napätia ako logická 1. Tým zabezpečíme, že pri stlačení tlačidla bude na D2 logická jednotka. Lenže, ak tlačidlo nestlačíme - logická nula tam nebude, bude tam len pripojený &amp;quot;vo vzduchu visiaci&amp;quot; káblik a to nie je dobre. Preto ho treba prepojiť so zemou. Ale pozor - ak by sme ho so zemou prepojili len tak - priamo, tak by sme pri stlačení tlačidla spôsobili skrat - priamymi vodičmi by bolo spojené VCC (plus na baterke) so zemou (mínus na baterke) a takúto situáciu nesmieme dopustiť ani na krátky okamih. Preto pin D2 spojíme so zemou cez rezistor s dostatočne veľkým odporom, napr. 2 kOhm:&lt;br /&gt;
&lt;br /&gt;
[[Image:schema_tlacidlo.png|zapojenie s mikroswitchom]]&lt;br /&gt;
&lt;br /&gt;
Robot Acrob je poháňaný dvoma servomotormi. Servomotor je zaujímavá súčiastka - je to motor s prevodovkou a riadiacou elektronikou. Vnútri vyzerá nejak takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:servo_motor.jpg|vnútornosti servomotorov]]&lt;br /&gt;
&lt;br /&gt;
používajú sa väčšinou v robotických ramenách, pričom sa môžu otáčať v rozsahu 0-180 stupňov (90 je stredná poloha). Viac otočiť im nedovolí zabudovaná zarážka. Potenciometer je v skutočnosti rezistor s premenlivou hodnotou a používa sa ako spätná väzba, ktorá riadiacu elektroniku serva informuje o tom, ako je práve servo otočené. Cez signálny káblik (biely, alebo žltý) elektronika dostáva pokyn z počítača (napr. z Arduina), do akej polohy sa má servo nastaviť. Elektronika porovná aktuálnu hodnotu s požadovanou a podľa toho rozbehne motor správnym smerom a vhodnou rýchlosťou.&lt;br /&gt;
&lt;br /&gt;
Servá, ktoré sú zabudované do Acrobov, sú tzv. modifikované servá - zarážka, ktorá bráni súvislému otáčaniu je odstránená a potenciometer je nahradený rezistorom so zafixovanou - pevnou hodnotou. Elektronika serva si preto &amp;quot;myslí&amp;quot;, že servo je stále v strede (na hodnote 90) a pri pokyne nastavenia do polohy napr. 120 sa roztočí jedným smerom a bude sa tak točiť donekonečna. Pri pokyne napr. 30 sa bude točiť donekonečna opačným smerom. Pri požadovenej polohe 90 sa zastaví a pri polohách blízko 90 sa bude otáčať iba pomaly, pretože už je skoro &amp;quot;v cieli&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ako servo riadiť - ako mu vysvetliť, že sa má nastaviť do požadovanej polohy napr. 30 stupňov?&lt;br /&gt;
&lt;br /&gt;
Riadiaci signál do serva (biely alebo žltý káblik) by mal každých 20 ms obsahovať pulz (logickú jednotku na krátky okamih). Dĺžka tohto okamihu určuje do akej polohy sa servo má nastaviť. Typicky to býva od 0.5 - 1.5 ms. Nasledujúci program teda roztočí servo jedným smerom:&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;
 {&lt;br /&gt;
   pinMode(10, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(10, LOW);&lt;br /&gt;
   delay(20);&lt;br /&gt;
   digitalWrite(10, HIGH);&lt;br /&gt;
   delayMicroseconds(500);&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program vyšle na pin D10 krátky pulz 0.5 ms každých 20 ms. Toľko teória. Arduino je však vymyslené tak, aby sme sa nemuseli starať o každý bit sami a stačí použiť knižnicu Servo, ktorá sa o generovanie riadiaceho signálu stará sama v spolupráci so zabudovanými časovačmi počítača. Program, ktorý pohne robotom teda vyzerá takto:&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;
 Servo lavy, pravy; &lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   lavy.attach(9);  // lave servo je na pine 9&lt;br /&gt;
   pravy.attach(10);  // prave servo je na pine 10&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // rozbehni sa&lt;br /&gt;
   lavy.write(120);&lt;br /&gt;
   pravy.write(30);&lt;br /&gt;
   // tri sekundy bez&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   // zastan&lt;br /&gt;
   lavy.write(90);&lt;br /&gt;
   pravy.write(90);&lt;br /&gt;
   // tri sekundy cakaj&lt;br /&gt;
   delay(3000);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;height: 1px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#EAFFF3;&amp;quot;&amp;gt;&lt;br /&gt;
K Acrobu môžeme pripojiť malú sirénku, ktorá funguje ako reproduktor:&lt;br /&gt;
&lt;br /&gt;
[[Image:piezo.png|malá signálna siréna]]&lt;br /&gt;
&lt;br /&gt;
Sirénku si môžeme predstaviť ako taký malý reproduktor. Reproduktor vytvára zvuk tak, že po dvoch drôtoch doň prichádza premenlivé napätie pripojené na jeho cievku elektromagnetu. Elektromagnet je pevne spojený s kuželovitou kmitajúcou membránou a vytvorené magnetické pole ho striedavo priťahuje a odpudzuje k pevému magnetu, ktorý je tiež súčasťou reproduktora. &lt;br /&gt;
&lt;br /&gt;
[[Image:how_speakers_work.png|čo sú reproduktory?]]&lt;br /&gt;
&lt;br /&gt;
Membrána reproduktora naráža na častice vzduchu, rozkmitá ich a zvuk sa v prostredí šíri ako pozdĺžne kmitajúca vlna mechanického vlnenia ďalej. Na vytvorenie čistého zvuku by sme mali napätie privádzané do reproduktora meniť plynule&lt;br /&gt;
&lt;br /&gt;
[[Image:sinusoida.png|plynule sa meniace napätie]]&lt;br /&gt;
&lt;br /&gt;
ale pri využití digitálnej elektroniky, ktoré vie na výstupe generovať iba 0 a 1 si to môžeme zjednodušiť a pomocou pravidelného striedania digitálneho signálu medzi 0 a 1 môžeme vydať počuteľný tón. Dôležité je hlavne to, aby frekvencia kmitania sedela s frekvenciou požadovaného tónu. &lt;br /&gt;
&lt;br /&gt;
[[Image:hranaty_signal.png|digitálna aproximácia sinusoidy]]&lt;br /&gt;
&lt;br /&gt;
Treba dať pozor na pripojenie - jedna strana sirénky je ozačená ako &amp;quot;+&amp;quot; - tú môžeme pripojiť priamo na niektorý digitálny výstupný pin a riadiť ho rovnako ako pri blikaní LEDkou, len trochu rýchlejšie, druhú stranu sirénky pripojíme priamo na zem.&lt;br /&gt;
&lt;br /&gt;
Hudobné tóny rozličných výšok sa líšia svojimi frekvenciami. Tón s veľkou frekvenciou (za sekundu membrána kmitne veľakrát) je vysoký tón, naopak tón s nízkou frekvenciou kmitania membrány je nízky tón. Človek typicky počuje frekvencie okolo 20-15000 Hz. Nasledujúci program teda vydá tón malé &#039;A&#039;, ktorý má frekvenciu 440 Hz:&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;
 {&lt;br /&gt;
   pinMode(11,OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(11, HIGH);&lt;br /&gt;
   delayMicroseconds(1136);     // 1136 usec je dlzka trvania jednej pol-periody&lt;br /&gt;
   digitalWrite(11,LOW);        // ak kmitame 440-krat za sekundu, tak dlzka jedneho&lt;br /&gt;
   delayMicroseconds(1136);     // kmitnutia je 1/440 s, co je 0.0022727 s, polovica&lt;br /&gt;
 }                              // z toho je 0.0011363 s = 1.1363 ms = 1136.3 usec&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak chceme, aby robot zahral nejakú zaujímavejšiu pesničku, tak by sa nám hodila funkcia, ktorá vie zahrať tón s ľubovoľnou frekvenciou a bolo by fajn, keby sme tej funkcii vedeli povedať ako dlho ten tón znie. Funkcia? a to je čo? Funkciu si môžeme predstaviť ako &amp;quot;vlastný blok&amp;quot; v programovacom jazyku pre LEGO MINDSTORMS. Je to kus programu, ktorý môžeme vyvolať opakovane z rôznych miest nášho programu - a môžeme mu zadať nejaké parametre, ktoré určujú, čo presne má urobiť. Každý náš arduinovský program už pozostával z dvoch funkcií - setup() a loop(). Takýchto funkcií môžeme pridať koľko chceme a vyvolať ich z hociktorého miesta programu. Funkcii môžeme predpísať ľubovoľný počet parametrov - každý z nich musí mať stanovený &amp;quot;typ&amp;quot; - čiže napr. či je to číslo, logická hodnota, znak, alebo reťazec znakov. Napríklad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void scitaj(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(&amp;quot;Sucet je: &amp;quot;);&lt;br /&gt;
   Serial.println(a + b);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
je funkcia, ktorá dostane dva parametre a, b, a cez sériový port vypíše text &amp;quot;Sucet je XY&amp;quot;, kde XY bude skutočný súčet hodnôt a, b. Takúto funkciu môžeme z programu vyvolať napr. takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 scitaj(3, 4);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ale za parametre môžeme dosadiť aj hodnoty z premenných, napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int premenna = 12;&lt;br /&gt;
 int ina_premenna;&lt;br /&gt;
  &lt;br /&gt;
 ina_premenna = 10;&lt;br /&gt;
 &lt;br /&gt;
 scitaj(premenna, ina_premenna);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takže teraz napíšme funkciu, ktorá bude zadanou frekvenciou (určenou v Hz) kmitať stanovenú dobu (určenú v ms). Namiesto typu int použijeme typ long, lebo do premenných typu long sa vojdú oveľa väčšie čísla - čo potrebujeme, lebo budeme počítať v mikrosekundách (miliontinách sekundy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // f - frekvencia v Hz, d - dlzka trvania tonu v ms&lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long t = 500000 / f;     // ako dlho trva polovica jednej periody tonu s frekvenciou f? &lt;br /&gt;
   long p = d * f / 1000;   // kolko celych period sa vojde do casoveho useku dlzky d?&lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++) &lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(t);  // namiesto 1136 usec ako v pripade tonu s frekvenciou 440 Hz &lt;br /&gt;
     digitalWrite(11,LOW);  // budeme cakat t usec, ktore sme vypocitali z frekvencie f&lt;br /&gt;
     delayMicroseconds(t);  //  1 / f - v sekundach, takze este krat milion (na mikrosekundy) a deleno 2&lt;br /&gt;
   }                        // co je to iste ako 500000 / f&lt;br /&gt;
   delay(50);  // na konci kratka prestavka, aby boli tony zretelne oddelene a nezlievali sa&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tomto programe sú dva zaujímavé výpočty. Prvý z nich využíva fakt, že vzťah medzi frekvenciou a periódou je T = 1 / f a zároveň f = 1 / T. V prvom riadku funkcie teda vypočítame koľko mikrosekúnd trvá polovica periódy, ak sa má za jednu sekundu zopakovať f kmitnutí signálu nahor a nadol.&lt;br /&gt;
Druhý výpočet slúži na to, aby sme vedeli koľkokrát sa má kmitnutie nahor a nadol zopakovať (to je tá podmienka i &amp;lt; p v cykle for). Zistíme to tak, že vynásobíme dĺžku trvania tónu (d) frekvenciou (f). Napríklad ak kmitáme frekvenciou 440 Hz a tón má znieť 1 sekundu, tak potrebujeme kmitnúť 1 * 440 = 440-krát. Alebo ak má tón znieť 2 sekundy, tak potrebujeme kmitnúť 2 * 440 = 880-krát. Ak by mal znieť iba pol sekundy, tak by to bolo 0,5 * 440 = 220-krát. Lenže dĺžka trvania tónu (d) je zadaná v milisekundách, takže aby sme dostali správny výsledok, musíme ho ešte vydeliť 1000 (čím ako keby prevedieme hodnotu d na milisekundy). Cyklus for, ktorý sme použili je najbežnejšie používaný cyklus, pomocou ktorého môžeme nejakú skupinu príkazov uzavretú v zložených zátvorkách zopakovať viackrát. Zapisuje sa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 for (príkaz_ktory_sa_vykona_na_zaciatku; podmienka_opakovania; prikaz_ktory_sa_vykona_po_kazdom_opakovani)&lt;br /&gt;
 {&lt;br /&gt;
   //...prikazy...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Prikaz for teda vŽdy vykoná najskôr svoj prvý príkaz za zátvorkou - v našom prípade vytvorí premennú typu int a nastaví ju na hodnotu 0. Potom skontroluje, či platí podmienka opakovania - v našom prípade, či počet opakovaní (premenná i) je stále menší ako stanovený počet opakovaní (premenná p) - ak áno, prvýkrát vykoná príkazy v tele cyklu (medzi zloženými zátvorkami). Potom nasleduje príkaz, ktorý sa vykoná po každom opakovaní cyklu - posledný výraz v okrúhlych zátvorkách za slovíčkom for - v našom prípade &amp;quot;i++&amp;quot;, čo znamená zvýšiť premennú i o jedna a následne sa zasa skontroluje, či stále platí podmienka opakovania. Ak nie, cyklus skončil a program pokračuje ďalším príkazom za telom cyklu. Ak je podmienka stále splnená, znovu sa vykonajú príkazy v tele cyklu, príkaz po každom opakovaní a zasa sa otestuje podmienka - a takto až dovtedy, kým podmienka prestane byť splnená (čo v krajnom prípade nemusí byť nikdy - v takom prípade cyklus nikdy neskončí).&lt;br /&gt;
&lt;br /&gt;
Keď máme funkciu hotovú, môžeme ju využiť na to, aby robot zahral známu melódiu Kohútik jarabí :-)  C-D-E-F-F-F-F-E-D-E-E-E-E-D-C-D-D-D-D-E-D-C-C-C s dĺžkami nôt 1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1, kde 1 je polová a 2 je celá nota (polová má polovičnú dobu trvania):&lt;br /&gt;
&lt;br /&gt;
Aby to bolo zaujímavejšie na digitálne výstupy D0, D1, D2, D3 môžeme zapojiť rozličné LEDky a spolu s jednotlivými tónmi C,D,E,F zapínať jednotlivé LED - získame takto farebnú hudbu :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_farebna_hudba.jpg|farebná hudba na robotovi Acrob]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void ton(long frekvencia, long trvanie)&lt;br /&gt;
 {&lt;br /&gt;
   long p = trvanie * frekvencia / 1000L;   // L na konci cisla zdoraznuje&lt;br /&gt;
   long polPeriody = 500000L / frekvencia;  // ze ide o konstantu typu long, nemusi tam byt&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
    pinMode(11, OUTPUT);  // pipac&lt;br /&gt;
    &lt;br /&gt;
    pinMode(0, OUTPUT);   // farebna hudba - 4 LED&lt;br /&gt;
    pinMode(1, OUTPUT);&lt;br /&gt;
    pinMode(2, OUTPUT);&lt;br /&gt;
    pinMode(3, OUTPUT);   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // dostane cislo LED 1-4, tu zasvieti a ostatne zhasne&lt;br /&gt;
 void led(int ktora)&lt;br /&gt;
 {&lt;br /&gt;
   if (ktora == 1) digitalWrite(0, HIGH);&lt;br /&gt;
   else digitalWrite(0, LOW);&lt;br /&gt;
   if (ktora == 2) digitalWrite(1, HIGH);&lt;br /&gt;
   else digitalWrite(1, LOW);&lt;br /&gt;
   if (ktora == 3) digitalWrite(2, HIGH);&lt;br /&gt;
   else digitalWrite(2, LOW);&lt;br /&gt;
   if (ktora == 4) digitalWrite(3, HIGH);&lt;br /&gt;
   else digitalWrite(3, LOW);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // C: 262&lt;br /&gt;
 // D: 293&lt;br /&gt;
 // E: 330&lt;br /&gt;
 // F: 349&lt;br /&gt;
 void hrajC(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(1);&lt;br /&gt;
   ton(262, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajD(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(2);&lt;br /&gt;
   ton(293, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajE(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(3);&lt;br /&gt;
   ton(330, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajF(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(4);  &lt;br /&gt;
   ton(349, dlzka);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 { &lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajF(1000);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajC(500); &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môže byť? Neviem, asi by bolo ešte lepšie, ak by sme melódiu nemuseli zapisovať takýmto spôsobom. Jednak tu máme iba funkcie na 4 tóny a na klavíri býva aj viac ako 80 klávesov a tak vytvárať funkciu pre každý tón nebude veľmi praktické. Skúsme to ešte trochu lepšie - použijeme pole. &lt;br /&gt;
&lt;br /&gt;
Využijeme pole na to, aby sme si uložili frekvencie všetkých tónov, ktoré bude náš muzikantský program poznať. Pole je taká premenná, do ktorej sa dá uložiť viacero hodnôt naraz, nielen jedna. Napríklad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[3];  // premenna a schovava tri cele cisla&lt;br /&gt;
 &lt;br /&gt;
 a[0] = 10; // prve z nich nech je 10&lt;br /&gt;
 a[1] = 11; // do druheho vloz 11&lt;br /&gt;
 a[2] = 12; // a posledne nech obsahuje 12&lt;br /&gt;
 &lt;br /&gt;
 int b = a[0] + a[1] + a[2];  // vypocitaj sucet vsetkych troch hodnot a uloz ho do premennej b&lt;br /&gt;
 &lt;br /&gt;
 Serial.print(&amp;quot;Sucet je: &amp;quot;);  // vypis vysledok na seriovy port&lt;br /&gt;
 Serial.println(b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na prístup k jednotlivým hodnotám v poli môžeme použiť aj premennú (niekedy sa jej hovorí indexová, lebo poradie prvku, ku ktorému sa pristupuje sa volá index):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[10];&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)   &lt;br /&gt;
 {&lt;br /&gt;
   a[i] = 1 + i * 2;   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int sucet = 0;&lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(a[i]);&lt;br /&gt;
   if (i &amp;lt; 9) Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 Serial.print(&amp;quot;=&amp;quot;);&lt;br /&gt;
 Serial.println(sucet);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistite, čo presne urobí tento program?&lt;br /&gt;
&lt;br /&gt;
Tak teda naspäť k nášmu hodobníckemu programu. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #define TEMPO 24    // cim vyssia hodnota, tym pomalsie tempo&lt;br /&gt;
 &lt;br /&gt;
 // pocet not v melodii&lt;br /&gt;
 int dlzka = 25;  &lt;br /&gt;
 &lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &lt;br /&gt;
                   &#039;C&#039;, &#039;h&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;g&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;e&#039;, &#039;d&#039;, &#039;c&#039;, &#039;c&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 16, 16,&lt;br /&gt;
                     8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 16, 16}; &lt;br /&gt;
 &lt;br /&gt;
 // ake tony pozname - pouzili sme specialne znaky na oznacenie poltonov, zatial nam stacia 2 oktavy &lt;br /&gt;
 char tony[] = {&#039;c&#039;, &#039;#&#039;, &#039;d&#039;, &#039;%&#039;, &#039;e&#039;, &#039;f&#039;, &#039;$&#039;, &#039;g&#039;, &#039;^&#039;, &#039;a&#039;, &#039;*&#039;, &#039;h&#039;,&lt;br /&gt;
                &#039;C&#039;, &#039;!&#039;, &#039;D&#039;, &#039;~&#039;, &#039;E&#039;, &#039;F&#039;, &#039;+&#039;, &#039;G&#039;, &#039;-&#039;, &#039;A&#039;, &#039;/&#039;, &#039;H&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // hodnoty frekvencii tonov a poltonov sme si nasli na internete:&lt;br /&gt;
 // radkon.eu/projects/other/tones.html&lt;br /&gt;
 &lt;br /&gt;
 int frekvencie[] = {261, 277, 293, 311, 329, 349, 369, 391, 415, 440, 466, 493, 523, 554, 587, 622, 659, 698, 739, 783, 830, 880, 932, 987};&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11, OUTPUT);                    // sirenku pripojime na D11&lt;br /&gt;
   &lt;br /&gt;
   // raz zahraj celu melodiu&lt;br /&gt;
   for (int i = 0; i &amp;lt; dlzka; i++)&lt;br /&gt;
     hraj(melodiaT[i], melodiaD[i]);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long p = d * f / 1000L;&lt;br /&gt;
   long polPeriody = 500000L / f;&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hraj(char nota, int trvanie)&lt;br /&gt;
 {&lt;br /&gt;
  int kde = 0;&lt;br /&gt;
  while (tony[kde] != nota) kde++;  // najdeme index pozadovaneho tonu&lt;br /&gt;
  ton(frekvencie[kde], trvanie * TEMPO);  // a zahrame ho&lt;br /&gt;
 }&lt;br /&gt;
                 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // melodiu zahrame priamo vo funkcii setup, aby sa po resete zahrala iba raz a nehrala stale dookola&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aká je to pesnička? Kto naprogramuje vianočnú melódiu? :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Odpoveď Sama: Pesnička je to &amp;quot;jedna druhej riekla keď koláče atď. a pesničku by som naprogramovať aj ja.&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Arduino&amp;diff=453</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Arduino&amp;diff=453"/>
		<updated>2017-01-03T15:17:01Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#FAFFDA;&amp;quot;&amp;gt;&lt;br /&gt;
Slovo Arduino označuje niekoľko vecí: &lt;br /&gt;
* je to počítač (malá doska plošného spoja osadená väčšinou jednočipovým mikropočítačom Atmel AVR ATMega328) &lt;br /&gt;
* je to programovací jazyk v ktorom sa tento počítač dá programovať&lt;br /&gt;
* je to program - programovacie vývojové prostredie, pomocou ktorého sa program zapisuje a zároveň cez USB kábel prenáša a spúšťa na Arduine&lt;br /&gt;
* sú to všetky tieto veci dokopy.&lt;br /&gt;
&lt;br /&gt;
Arduino sa vyrába v rozličných verziách.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_uno.jpg|Arduino Uno]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Uno - najrozšírenejší model Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_nano.jpg|Arduino Nano|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Arduino Nano - funguje rovnako ako Uno, ale je oveľa menšie - takéto budeme používať aj my&lt;br /&gt;
&lt;br /&gt;
[[Image:robot_acrob.jpg|Robot Acrob]]&amp;lt;br&amp;gt;&lt;br /&gt;
Robot Acrob - používa dosku, ktorá sa podobá na Arduino, ale funguje rovnako, mali sme ich požičané od združenia Robotika.SK na krúžku&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328.jpg|ATMega328|250px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Jednočipový mikropočítač ATMega328, ktorý je základom Arduina&lt;br /&gt;
&lt;br /&gt;
[[Image:atmega328_pinout.png|ATMega328 pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
Funkcie jednotlivých vývodov jednočipového mikropočítača ATMega328&lt;br /&gt;
&lt;br /&gt;
Podrobné informácie o jednočipovom mikropočítači ATMega328 sa dajú nájsť v jeho [[Media:atmega328datasheet.pdf|datasheete]].&lt;br /&gt;
&lt;br /&gt;
Každý počítač sa skladá z týchto základných častí:&lt;br /&gt;
&lt;br /&gt;
[[Image:pocitac.png|základná schéma počítača]]&lt;br /&gt;
&lt;br /&gt;
Pamäť uchováva všetky údaje (obrázky, zvuky, texty, čísla, a podobne) a programy, ktoré sa vykonávajú príkaz za príkazom v procesore. Pamäť s procesorom sú navzájom prepojené zbernicou, ktorá medzi nimi prenáša údaje. Aby s počítač mohol komunikovať so svojím okolím - napr. s človekom, alebo s vonkajšími pamäťami, na ktorých ukladá rozsiahle údaje (pevné disky, DVD, Internet), tak sú na zbernici pripojené aj vstupné a výstupné zariadenia.&lt;br /&gt;
&lt;br /&gt;
To znamená, programy pozostávajú z postupnosti príkazov:&lt;br /&gt;
&lt;br /&gt;
 príkaz1&lt;br /&gt;
 príkaz2&lt;br /&gt;
 ...&lt;br /&gt;
 príkazN&lt;br /&gt;
&lt;br /&gt;
V každom okamihu procesor naraz vykonáva iba jeden príkaz, postupne od začiatku programu do konca. V programoch sa môžu vyskytovať cykly:&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 opakuj:&lt;br /&gt;
   príkaz&lt;br /&gt;
   príkaz&lt;br /&gt;
 koniec cyklu&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
- ak treba nejakú skupinu príkazov niekoľkokrát zopakovať, alebo podmienky, ktoré dovoľujú vykonať rozličné skupiny príkazov, podľa toho, ktorá z nich je práve vhodná (väčšinou na základe otestovania nejakej podmienky):&lt;br /&gt;
&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
 platí podmienka?&lt;br /&gt;
 ak áno, vykonaj túto skupinu príkazov:&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 ak nie, vykonaj inú skupinu príkazov&lt;br /&gt;
   príkaz&lt;br /&gt;
   ...&lt;br /&gt;
   príkaz&lt;br /&gt;
 a potom pokračuj v každom prípade ďalej:&lt;br /&gt;
 príkaz&lt;br /&gt;
 príkaz&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Arduino je teda počítač, ktorý má svoju pamäť, procesor a nahrávame do neho cez kábel program, ktorý najskôr naprogramujeme pomocou prostredia Arduino:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_program.png|program zapisovaný v prostredí Arduino|450px]].&lt;br /&gt;
&lt;br /&gt;
Nato, aby sme mohli pracovať s prostredím Arduino si ho potrebujeme downloadnut a nainštalovať zo stránky [http://arduino.cc arduino.cc] - nainštalujte si &amp;quot;Windows Installer&amp;quot; - to by malo nainštalovať aj ovládače (drivers).&lt;br /&gt;
&lt;br /&gt;
Program sa do Arduina nahráva cez prevodník USB-Serial (ktorý je v bežných arduinach už zabudovaný - ale Acroby ich potrebujú):&lt;br /&gt;
&lt;br /&gt;
[[Image:usb_serial.jpg|prevodník USB-Serial|300px]]&lt;br /&gt;
&lt;br /&gt;
Arduinové výstupy sú označené D0-D13 a A0-A5. Napájanie sa privádza na piny VCC a AVCC (+5V) a GND (zem, 0V). RXD, TXD označujú sériový port na komunikáciu s inými počítačmi alebo zariadeniami (napr. s PC), motory sa väčšinou pripájajú na piny D9 a D10.&lt;br /&gt;
&lt;br /&gt;
Na väčšine Arduin je pin D13 pripojený na zabudovanú svietivú diódu (LED). Prvý program, ktorý napíšeme túto LEDku rozbliká.&lt;br /&gt;
&lt;br /&gt;
Každý arduinový program obsahuje aspoň tieto dve funkcie:&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;
  // put your setup code here, to run once:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  //...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcia setup() sa spustí vždy po zapnutí počítača - hneď po spustení programu. Jej úlohou je ponastavovať všetky zariadenia, ktoré sú k Arduinu pripojené. Funkcia loop() sa spustí, keď setup() skončí a ak loop() skončí (čo nemusí...), tak sa spúšťa znovu a znovu, stále dookola.&lt;br /&gt;
&lt;br /&gt;
Pre rozblikanie LED musíme najskôr počítaču nastaviť pin D13 ako výstupný. Každý digitálny pin sa dá používať buď ako vstupný (vtedy Arduino z nožičky integrovaného obvodu vie prečítať, či tam je logická 0 (nulové napätie), alebo logická 1 (napätie 5V). Pin nemôže byť naraz aj vstupný aj výstupný, musíme sa rozhodnúť ako ho chceme používať a podľa toho ho vo fukcii setup() nastaviť. Robí sa to príkazom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  pinMode(číslo_pinu, režim); // pričom režim je buď INPUT, alebo OUTPUT  (je možná aj tretia možnosť, ale o tom až niekedy neskôr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keď je pin nastavený ako výstupný, tak vo funkcii loop() môžeme LED kedykoľvek zasvietiť zapísaním logickej jednotky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, HIGH);  // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 1)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podobne, LED zhasneme takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(číslo_pinu, LOW);   // alebo  &lt;br /&gt;
digitalWrite(číslo_pinu, 0)  // čo je to isté.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arduino však stihne za sekundu vykonať 16 miliónov inštrukcií (taktovacia frekvencia procesora je 16 MHz) a tak, aby sme si blikanie LED stihli všimnúť, musíme po každej zmene pinu nejaký čas počkať - na to slúži funkcia delay(čas_v_milisekundách). Celý program na blikanie LED teda vyzerá takto:&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);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby sa nám Arduino programovalo jednoduchšie, ak ho máme pripojené káblom, môžeme z neho cez kábel (čiže cez sériový port) do PC poslať nejakú textovú správu:&lt;br /&gt;
&lt;br /&gt;
Vo funkcii setup() najskôr nastavíme rýchlosť prenosu (počet prenesených bitov za sekundu), napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a potom môžeme používať funkcie na vstup a výstup cez sériový port, napr. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Ahoj&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celý takýto text sa odvysiela cez jediný pin TXD mikropočítača ATMega328 (pozri obrázok hore). Ako sa to udeje?&lt;br /&gt;
Každý znak (písmeno, číslica, znamienko a pod.) má nejaký číselný kód - väčšinou sa na to používa medzinárodný štandard ASCII. Vidíme, že napríklad znak &#039;A&#039; má kód 65, znak &#039;o&#039; má kód 111, atď.&lt;br /&gt;
&lt;br /&gt;
[[Image:ascii-codes-table.png|ASCII tabuľka|300px]]&lt;br /&gt;
&lt;br /&gt;
Tieto kódy sú v Arduine uložené v dvojkovej sústave, tak ako všetky ostatné čísla! Počítače totiž všetky čísla ukladajú v dvojkovej sústave, keďže na to stačí, aby na príslušnom pine bolo kladné napätie (logická jednotka) alebo nulové napätie (logická nula).&lt;br /&gt;
&lt;br /&gt;
Ľudia na výpočty používajú desiatkovú sústavu, keďže majú 10 prstov, je im prirodzenejšia: obsahuje 10 číslic: 0, 1, 2, ..., 9.&lt;br /&gt;
Za poslednou číslicou nasleduje číslo 10 zložené z dvoch číslic, za posledným dvojciferným číslo 99 nasleduje číslo 100, atď. V čísle, ktoré má viac číslic stojí každá číslica na nejakom mieste, napr. v čísle 2016: je číslica 6 na mieste jednotiek (má hodnotu 6 x 1), číslica 1 na mieste desiatok (má hodnotu 1 x 10), číslica 0 na mieste stoviek (hodnota 0 x 100) a číslica 2 na mieste tisícok (hodnota 2 x 1000). Podobne to funguje aj v dvojkovej sústave, ale namiesto 10 číslic máme k dispozícii iba číslice dve: 0 a 1. Čísla tam nasledujú za sebou takto:&lt;br /&gt;
&lt;br /&gt;
     0      - zodpovedá 0 v desiatkovej sústave)&lt;br /&gt;
     1      - 1&lt;br /&gt;
    10      - 2&lt;br /&gt;
    11      - 3&lt;br /&gt;
   100      - 4&lt;br /&gt;
   101      - 5&lt;br /&gt;
   110      - 6&lt;br /&gt;
   111      - 7&lt;br /&gt;
  1000      - 8&lt;br /&gt;
  1001      - 9&lt;br /&gt;
  1010      - 10&lt;br /&gt;
  1011      - 11&lt;br /&gt;
  1100      - 12&lt;br /&gt;
  1101      - 13&lt;br /&gt;
  1110      - 14&lt;br /&gt;
  1111      - 15&lt;br /&gt;
 10000      - 16&lt;br /&gt;
 10001      - 17&lt;br /&gt;
  atď.&lt;br /&gt;
&lt;br /&gt;
ľahko si všimneme, že aj tu majú číslice svoje &amp;quot;rády&amp;quot;, napr. v čísle 10110 (čiže 22 v desiatkovej sústave) máme:&lt;br /&gt;
  0 - rád jednotiek &lt;br /&gt;
  1 - rád dvojek (1 x 2) &lt;br /&gt;
  1 - rád štvoriek (1 x 4)&lt;br /&gt;
  0 - rád osmičiek&lt;br /&gt;
  1 - ráď šestnástok (1 x 16)&lt;br /&gt;
&lt;br /&gt;
 1 x 2 + 1 x 4 + 1 x 16 = 22&lt;br /&gt;
&lt;br /&gt;
Takže na odvysielanie čísla 8-bitového čísla 65 cez pin TXD sa tam postupne odvysielajú číslice 01000001 - a pri rýchlosti 115200 číslic za sekundu tam každá bude iba 1/115200 s, čo je približne 8,68 mikrosekúnd.&lt;br /&gt;
 &lt;br /&gt;
Predchádzajúci program upravme tak, aby okrem blikania LEDkou aj vypisoval texty ON a OFF:&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);&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  Serial.println(&amp;quot;ON&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  Serial.println(&amp;quot;OFF&amp;quot;);&lt;br /&gt;
  delay(500);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dobrý robot by ale iba s výstupmi nevystačil, musí nejakým spôsobom získavať informácie z prostredia - pomocou senzorov, ktoré tvoria jeho vstupné zariadenia. Napríklad ak nárazník narazí do prekážky, stlačí sa mikrospínač a hodnota na výstupe z vypínača sa zmení z logickej nuly na logickú jednotku. Potrebujeme napísať program, ktorý hodnotu na svojom pine dokáže prečítať.&lt;br /&gt;
&lt;br /&gt;
Pin 2 nastavíme na vstupný:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 pinMode(2, INPUT);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a funkcia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 digitalRead(2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nám vráti buď 0 alebo 1 - podľa toho, či je na pine 2 logická nula, alebo jednotka. Túto hodnotu môžeme použiť napríklad v podmienke, ktorá sa v jazyku C++ (na ktorom je Arduino založené) používa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 if (podmienka) {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak je podmienka splnená&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   // príkazy, ktoré sa majú vykonať, ak podmienka nie je splnená, čiže neplatí&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
časť else je nepovinná - môže a nemusí tam byť. V našom prípade môžeme program naprogramovať tak, že pri stlačení tlačidla LED zasvieti:&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;
 {&lt;br /&gt;
   pinMode(2,INPUT);&lt;br /&gt;
   pinMode(13, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   if (digitalRead(2)) {&lt;br /&gt;
     digitalWrite(13, HIGH);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
     digitalWrite(13,LOW);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako to zapojiť?&lt;br /&gt;
&lt;br /&gt;
Mikrospínač, ktorý je v stavebnici Acroba funguje tak, že bez stlačenia sú prepojené len kontakty cez dlhšie strany obdĺžnika a po stlačení sú prepojené všetky 4 kontakty. &lt;br /&gt;
&lt;br /&gt;
[[Image:microswitch.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Preto do pinu D2 pripojíme jeden výstup z tlačidla. Druhý výstup tlačidla spojíme s napájaním (VCC), ktoré má hodnotu napätia ako logická 1. Tým zabezpečíme, že pri stlačení tlačidla bude na D2 logická jednotka. Lenže, ak tlačidlo nestlačíme - logická nula tam nebude, bude tam len pripojený &amp;quot;vo vzduchu visiaci&amp;quot; káblik a to nie je dobre. Preto ho treba prepojiť so zemou. Ale pozor - ak by sme ho so zemou prepojili len tak - priamo, tak by sme pri stlačení tlačidla spôsobili skrat - priamymi vodičmi by bolo spojené VCC (plus na baterke) so zemou (mínus na baterke) a takúto situáciu nesmieme dopustiť ani na krátky okamih. Preto pin D2 spojíme so zemou cez rezistor s dostatočne veľkým odporom, napr. 2 kOhm:&lt;br /&gt;
&lt;br /&gt;
[[Image:schema_tlacidlo.png|zapojenie s mikroswitchom]]&lt;br /&gt;
&lt;br /&gt;
Robot Acrob je poháňaný dvoma servomotormi. Servomotor je zaujímavá súčiastka - je to motor s prevodovkou a riadiacou elektronikou. Vnútri vyzerá nejak takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:servo_motor.jpg|vnútornosti servomotorov]]&lt;br /&gt;
&lt;br /&gt;
používajú sa väčšinou v robotických ramenách, pričom sa môžu otáčať v rozsahu 0-180 stupňov (90 je stredná poloha). Viac otočiť im nedovolí zabudovaná zarážka. Potenciometer je v skutočnosti rezistor s premenlivou hodnotou a používa sa ako spätná väzba, ktorá riadiacu elektroniku serva informuje o tom, ako je práve servo otočené. Cez signálny káblik (biely, alebo žltý) elektronika dostáva pokyn z počítača (napr. z Arduina), do akej polohy sa má servo nastaviť. Elektronika porovná aktuálnu hodnotu s požadovanou a podľa toho rozbehne motor správnym smerom a vhodnou rýchlosťou.&lt;br /&gt;
&lt;br /&gt;
Servá, ktoré sú zabudované do Acrobov, sú tzv. modifikované servá - zarážka, ktorá bráni súvislému otáčaniu je odstránená a potenciometer je nahradený rezistorom so zafixovanou - pevnou hodnotou. Elektronika serva si preto &amp;quot;myslí&amp;quot;, že servo je stále v strede (na hodnote 90) a pri pokyne nastavenia do polohy napr. 120 sa roztočí jedným smerom a bude sa tak točiť donekonečna. Pri pokyne napr. 30 sa bude točiť donekonečna opačným smerom. Pri požadovenej polohe 90 sa zastaví a pri polohách blízko 90 sa bude otáčať iba pomaly, pretože už je skoro &amp;quot;v cieli&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ako servo riadiť - ako mu vysvetliť, že sa má nastaviť do požadovanej polohy napr. 30 stupňov?&lt;br /&gt;
&lt;br /&gt;
Riadiaci signál do serva (biely alebo žltý káblik) by mal každých 20 ms obsahovať pulz (logickú jednotku na krátky okamih). Dĺžka tohto okamihu určuje do akej polohy sa servo má nastaviť. Typicky to býva od 0.5 - 1.5 ms. Nasledujúci program teda roztočí servo jedným smerom:&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;
 {&lt;br /&gt;
   pinMode(10, OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(10, LOW);&lt;br /&gt;
   delay(20);&lt;br /&gt;
   digitalWrite(10, HIGH);&lt;br /&gt;
   delayMicroseconds(500);&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program vyšle na pin D10 krátky pulz 0.5 ms každých 20 ms. Toľko teória. Arduino je však vymyslené tak, aby sme sa nemuseli starať o každý bit sami a stačí použiť knižnicu Servo, ktorá sa o generovanie riadiaceho signálu stará sama v spolupráci so zabudovanými časovačmi počítača. Program, ktorý pohne robotom teda vyzerá takto:&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;
 Servo lavy, pravy; &lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   lavy.attach(9);  // lave servo je na pine 9&lt;br /&gt;
   pravy.attach(10);  // prave servo je na pine 10&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // rozbehni sa&lt;br /&gt;
   lavy.write(120);&lt;br /&gt;
   pravy.write(30);&lt;br /&gt;
   // tri sekundy bez&lt;br /&gt;
   delay(3000);&lt;br /&gt;
   // zastan&lt;br /&gt;
   lavy.write(90);&lt;br /&gt;
   pravy.write(90);&lt;br /&gt;
   // tri sekundy cakaj&lt;br /&gt;
   delay(3000);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;height: 1px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#EAFFF3;&amp;quot;&amp;gt;&lt;br /&gt;
K Acrobu môžeme pripojiť malú sirénku, ktorá funguje ako reproduktor:&lt;br /&gt;
&lt;br /&gt;
[[Image:piezo.png|malá signálna siréna]]&lt;br /&gt;
&lt;br /&gt;
Sirénku si môžeme predstaviť ako taký malý reproduktor. Reproduktor vytvára zvuk tak, že po dvoch drôtoch doň prichádza premenlivé napätie pripojené na jeho cievku elektromagnetu. Elektromagnet je pevne spojený s kuželovitou kmitajúcou membránou a vytvorené magnetické pole ho striedavo priťahuje a odpudzuje k pevému magnetu, ktorý je tiež súčasťou reproduktora. &lt;br /&gt;
&lt;br /&gt;
[[Image:how_speakers_work.png|čo sú reproduktory?]]&lt;br /&gt;
&lt;br /&gt;
Membrána reproduktora naráža na častice vzduchu, rozkmitá ich a zvuk sa v prostredí šíri ako pozdĺžne kmitajúca vlna mechanického vlnenia ďalej. Na vytvorenie čistého zvuku by sme mali napätie privádzané do reproduktora meniť plynule&lt;br /&gt;
&lt;br /&gt;
[[Image:sinusoida.png|plynule sa meniace napätie]]&lt;br /&gt;
&lt;br /&gt;
ale pri využití digitálnej elektroniky, ktoré vie na výstupe generovať iba 0 a 1 si to môžeme zjednodušiť a pomocou pravidelného striedania digitálneho signálu medzi 0 a 1 môžeme vydať počuteľný tón. Dôležité je hlavne to, aby frekvencia kmitania sedela s frekvenciou požadovaného tónu. &lt;br /&gt;
&lt;br /&gt;
[[Image:hranaty_signal.png|digitálna aproximácia sinusoidy]]&lt;br /&gt;
&lt;br /&gt;
Treba dať pozor na pripojenie - jedna strana sirénky je ozačená ako &amp;quot;+&amp;quot; - tú môžeme pripojiť priamo na niektorý digitálny výstupný pin a riadiť ho rovnako ako pri blikaní LEDkou, len trochu rýchlejšie, druhú stranu sirénky pripojíme priamo na zem.&lt;br /&gt;
&lt;br /&gt;
Hudobné tóny rozličných výšok sa líšia svojimi frekvenciami. Tón s veľkou frekvenciou (za sekundu membrána kmitne veľakrát) je vysoký tón, naopak tón s nízkou frekvenciou kmitania membrány je nízky tón. Človek typicky počuje frekvencie okolo 20-15000 Hz. Nasledujúci program teda vydá tón malé &#039;A&#039;, ktorý má frekvenciu 440 Hz:&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;
 {&lt;br /&gt;
   pinMode(11,OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(11, HIGH);&lt;br /&gt;
   delayMicroseconds(1136);     // 1136 usec je dlzka trvania jednej pol-periody&lt;br /&gt;
   digitalWrite(11,LOW);        // ak kmitame 440-krat za sekundu, tak dlzka jedneho&lt;br /&gt;
   delayMicroseconds(1136);     // kmitnutia je 1/440 s, co je 0.0022727 s, polovica&lt;br /&gt;
 }                              // z toho je 0.0011363 s = 1.1363 ms = 1136.3 usec&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak chceme, aby robot zahral nejakú zaujímavejšiu pesničku, tak by sa nám hodila funkcia, ktorá vie zahrať tón s ľubovoľnou frekvenciou a bolo by fajn, keby sme tej funkcii vedeli povedať ako dlho ten tón znie. Funkcia? a to je čo? Funkciu si môžeme predstaviť ako &amp;quot;vlastný blok&amp;quot; v programovacom jazyku pre LEGO MINDSTORMS. Je to kus programu, ktorý môžeme vyvolať opakovane z rôznych miest nášho programu - a môžeme mu zadať nejaké parametre, ktoré určujú, čo presne má urobiť. Každý náš arduinovský program už pozostával z dvoch funkcií - setup() a loop(). Takýchto funkcií môžeme pridať koľko chceme a vyvolať ich z hociktorého miesta programu. Funkcii môžeme predpísať ľubovoľný počet parametrov - každý z nich musí mať stanovený &amp;quot;typ&amp;quot; - čiže napr. či je to číslo, logická hodnota, znak, alebo reťazec znakov. Napríklad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void scitaj(int a, int b)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(&amp;quot;Sucet je: &amp;quot;);&lt;br /&gt;
   Serial.println(a + b);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
je funkcia, ktorá dostane dva parametre a, b, a cez sériový port vypíše text &amp;quot;Sucet je XY&amp;quot;, kde XY bude skutočný súčet hodnôt a, b. Takúto funkciu môžeme z programu vyvolať napr. takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 scitaj(3, 4);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ale za parametre môžeme dosadiť aj hodnoty z premenných, napr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int premenna = 12;&lt;br /&gt;
 int ina_premenna;&lt;br /&gt;
  &lt;br /&gt;
 ina_premenna = 10;&lt;br /&gt;
 &lt;br /&gt;
 scitaj(premenna, ina_premenna);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takže teraz napíšme funkciu, ktorá bude zadanou frekvenciou (určenou v Hz) kmitať stanovenú dobu (určenú v ms). Namiesto typu int použijeme typ long, lebo do premenných typu long sa vojdú oveľa väčšie čísla - čo potrebujeme, lebo budeme počítať v mikrosekundách (miliontinách sekundy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 // f - frekvencia v Hz, d - dlzka trvania tonu v ms&lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long t = 500000 / f;     // ako dlho trva polovica jednej periody tonu s frekvenciou f? &lt;br /&gt;
   long p = d * f / 1000;   // kolko celych period sa vojde do casoveho useku dlzky d?&lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++) &lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(t);  // namiesto 1136 usec ako v pripade tonu s frekvenciou 440 Hz &lt;br /&gt;
     digitalWrite(11,LOW);  // budeme cakat t usec, ktore sme vypocitali z frekvencie f&lt;br /&gt;
     delayMicroseconds(t);  //  1 / f - v sekundach, takze este krat milion (na mikrosekundy) a deleno 2&lt;br /&gt;
   }                        // co je to iste ako 500000 / f&lt;br /&gt;
   delay(50);  // na konci kratka prestavka, aby boli tony zretelne oddelene a nezlievali sa&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tomto programe sú dva zaujímavé výpočty. Prvý z nich využíva fakt, že vzťah medzi frekvenciou a periódou je T = 1 / f a zároveň f = 1 / T. V prvom riadku funkcie teda vypočítame koľko mikrosekúnd trvá polovica periódy, ak sa má za jednu sekundu zopakovať f kmitnutí signálu nahor a nadol.&lt;br /&gt;
Druhý výpočet slúži na to, aby sme vedeli koľkokrát sa má kmitnutie nahor a nadol zopakovať (to je tá podmienka i &amp;lt; p v cykle for). Zistíme to tak, že vynásobíme dĺžku trvania tónu (d) frekvenciou (f). Napríklad ak kmitáme frekvenciou 440 Hz a tón má znieť 1 sekundu, tak potrebujeme kmitnúť 1 * 440 = 440-krát. Alebo ak má tón znieť 2 sekundy, tak potrebujeme kmitnúť 2 * 440 = 880-krát. Ak by mal znieť iba pol sekundy, tak by to bolo 0,5 * 440 = 220-krát. Lenže dĺžka trvania tónu (d) je zadaná v milisekundách, takže aby sme dostali správny výsledok, musíme ho ešte vydeliť 1000 (čím ako keby prevedieme hodnotu d na milisekundy). Cyklus for, ktorý sme použili je najbežnejšie používaný cyklus, pomocou ktorého môžeme nejakú skupinu príkazov uzavretú v zložených zátvorkách zopakovať viackrát. Zapisuje sa takto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 for (príkaz_ktory_sa_vykona_na_zaciatku; podmienka_opakovania; prikaz_ktory_sa_vykona_po_kazdom_opakovani)&lt;br /&gt;
 {&lt;br /&gt;
   //...prikazy...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Prikaz for teda vŽdy vykoná najskôr svoj prvý príkaz za zátvorkou - v našom prípade vytvorí premennú typu int a nastaví ju na hodnotu 0. Potom skontroluje, či platí podmienka opakovania - v našom prípade, či počet opakovaní (premenná i) je stále menší ako stanovený počet opakovaní (premenná p) - ak áno, prvýkrát vykoná príkazy v tele cyklu (medzi zloženými zátvorkami). Potom nasleduje príkaz, ktorý sa vykoná po každom opakovaní cyklu - posledný výraz v okrúhlych zátvorkách za slovíčkom for - v našom prípade &amp;quot;i++&amp;quot;, čo znamená zvýšiť premennú i o jedna a následne sa zasa skontroluje, či stále platí podmienka opakovania. Ak nie, cyklus skončil a program pokračuje ďalším príkazom za telom cyklu. Ak je podmienka stále splnená, znovu sa vykonajú príkazy v tele cyklu, príkaz po každom opakovaní a zasa sa otestuje podmienka - a takto až dovtedy, kým podmienka prestane byť splnená (čo v krajnom prípade nemusí byť nikdy - v takom prípade cyklus nikdy neskončí).&lt;br /&gt;
&lt;br /&gt;
Keď máme funkciu hotovú, môžeme ju využiť na to, aby robot zahral známu melódiu Kohútik jarabí :-)  C-D-E-F-F-F-F-E-D-E-E-E-E-D-C-D-D-D-D-E-D-C-C-C s dĺžkami nôt 1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1-1-1-2-2-1-1, kde 1 je polová a 2 je celá nota (polová má polovičnú dobu trvania):&lt;br /&gt;
&lt;br /&gt;
Aby to bolo zaujímavejšie na digitálne výstupy D0, D1, D2, D3 môžeme zapojiť rozličné LEDky a spolu s jednotlivými tónmi C,D,E,F zapínať jednotlivé LED - získame takto farebnú hudbu :-)&lt;br /&gt;
&lt;br /&gt;
[[Image:acrob_farebna_hudba.jpg|farebná hudba na robotovi Acrob]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 void ton(long frekvencia, long trvanie)&lt;br /&gt;
 {&lt;br /&gt;
   long p = trvanie * frekvencia / 1000L;   // L na konci cisla zdoraznuje&lt;br /&gt;
   long polPeriody = 500000L / frekvencia;  // ze ide o konstantu typu long, nemusi tam byt&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
    pinMode(11, OUTPUT);  // pipac&lt;br /&gt;
    &lt;br /&gt;
    pinMode(0, OUTPUT);   // farebna hudba - 4 LED&lt;br /&gt;
    pinMode(1, OUTPUT);&lt;br /&gt;
    pinMode(2, OUTPUT);&lt;br /&gt;
    pinMode(3, OUTPUT);   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // dostane cislo LED 1-4, tu zasvieti a ostatne zhasne&lt;br /&gt;
 void led(int ktora)&lt;br /&gt;
 {&lt;br /&gt;
   if (ktora == 1) digitalWrite(0, HIGH);&lt;br /&gt;
   else digitalWrite(0, LOW);&lt;br /&gt;
   if (ktora == 2) digitalWrite(1, HIGH);&lt;br /&gt;
   else digitalWrite(1, LOW);&lt;br /&gt;
   if (ktora == 3) digitalWrite(2, HIGH);&lt;br /&gt;
   else digitalWrite(2, LOW);&lt;br /&gt;
   if (ktora == 4) digitalWrite(3, HIGH);&lt;br /&gt;
   else digitalWrite(3, LOW);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // C: 262&lt;br /&gt;
 // D: 293&lt;br /&gt;
 // E: 330&lt;br /&gt;
 // F: 349&lt;br /&gt;
 void hrajC(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(1);&lt;br /&gt;
   ton(262, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajD(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(2);&lt;br /&gt;
   ton(293, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajE(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(3);&lt;br /&gt;
   ton(330, dlzka);  &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hrajF(int dlzka)&lt;br /&gt;
 {&lt;br /&gt;
   led(4);  &lt;br /&gt;
   ton(349, dlzka);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() &lt;br /&gt;
 { &lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajF(1000);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajF(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajE(1000);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajD(500);&lt;br /&gt;
   hrajE(500);&lt;br /&gt;
   hrajD(1000);&lt;br /&gt;
   hrajC(1000);&lt;br /&gt;
   hrajC(500);&lt;br /&gt;
   hrajC(500); &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Môže byť? Neviem, asi by bolo ešte lepšie, ak by sme melódiu nemuseli zapisovať takýmto spôsobom. Jednak tu máme iba funkcie na 4 tóny a na klavíri býva aj viac ako 80 klávesov a tak vytvárať funkciu pre každý tón nebude veľmi praktické. Skúsme to ešte trochu lepšie - použijeme pole. &lt;br /&gt;
&lt;br /&gt;
Využijeme pole na to, aby sme si uložili frekvencie všetkých tónov, ktoré bude náš muzikantský program poznať. Pole je taká premenná, do ktorej sa dá uložiť viacero hodnôt naraz, nielen jedna. Napríklad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[3];  // premenna a schovava tri cele cisla&lt;br /&gt;
 &lt;br /&gt;
 a[0] = 10; // prve z nich nech je 10&lt;br /&gt;
 a[1] = 11; // do druheho vloz 11&lt;br /&gt;
 a[2] = 12; // a posledne nech obsahuje 12&lt;br /&gt;
 &lt;br /&gt;
 int b = a[0] + a[1] + a[2];  // vypocitaj sucet vsetkych troch hodnot a uloz ho do premennej b&lt;br /&gt;
 &lt;br /&gt;
 Serial.print(&amp;quot;Sucet je: &amp;quot;);  // vypis vysledok na seriovy port&lt;br /&gt;
 Serial.println(b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na prístup k jednotlivým hodnotám v poli môžeme použiť aj premennú (niekedy sa jej hovorí indexová, lebo poradie prvku, ku ktorému sa pristupuje sa volá index):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 int a[10];&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)   &lt;br /&gt;
 {&lt;br /&gt;
   a[i] = 1 + i * 2;   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int sucet = 0;&lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
 {&lt;br /&gt;
   Serial.print(a[i]);&lt;br /&gt;
   if (i &amp;lt; 9) Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 Serial.print(&amp;quot;=&amp;quot;);&lt;br /&gt;
 Serial.println(sucet);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zistite, čo presne urobí tento program?&lt;br /&gt;
&lt;br /&gt;
Tak teda naspäť k nášmu hodobníckemu programu. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #define TEMPO 24    // cim vyssia hodnota, tym pomalsie tempo&lt;br /&gt;
 &lt;br /&gt;
 // pocet not v melodii&lt;br /&gt;
 int dlzka = 25;  &lt;br /&gt;
 &lt;br /&gt;
 // tony v melodii&lt;br /&gt;
 char melodiaT[]= {&#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &#039;c&#039;, &#039;e&#039;, &#039;c&#039;, &#039;e&#039;, &#039;g&#039;, &#039;g&#039;, &lt;br /&gt;
                   &#039;C&#039;, &#039;h&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;g&#039;, &#039;a&#039;, &#039;g&#039;, &#039;f&#039;, &#039;e&#039;, &#039;d&#039;, &#039;c&#039;, &#039;c&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // dlzky not v melodii 16 - cela, 8 - polova, 4 - stvrtova, 2 - osminova, 1 - sestnastinova&lt;br /&gt;
 int melodiaD[] = { 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 16, 16,&lt;br /&gt;
                     8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 16, 16}; &lt;br /&gt;
 &lt;br /&gt;
 // ake tony pozname - pouzili sme specialne znaky na oznacenie poltonov, zatial nam stacia 2 oktavy &lt;br /&gt;
 char tony[] = {&#039;c&#039;, &#039;#&#039;, &#039;d&#039;, &#039;%&#039;, &#039;e&#039;, &#039;f&#039;, &#039;$&#039;, &#039;g&#039;, &#039;^&#039;, &#039;a&#039;, &#039;*&#039;, &#039;h&#039;,&lt;br /&gt;
                &#039;C&#039;, &#039;!&#039;, &#039;D&#039;, &#039;~&#039;, &#039;E&#039;, &#039;F&#039;, &#039;+&#039;, &#039;G&#039;, &#039;-&#039;, &#039;A&#039;, &#039;/&#039;, &#039;H&#039; };&lt;br /&gt;
 &lt;br /&gt;
 // hodnoty frekvencii tonov a poltonov sme si nasli na internete:&lt;br /&gt;
 // radkon.eu/projects/other/tones.html&lt;br /&gt;
 &lt;br /&gt;
 int frekvencie[] = {261, 277, 293, 311, 329, 349, 369, 391, 415, 440, 466, 493, 523, 554, 587, 622, 659, 698, 739, 783, 830, 880, 932, 987};&lt;br /&gt;
 &lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
   pinMode(11, OUTPUT);                    // sirenku pripojime na D11&lt;br /&gt;
   &lt;br /&gt;
   // raz zahraj celu melodiu&lt;br /&gt;
   for (int i = 0; i &amp;lt; dlzka; i++)&lt;br /&gt;
     hraj(melodiaT[i], melodiaD[i]);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ton(long f, long d)&lt;br /&gt;
 {&lt;br /&gt;
   long p = d * f / 1000L;&lt;br /&gt;
   long polPeriody = 500000L / f;&lt;br /&gt;
 &lt;br /&gt;
   for (int i = 0; i &amp;lt; p; i++)&lt;br /&gt;
   {&lt;br /&gt;
     digitalWrite(11, HIGH);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
     digitalWrite(11, LOW);&lt;br /&gt;
     delayMicroseconds(polPeriody);&lt;br /&gt;
   }&lt;br /&gt;
   delay(50);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void hraj(char nota, int trvanie)&lt;br /&gt;
 {&lt;br /&gt;
  int kde = 0;&lt;br /&gt;
  while (tony[kde] != nota) kde++;  // najdeme index pozadovaneho tonu&lt;br /&gt;
  ton(frekvencie[kde], trvanie * TEMPO);  // a zahrame ho&lt;br /&gt;
 }&lt;br /&gt;
                 &lt;br /&gt;
 void loop() &lt;br /&gt;
 {&lt;br /&gt;
   // melodiu zahrame priamo vo funkcii setup, aby sa po resete zahrala iba raz a nehrala stale dookola&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aká je to pesnička? Kto naprogramuje vianočnú melódiu? :-)&lt;br /&gt;
Odpoveď Sama: Pesnička je to &amp;quot;jedna druhej riekla keď koláče atď. a pesničku by som naprogramovať aj ja.&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_december_2016&amp;diff=408</id>
		<title>Denníček - december 2016</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_december_2016&amp;diff=408"/>
		<updated>2016-12-11T15:52:30Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #EEFFFE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;1.12. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dnes prišli všetci okrem Jakuba, s ktorým už na súťaž nemôžeme počítať a pracovalo sa na viacerých frontoch - Matej vytvoril novú verziu vykladača krmiva pri plameniakovi, Oliver sa snažil poskladať niečo na otáčanie modelom zvierat, Samo dolaďoval program na včelu, Olinko všetkých koordinoval a všetci pracovali na výskumnom projekte.&lt;br /&gt;
&lt;br /&gt;
program: [[Media:yay_fll._11_29.zip|yay_fll._11_29.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #EEEEFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;3.12. sobota:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Patrik pracoval o sto šesť celý deň, zostrojil mechanizmus na otáčanie zvierat a naprogramoval poslednú jazdu. Doručenie a vyzdvihnutie včely bolo tiež vylepšené - dovezie sa rovno aj prasiatko.&lt;br /&gt;
&lt;br /&gt;
Zostávajú tri úlohy na Robot-Game:&lt;br /&gt;
# vylepšiť &amp;quot;pumpovanie&amp;quot; modelu na otáčanie zvierat, aby používal otáčkový senzor aj časovač, aby pumpovanie bolo plynulejšie&lt;br /&gt;
# naprogramovať záložný program na vyzdvihnutie krabičky s krmivom, ak náhodou jazda, ktorá ho má doviezť nevýjde&lt;br /&gt;
# skontrolovať, či netreba žraloka doviezť o malý kúsok ďalej&lt;br /&gt;
&lt;br /&gt;
Okrem toho by bolo dobre v poslednej jazde viezť aj prasiatko, prípadne dokončiť vyloženie mlieka z automatu.&lt;br /&gt;
&lt;br /&gt;
Patrik: sesdesiat bodov za jedla a vcela: [[Media:fllskorohotovi.zip|fllskorohotovi.zip]]&lt;br /&gt;
&lt;br /&gt;
Sedesiat plus sesdesiat bodov za jedla a vcela: [[Media:flluplnezeskorohotovi.zip|flluplnezeskorohotovi.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dorucovanie_viacerych_davok_krmiva.jpg|500px]] [[Image:prirazenie_k_ulu.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:stroj_na_otacanie_zvierat.jpg|500px]] [[Image:vylepsena_tacka_na_vcelu.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFEEEE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;4.12. nedeľa:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Patrik povyspovedal ľudí na Draždiaku, vyvesil plagát, ktorý nám Martin doniesol z tlačiarne a nafotili sme veľa labutí na jazere a ľudí, ktorí ich kŕmili. Veľa z nich sme upozornili na to, že divo žijúce živočíchy by sa nemali kŕmiť, iba pod dohľadom a podľa odporúčaní odborníkov.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFEEFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;6.12. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Panter dnes spravil vyhodnotenie dotazniku v exeli - zadané údaje, Krotiteľ robí grafy.&lt;br /&gt;
Excelovský hárok: [[media:vyskum.xlsx|vyskum.xlsx]]&lt;br /&gt;
[[Media:asi100tefll.zip|asi100tefll.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFFFDD;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;8.12. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rak vyrobil grafické plány jázd:&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda4.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda5.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda6.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:jazda7.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Samo, Oliver Tiger a Patrik už iba mierne dolaďovali jazdy, pričom Samo a Oliver trénovali štartovanie, tu je posledná verzia:&lt;br /&gt;
[[Media:sachfll.zip|sachfll.zip]]&lt;br /&gt;
&lt;br /&gt;
Všetci dokončovali prezentáciu výskumného projektu.&lt;br /&gt;
&lt;br /&gt;
Oliver Tiger vyrobil dokumentáciu na kategóriu Robot-Design.&lt;br /&gt;
Nanešťastie FLL nedopadlo tak ako by sme chceli.&lt;br /&gt;
Mali 7. miesto zo 10.&lt;br /&gt;
☻☻☻☻☻&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=S%C3%BAbor:Vysledky.xlsx&amp;diff=386</id>
		<title>Súbor:Vysledky.xlsx</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=S%C3%BAbor:Vysledky.xlsx&amp;diff=386"/>
		<updated>2016-12-08T15:20:08Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=385</id>
		<title>Výskumný projekt FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=385"/>
		<updated>2016-12-08T15:18:45Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
V našom výskumnom projekte sa zameriavame na nesprávne kŕmenie voľne žijúcich zvierat, najmä vtákov, konkrétne labutí.&lt;br /&gt;
&lt;br /&gt;
Tu sú informácie, ktoré sme o tejto téme zistili:&lt;br /&gt;
&lt;br /&gt;
Labuť:&lt;br /&gt;
&lt;br /&gt;
* [[info_o_labutiach]]&lt;br /&gt;
* [[INFO O LABUTIACH]]&lt;br /&gt;
* [[český zväz ochrancov prírody]]&lt;br /&gt;
&lt;br /&gt;
Kŕmenie divých zvierat&lt;br /&gt;
&lt;br /&gt;
* [http://www.tvnoviny.sk/domace/1839044_radi-krmime-vtakov-na-jazerach-sposobujeme-tym-viac-skody-ako-osohu Radi kŕmime vtákov na jazerách. Spôsobujeme tým viac škody ako osohu] - reportáž TV Markíza&lt;br /&gt;
* [http://www.tobrok.sk/vyziva-vyroba-granul.htm granule pre zvieratá]&lt;br /&gt;
* [http://www.zelenaskola.sk/prikrmovanie Kŕmiť? či nekŕmiť?]&lt;br /&gt;
* [http://www.swanlife.com/what-swans-eat-and-drink.html čo jedia zvierata eng]&lt;br /&gt;
&lt;br /&gt;
Naše riešenie, ktoré navrhujeme&lt;br /&gt;
&lt;br /&gt;
* Navrhnúť firmu ktorá by prímala bezdomovcov a tí by mali ochraňovať zvieratá v jazerách pred luďmi ktorí ich kŕmia a dávať im pokuty.&lt;br /&gt;
* [[Media:drazdiak.zip|fotodokumentácia z exkurzie na Draždiak]]&lt;br /&gt;
* [[Media:plagat_nekrmte.png|plagát, ktorý sme namontovali na Draždiaku]]&lt;br /&gt;
* [http://capek.ii.fmph.uniba.sk/sachisti_videa/ zopár krátkych videí z exkurzie]&lt;br /&gt;
* [[Dotazník pre verejnosť]]&lt;br /&gt;
* [[Dotazníky v škole]]&lt;br /&gt;
* [[Media:vysledky.xlsx|Výsledky dotazníkov]]&lt;br /&gt;
* [[Mail, ktorý sme poslali expertom]]: &lt;br /&gt;
** Mgr. Radovan Jambor, PhD., ORNIS Birds Control &amp;amp; Monitoring: [[Odpoveď od Dr. Jambora]]&lt;br /&gt;
** Ing. Lýdia Mitterpachová, ZOO Bratislava&lt;br /&gt;
** Ing. Tomáš Čejka, PhD., Botanický ústav SAV, Slovenská akadémia vied&lt;br /&gt;
** Mgr. Lucia Turčoková, PhD., Katedra zoológie, Prírodovedecká fakulta, Univerzita Komenského v Bratislave&lt;br /&gt;
** Doc. MVDr. Juraj TOPORČÁK, Ph.D., Klinika vtákov, exotických a voľne žijúcich zvierat, Univerzita veterinárskeho lekárstva a farmácie v Košiciach&lt;br /&gt;
** PaedDr. Michaela Platznerová, Oddelenie komunikácie s verejnosťou, Miestny úrad MČ Bratislava-Petržalka&lt;br /&gt;
** Samuel Pačenovský, expert zoológ, Slovenská ornitologická spoločnosť/BirdLife Slovensko&lt;br /&gt;
** Ján DOBŠOVIČ, vedúci pobočky Bratislava, SOS/BirdLife Slovensko&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=N%C3%A1%C5%A1_T%C3%ADm_vo_FLL_2016/2017&amp;diff=359</id>
		<title>Náš Tím vo FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=N%C3%A1%C5%A1_T%C3%ADm_vo_FLL_2016/2017&amp;diff=359"/>
		<updated>2016-12-06T14:55:54Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;v našom tíme sú&lt;br /&gt;
&lt;br /&gt;
oliver šteiner (ružový slon) olino.rocks &amp;lt;br&amp;gt;&lt;br /&gt;
oliver kurňava (tiger) &amp;lt;br&amp;gt;&lt;br /&gt;
patrik homola (žralok) &amp;lt;br&amp;gt;&lt;br /&gt;
samuel zuzák (had) &amp;lt;br&amp;gt;&lt;br /&gt;
maťo mizner (mrož) &amp;lt;br&amp;gt;&lt;br /&gt;
maťo palo (rak) &amp;lt;br&amp;gt;&lt;br /&gt;
všetci pracujeme na projekte first lego league animal allies &amp;lt;br&amp;gt;&lt;br /&gt;
ale aj iných projektoch&lt;br /&gt;
*[[o nas]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=N%C3%A1%C5%A1_T%C3%ADm_vo_FLL_2016/2017&amp;diff=358</id>
		<title>Náš Tím vo FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=N%C3%A1%C5%A1_T%C3%ADm_vo_FLL_2016/2017&amp;diff=358"/>
		<updated>2016-12-06T14:53:37Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;v našom tíme sú&lt;br /&gt;
&lt;br /&gt;
oliver šteiner (ružový slon) olino.rocks &amp;lt;br&amp;gt;&lt;br /&gt;
oliver kurňava (tiger) &amp;lt;br&amp;gt;&lt;br /&gt;
patrik homola (žralok) &amp;lt;br&amp;gt;&lt;br /&gt;
samo zuzák (had) &amp;lt;br&amp;gt;&lt;br /&gt;
maťo mizner (mrož) &amp;lt;br&amp;gt;&lt;br /&gt;
maťo palo (rak) &amp;lt;br&amp;gt;&lt;br /&gt;
všetci pracujeme na projekte first lego league animal allies &amp;lt;br&amp;gt;&lt;br /&gt;
ale aj iných projektoch&lt;br /&gt;
*[[o nas]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Oliver_Kur%C5%88ava&amp;diff=357</id>
		<title>Oliver Kurňava</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Oliver_Kur%C5%88ava&amp;diff=357"/>
		<updated>2016-12-06T14:52:21Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Volám sa Oliver a rád programujem. V mojom tíme ma prezývajú Tiger. Toto je moje 2.FLL.Spolu s mojimi kamarátmi chodím na robotický krúžok.&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Oliver_Kur%C5%88ava&amp;diff=356</id>
		<title>Oliver Kurňava</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Oliver_Kur%C5%88ava&amp;diff=356"/>
		<updated>2016-12-06T14:52:02Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Volám sa Oliver a rád programujem. V mojom tíme ma prezývajú Tiger. Toto je moje 2.FLL.Spolu s mojimi kamarátmi chodím na robotický krúžok&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Dotazn%C3%ADk_pre_verejnos%C5%A5&amp;diff=318</id>
		<title>Dotazník pre verejnosť</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Dotazn%C3%ADk_pre_verejnos%C5%A5&amp;diff=318"/>
		<updated>2016-12-01T14:31:15Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pripravili sme takýto dotazník, ktorý dáme vyplniť našim mladším spolužiakom a ľudom, ktorých stretneme pri vodných plochách.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Radi kŕmite labute?&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;áno&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;nie&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ak áno, prečo ste to robili? (môžete vybrať aj viac možností)&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;aby neboli hladné&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo ma to tešilo&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo ma to bavilo&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo mám rád labute&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo im to pomáha&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;pre niečo iné (napíš) _____________________________________________&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Počuli ste o tom, že si niekto myslí, že kŕmenie labutí im škodí?&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;áno&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;nie&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ak áno, ako by im to mohlo škodiť?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
________________________________________________________&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Dotazn%C3%ADk_pre_verejnos%C5%A5&amp;diff=317</id>
		<title>Dotazník pre verejnosť</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Dotazn%C3%ADk_pre_verejnos%C5%A5&amp;diff=317"/>
		<updated>2016-12-01T14:30:53Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pripravili sme takýto dotazník, ktorý dáme vyplniť našim mladším spolužiakom a ľudom, ktorých stretneme pri vodných plochách.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Radi kŕmite labute?&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;áno&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;nie&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ak áno, prečo ste to robili? (môžete vybrať aj viac možností)&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;aby neboli hladné&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo ma to tešilo&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo ma to bavilo&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo mám rád labute&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo im to pomáha&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;pre niečo iné (napíš) ________________________________&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Počuli ste o tom, že si niekto myslí, že kŕmenie labutí im škodí?&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;áno&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;nie&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ak áno, ako by im to mohlo škodiť?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
________________________________________________________&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Dotazn%C3%ADk_pre_verejnos%C5%A5&amp;diff=316</id>
		<title>Dotazník pre verejnosť</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Dotazn%C3%ADk_pre_verejnos%C5%A5&amp;diff=316"/>
		<updated>2016-12-01T14:30:43Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pripravili sme takýto dotazník, ktorý dáme vyplniť našim mladším spolužiakom a ľudom, ktorých stretneme pri vodných plochách.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Radi kŕmite labute?&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;áno&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;nie&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ak áno, prečo ste to robili? (môžete vybrať aj viac možností)&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;aby neboli hladné&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo ma to tešilo&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo ma to bavilo&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo mám rád labute&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lebo im to pomáha&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;pre nie4o iné (napíš) ________________________________&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Počuli ste o tom, že si niekto myslí, že kŕmenie labutí im škodí?&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;áno&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;nie&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ak áno, ako by im to mohlo škodiť?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
________________________________________________________&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=S%C3%BAbor:Vcela_na_tacke.jpg&amp;diff=310</id>
		<title>Súbor:Vcela na tacke.jpg</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=S%C3%BAbor:Vcela_na_tacke.jpg&amp;diff=310"/>
		<updated>2016-11-29T17:39:22Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=S%C3%BAbor:Yay_fll_11_29.zip&amp;diff=309</id>
		<title>Súbor:Yay fll 11 29.zip</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=S%C3%BAbor:Yay_fll_11_29.zip&amp;diff=309"/>
		<updated>2016-11-29T17:36:39Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2016&amp;diff=308</id>
		<title>Denníček - november 2016</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2016&amp;diff=308"/>
		<updated>2016-11-29T17:35:52Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #EEFFEE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;3.11. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dnes nám chýbali Tiger aj Krotiteľ, ale využili sme čas a zopakovali sme si poradie jázd a čo všetko na to treba spraviť - keďže Patrik novú verziu ešte nevidel. &lt;br /&gt;
&lt;br /&gt;
Rak konečne našiel mechanizmus, ktorý dokáže doviezť krabičku - ukázalo sa, že je lepšie, aby bola k dávkovaču pristavená kratšou stranou, tak funguje spoľahlivo. Po zjednodušení nadstavca ním po doručení krabičky ľahko vezme aj gorilu:&lt;br /&gt;
&lt;br /&gt;
[[Image:nova_krabicka.jpg|350px]] [[Image:na_gorilu.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Rak sa pustil aj do programu, ale je tu zatiaľ iba prvá verzia, ktorá sa pohybuje prirýchlo a nepresne, ale vieme čo treba robiť ďalej.&lt;br /&gt;
&lt;br /&gt;
Program: [[Media:p5.zip|p5.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik: urobil som program na doručenie žraloka. Žraloka povedie po okraji mapy povedľa ohradenej cesty. bolo naprogramované aj druhé riešenie, ale kedže sme nedokázali zvýšiť úšpešnosť na viac ako päťdesiat percent riešenia sme sa vzdali. Bol použitý naopak otočený nadstavec od Raka na gorilu a krabicu. Robot funguje spoľahlivo po opatrnom zrýchľovaní a zameranim sa o čiaru.&lt;br /&gt;
&lt;br /&gt;
[[Image:startovna_poloha.jpg|350px]] [[Image:vysledok.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Patrik: tu je program na žraloka&lt;br /&gt;
&lt;br /&gt;
program: [[Media:zralok.zip|zralok.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFEEAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;8.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matej vytvoril program na doručenie krabičky a odvezenie gorily, treba ešte donastavovať otáčky v niektorých blokoch.&lt;br /&gt;
&lt;br /&gt;
program:[[Media:gorila.zip|gorila.zip]]&lt;br /&gt;
&lt;br /&gt;
Samo vyrobil začiatok programu na včelu a blok, aby sa naraz obidva medium motory aktivovali, je univerzálny na pohyb oboma smermi. Má dva parametre:&lt;br /&gt;
rýchlosť, ktorou sa budú medium motory otáčať a uhol v stupňoch - ktorý môže byť aj kladný aj záporný. Keďže ozubené kolieska sa musia otáčať opačnými smermi, rýchlosť pohybu jedného motora musí mať oproti druhému opačné znamienko: ak rýchlosť vynásobíme číslom -1, tak zmení znamienko, napríklad -1 x 75 = -75. V tom prípade musí byť aj počet stupňov záporný a podmienka v čakacom bloku, ktorá používa otáčkový senzor musí použiť znamienko &amp;quot;&amp;gt;&amp;quot; - s kódom 2 a znamienko &amp;quot;&amp;lt;&amp;quot; - s kódom 4. Tieto kódy vieme vypočítať z veľkosti rýchlosti takto:&lt;br /&gt;
&lt;br /&gt;
      rychlost                 75                                      -75          -75&lt;br /&gt;
 3 - ----------   napr:   3 - ---- = 3 - 1 = 2 (znamienko &amp;quot;&amp;gt;&amp;quot;) a  3 - ----- =  3 - ------ = 3 - (-1) = 3 + 1 = 4  (znamienko &amp;quot;&amp;lt;&amp;quot;) &lt;br /&gt;
     |rychlost|                75                                     |-75|          75&lt;br /&gt;
&lt;br /&gt;
pričom |x| označuje absolútnu hodnotu z čísla x, čiže to isté číslo bez znamienka, napríklad, |-34| = 34, alebo |17| = 17.&lt;br /&gt;
&lt;br /&gt;
program:[[Media:projekt_vcela.zip|projekt_vcela.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik pracoval na programe pre prejdenie slepeckým plotom a stláčanie dávkovača krmiva, je na dobrej ceste:&lt;br /&gt;
&lt;br /&gt;
program:[[Media:vydavkovanie.zip|vydavkovanie.zip]]&lt;br /&gt;
&lt;br /&gt;
Okrem toho riešili misie FLL dva krásne a veľmi rýchle škrečky, ktorými nám urobil radosť Ružový Panter.&lt;br /&gt;
&lt;br /&gt;
Tiger trochu lepšie upevnil káble na robotovi a vymyslel zarážku na uchytenie nadstavca na včelu a Žralok namontoval klapku na stláčanie dávkovača.&lt;br /&gt;
&lt;br /&gt;
[[Image:opierka_na_vydavkovanie.jpg|300px]] [[Image:skrecok1.jpg|300px]] [[Image:skrecok2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Naša pracovná nástenka aktuálne vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:nastenka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #AAFFAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;15.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oliver &amp;amp; Oliver pracovali na výskumnom projekte - hľadali informácie o zvieratách. S projektom sme veľmi pozadu, ale nič sa nedá uponáhľať. Tu sú čiastkové informácie, niektoré možno použijeme: [[Media:problemy zvierat.zip|problemy zvierat.zip]]&lt;br /&gt;
&lt;br /&gt;
Matej ďalej dolaďoval svoj program na dovezenie krabice a dovezenie gorily na Základňu. Priebežnú verziu programu si sem odkladáme: [[Media:krabicaGorila.zip|krabicaGorila.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik vylepšoval svoj program na vydávkovanie - snaží sa zlepšiť presnosť použitím senzoru - na robota namontoval tretí svetelný senzor do stredu a opravil konštrukciu, keďže jeden z dvoch predchádzajúcich senzorov nebol dobre uchytený a konštrukcia nebola dostatočne symetrická.&lt;br /&gt;
&lt;br /&gt;
Samo a Oliver pracovali na programe na vyloženie včely na úľ. Prišli sme na to, že zvolená metóda nie je ideálna, lebo včela je úzka a tlačidlo na úli veľmi malé... Ale zdá sa, že sa to nakoniec podarilo - len si to vyžaduje presný štart a trochu štastia :-), ale inak sa to podarí - Samo využil aj Patrikov blok na opatrný pohyb, vďaka čomu sa robot pri štarte nemykne a nestratí presné smerovanie a takto môže pri jazde ku včele vyvinúť vyššiu rýchlosť. Včela je napichnutá na pohyblivú ruku, robot ju položí na úľ a vypadnutý med dovezie na Základňu - robotovi Samo pristaval tácku, na ktorú med pri položení včely vypadne. Montuje sa dopredu na zelený zhŕňač.&lt;br /&gt;
&lt;br /&gt;
Samo: Včela je hotová :D :[[Media:vcela_hotova.zip|vcela_hotova.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:vcela_hotova.jpg|300px]] [[Image:tri_senzory.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Po dlhšom čase sme sa zasa zahrali tímovú hru, kde sa bolo treba veľa radiť. Zistili sme, že nápady, ktoré dostávame, nemáme hneď vykríknuť, ale si ich najskôr máme nechať v hlave trochu sa nad nimi zamyslieť - a pritom zároveň počúvať, čo hovoria ostatní a keď bude vhodná príležitosť a stále sa nám nápad bude zdať dobrý, nadviazať na to, čo hovoril niekto pred nami a povedať aj svoj nápad. Vyskúšali sme druhú podobnú hru, v ktorej sme sa rozprávali v kruhu - každý niečo povedal, nadviazal na toho predchádzajúceho. Vyzeralo to oveľa lepšie a dalo sa na to pozerať! (ale iba chvíľu!) Toto určite ešte zopakujeme! Radšej sa rozprávať pekne po jednom do kolečka, ako kričať jeden na druhého. :-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #EEFFEE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;17.11. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Patrik dokončil &amp;quot;rakov&amp;quot; program(krabica a gorila) tak že funguje aj peť raz po sebe .&lt;br /&gt;
&lt;br /&gt;
[[Media:krabica_Gorila.zip|krabica_Gorila.zip]]&lt;br /&gt;
&lt;br /&gt;
Potom Patrik zdokonalil slepca ked sa presne zarovnal pomocou tromi senzormi a vydavkovalo uz niektoru potravu treba doladit a treba vymisliet uz len&lt;br /&gt;
prinesenie na zakladnu prasa a krabicu s potravou.&lt;br /&gt;
&lt;br /&gt;
Patrik: uz len doladit a dokocit [[Media:slepecvydavkovanie.zip|slepecvydavkovanie.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #EEFFCE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;22.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Robili sme malú rekapituláciu jázd:&lt;br /&gt;
&lt;br /&gt;
# krabica k dávkovaču + dovezenie gorily na Základňu: 11 sekúnd&lt;br /&gt;
# vyzdvihnutie včely, posunutie prasiatka, položenie včely na úľ a dovezenie medu na Základňu, 15 sekúnd&lt;br /&gt;
# slepecký plot, nadávkovanie krmiva (treba ešte dokončiť dotlačenie krabičky a prasiatka na Základňu), zatiaľ 17 sekúnd&lt;br /&gt;
# žralok - dotlačenie žraloka do obdĺžnika, 10 sekúnd&lt;br /&gt;
&lt;br /&gt;
Tiger vymenil motor, ktorý vydával čudné zvuky a prestaval krabičku pre dávkovač krmiva, aby nemala dva vyčnievajúce konce, ktoré prekážali. Vytvoril malý doplnok, pomocou ktorého sa krmivo dovezie do najbližšieho kruhu a naprogramoval ho.&lt;br /&gt;
&lt;br /&gt;
Ružový Panter spojil všetky doterajšie programy a naprogramoval menu, aby sa stačilo stále stláčať stredné tlačidlo na EV3 na štartovanie nasledujúcej misie, Tiger k tomu pridal dotykový senzor, ktorým sa nasledujúca misia dá odštartovať tiež.&lt;br /&gt;
&lt;br /&gt;
Ružový panter dnes spravil:&lt;br /&gt;
&lt;br /&gt;
program: [[Media:yay_fll.zip|yay_fll.zip]]&lt;br /&gt;
&lt;br /&gt;
Rak začal programovať najdlhšiu piatu jazdu - začíname dovezením krmiva k plameniakovi pomocou špeciálneho malého mechanického dávkovača, ktorý zostrojil. Tu je jeho program: [[Media:jazda5_zaciatok.zip|jazda5_zaciatok.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dovoz_krmiva.jpg|170px]] [[Image:krabicka.jpg|430px]] [[Image:automaticky_davkovac.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFEECE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;24.11. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dokončili sme dnes program vydávkovanie a slepca a zrhnuli sme krabičku s jedlom a s prasaťom.&lt;br /&gt;
&lt;br /&gt;
[[Image:zhrnac_prasaci.jpg|300px]]&lt;br /&gt;
[[Image:novy_davkovac.jpg|300px]]&lt;br /&gt;
[[Image:novy_davkovac2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
program: [[Media:vydavkovanie_fll.zip|vydavkovanie_fll.zip]]&lt;br /&gt;
&lt;br /&gt;
Vybrali sme si prekrmovanie vtákov ľuďmi na vyskumný projekt. Presnejšie sme si vybrali zviera labuť. Všetci zbierajte informácie o labutiach a ich prekrmovaní. V sobotu 3.12. alebo v nedeľu 4.12. pôjdeme na Draždiak vyspovedať miestnych obyvateľov.&lt;br /&gt;
&lt;br /&gt;
posledná verzia celého programu aj s novým vydávkovaním: [[Media:yay_fll_11_25.zip|yay_fll_11_25.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #EEEEFF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;29.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dnes sme sa zamerali hlavne na výskumný projekt, Ružový Panter vymyslel úlohy, ktoré chceme stihnúť splniť, napísal ich na tabuľu a rozdelili sme si prácu:&lt;br /&gt;
&lt;br /&gt;
[[Image:projekt1.jpg|300px]] [[Image:projekt2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Viacerí sa pokúšali poskladať doplnok na otáčanie modelom záchrany zvierat, ale zatiaľ nie je nič hotové, akurát Matej sa zaradil medzi &amp;quot;tých, ktorí rozobrali robota&amp;quot;. :-) &lt;br /&gt;
&lt;br /&gt;
Ale potom vytvoril model na vyloženie krmiva k plameniakovi, ktorý je pekný aj funguje, ale treba ho dať nižšie, inak bude krmivo odskakovať príliš ďaleko.&lt;br /&gt;
&lt;br /&gt;
[[Image:vylozenie_krmiva_plameniak_v1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Patrik programoval doručenie krmiva k netopierovi a plameniakovi a otočenie modelu.&lt;br /&gt;
&lt;br /&gt;
Patrik: začnutá jazda, skončilo to pri netopierovi.&lt;br /&gt;
&lt;br /&gt;
program: [[Media:kkrmenie_fll.zip|kkrmenie_fll.zip]]&lt;br /&gt;
&lt;br /&gt;
Krotiteľ: zostrojil som tácku na dovezenie včely na úľ a upravil som program, aby robot najskôr doviezol včelu na Základňu, kde ju ručne preložíme na tácku a potom ju aj s táckou dovezie na úľ. Ešte ho treba mierne doladiť.&lt;br /&gt;
&lt;br /&gt;
[[Image:vcela_na_tacke.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
program: [[Media:yay_fll_11_29.zip|yay_fll_11_29.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=271</id>
		<title>Výskumný projekt FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=271"/>
		<updated>2016-11-29T14:38:51Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V našom výskumnom projekte sa zameriavame na nesprávne kŕmenie voľne žijúcich zvierat, najmä vtákov, konkrétne labutí.&lt;br /&gt;
&lt;br /&gt;
Tu sú informácie, ktoré sme o tejto téme zistili:&lt;br /&gt;
&lt;br /&gt;
Labuť:&lt;br /&gt;
&lt;br /&gt;
* informácia&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Kŕmenie divých zvierat&lt;br /&gt;
&lt;br /&gt;
* [http://www.tvnoviny.sk/domace/1839044_radi-krmime-vtakov-na-jazerach-sposobujeme-tym-viac-skody-ako-osohu Radi kŕmime vtákov na jazerách. Spôsobujeme tým viac škody ako osohu] - reportáž TV Markíza&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Naše riešenie, ktoré navrhujeme&lt;br /&gt;
&lt;br /&gt;
* Navrhnúť firmu ktorá by prímala bezdomovcov a tí by mali ochraňovať zvieratá v jazerách pred luďmi ktorí ich kŕmia a dávať im pokuty.&lt;br /&gt;
* informácia&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=270</id>
		<title>Výskumný projekt FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=270"/>
		<updated>2016-11-29T14:36:08Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V našom výskumnom projekte sa zameriavame na nesprávne kŕmenie voľne žijúcich zvierat, najmä vtákov, konkrétne labutí.&lt;br /&gt;
&lt;br /&gt;
Tu sú informácie, ktoré sme o tejto téme zistili:&lt;br /&gt;
&lt;br /&gt;
Labuť:&lt;br /&gt;
&lt;br /&gt;
* informácia&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Kŕmenie divých zvierat&lt;br /&gt;
&lt;br /&gt;
* [http://www.tvnoviny.sk/domace/1839044_radi-krmime-vtakov-na-jazerach-sposobujeme-tym-viac-skody-ako-osohu Radi kŕmime vtákov na jazerách. Spôsobujeme tým viac škody ako osohu] - reportáž TV Markíza&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Naše riešenie, ktoré navrhujeme&lt;br /&gt;
&lt;br /&gt;
* Navrhnúť firmu ktorá by prímala bezdomovcov a tí by maly ochraňovať zvieratá v jazerách pred luďmi ktorý ich kŕmia a dávať im pokuty.&lt;br /&gt;
* informácia&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=269</id>
		<title>Výskumný projekt FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=269"/>
		<updated>2016-11-29T14:35:56Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V našom výskumnom projekte sa zameriavame na nesprávne kŕmenie voľne žijúcich zvierat, najmä vtákov, konkrétne labutí.&lt;br /&gt;
&lt;br /&gt;
Tu sú informácie, ktoré sme o tejto téme zistili:&lt;br /&gt;
&lt;br /&gt;
Labuť:&lt;br /&gt;
&lt;br /&gt;
* informácia&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Kŕmenie divých zvierat&lt;br /&gt;
&lt;br /&gt;
* [http://www.tvnoviny.sk/domace/1839044_radi-krmime-vtakov-na-jazerach-sposobujeme-tym-viac-skody-ako-osohu Radi kŕmime vtákov na jazerách. Spôsobujeme tým viac škody ako osohu] - reportáž TV Markíza&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Naše riešenie, ktoré navrhujeme&lt;br /&gt;
&lt;br /&gt;
* Nvrhnúť firmu ktorá by prímala bezdomovcov a tí by maly ochraňovať zvieratá v jazerách pred luďmi ktorý ich kŕmia a dávať im pokuty.&lt;br /&gt;
* informácia&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=268</id>
		<title>Výskumný projekt FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=268"/>
		<updated>2016-11-29T14:35:27Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V našom výskumnom projekte sa zameriavame na nesprávne kŕmenie voľne žijúcich zvierat, najmä vtákov, konkrétne labutí.&lt;br /&gt;
&lt;br /&gt;
Tu sú informácie, ktoré sme o tejto téme zistili:&lt;br /&gt;
&lt;br /&gt;
Labuť:&lt;br /&gt;
&lt;br /&gt;
* informácia&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Kŕmenie divých zvierat&lt;br /&gt;
&lt;br /&gt;
* [http://www.tvnoviny.sk/domace/1839044_radi-krmime-vtakov-na-jazerach-sposobujeme-tym-viac-skody-ako-osohu Radi kŕmime vtákov na jazerách. Spôsobujeme tým viac škody ako osohu] - reportáž TV Markíza&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Naše riešenie, ktoré navrhujeme&lt;br /&gt;
&lt;br /&gt;
* Nvrhnúť firmu ktorá by prímala bezdomovcov a tí by maly ochraňovať zvieratá pred luďmi ktorý ich kŕmia a dávať im pokuty.&lt;br /&gt;
* informácia&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=267</id>
		<title>Výskumný projekt FLL 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=V%C3%BDskumn%C3%BD_projekt_FLL_2016/2017&amp;diff=267"/>
		<updated>2016-11-29T14:35:05Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V našom výskumnom projekte sa zameriavame na nesprávne kŕmenie voľne žijúcich zvierat, najmä vtákov, konkrétne labutí.&lt;br /&gt;
&lt;br /&gt;
Tu sú informácie, ktoré sme o tejto téme zistili:&lt;br /&gt;
&lt;br /&gt;
Labuť:&lt;br /&gt;
&lt;br /&gt;
* informácia&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Kŕmenie divých zvierat&lt;br /&gt;
&lt;br /&gt;
* [http://www.tvnoviny.sk/domace/1839044_radi-krmime-vtakov-na-jazerach-sposobujeme-tym-viac-skody-ako-osohu Radi kŕmime vtákov na jazerách. Spôsobujeme tým viac škody ako osohu] - reportáž TV Markíza&lt;br /&gt;
* informácia&lt;br /&gt;
&lt;br /&gt;
Naše riešenie, ktoré navrhujeme&lt;br /&gt;
&lt;br /&gt;
* Spraviť firmu ktorá by prímala bezdomovcov a tí by maly ochraňovať zvieratá pred luďmi ktorý ich kŕmia a dávať im pokuty.&lt;br /&gt;
* informácia&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2016&amp;diff=227</id>
		<title>Denníček - november 2016</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2016&amp;diff=227"/>
		<updated>2016-11-15T18:30:37Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #EEFFEE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;3.11. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dnes nám chýbali Tiger aj Krotiteľ, ale využili sme čas a zopakovali sme si poradie jázd a čo všetko na to treba spraviť - keďže Patrik novú verziu ešte nevidel. &lt;br /&gt;
&lt;br /&gt;
Rak konečne našiel mechanizmus, ktorý dokáže doviezť krabičku - ukázalo sa, že je lepšie, aby bola k dávkovaču pristavená kratšou stranou, tak funguje spoľahlivo. Po zjednodušení nadstavca ním po doručení krabičky ľahko vezme aj gorilu:&lt;br /&gt;
&lt;br /&gt;
[[Image:nova_krabicka.jpg|350px]] [[Image:na_gorilu.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Rak sa pustil aj do programu, ale je tu zatiaľ iba prvá verzia, ktorá sa pohybuje prirýchlo a nepresne, ale vieme čo treba robiť ďalej.&lt;br /&gt;
&lt;br /&gt;
Program: [[Media:p5.zip|p5.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik: urobil som program na doručenie žraloka. Žraloka povedie po okraji mapy povedľa ohradenej cesty. bolo naprogramované aj druhé riešenie, ale kedže sme nedokázali zvýšiť úšpešnosť na viac ako päťdesiat percent riešenia sme sa vzdali. Bol použitý naopak otočený nadstavec od Raka na gorilu a krabicu. Robot funguje spoľahlivo po opatrnom zrýchľovaní a zameranim sa o čiaru.&lt;br /&gt;
&lt;br /&gt;
[[Image:startovna_poloha.jpg|350px]] [[Image:vysledok.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Patrik: tu je program na žraloka&lt;br /&gt;
&lt;br /&gt;
program: [[Media:zralok.zip|zralok.zip]]&lt;br /&gt;
Vcela je hotova: [[Media:vcela_hotova.zip]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFEEAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;8.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matej vytvoril program na doručenie krabičky a odvezenie gorily, treba ešte donastavovať otáčky v niektorých blokoch.&lt;br /&gt;
&lt;br /&gt;
program:[[Media:gorila.zip|gorila.zip]]&lt;br /&gt;
&lt;br /&gt;
Samo vyrobil začiatok programu na včelu a blok, aby sa naraz obidva medium motory aktivovali, je univerzálny na pohyb oboma smermi. Má dva parametre:&lt;br /&gt;
rýchlosť, ktorou sa budú medium motory otáčať a uhol v stupňoch - ktorý môže byť aj kladný aj záporný. Keďže ozubené kolieska sa musia otáčať opačnými smermi, rýchlosť pohybu jedného motora musí mať oproti druhému opačné znamienko: ak rýchlosť vynásobíme číslom -1, tak zmení znamienko, napríklad -1 x 75 = -75. V tom prípade musí byť aj počet stupňov záporný a podmienka v čakacom bloku, ktorá používa otáčkový senzor musí použiť znamienko &amp;quot;&amp;gt;&amp;quot; - s kódom 2 a znamienko &amp;quot;&amp;lt;&amp;quot; - s kódom 4. Tieto kódy vieme vypočítať z veľkosti rýchlosti takto:&lt;br /&gt;
&lt;br /&gt;
      rychlost                 75                                      -75          -75&lt;br /&gt;
 3 - ----------   napr:   3 - ---- = 3 - 1 = 2 (znamienko &amp;quot;&amp;gt;&amp;quot;) a  3 - ----- =  3 - ------ = 3 - (-1) = 3 + 1 = 4  (znamienko &amp;quot;&amp;lt;&amp;quot;) &lt;br /&gt;
     |rychlost|                75                                     |-75|          75&lt;br /&gt;
&lt;br /&gt;
pričom |x| označuje absolútnu hodnotu z čísla x, čiže to isté číslo bez znamienka, napríklad, |-34| = 34, alebo |17| = 17.&lt;br /&gt;
&lt;br /&gt;
program:[[Media:projekt_vcela.zip|projekt_vcela.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik pracoval na programe pre prejdenie slepeckým plotom a stláčanie dávkovača krmiva, je na dobrej ceste:&lt;br /&gt;
&lt;br /&gt;
program:[[Media:vydavkovanie.zip|vydavkovanie.zip]]&lt;br /&gt;
&lt;br /&gt;
Okrem toho riešili misie FLL dva krásne a veľmi rýchle škrečky, ktorými nám urobil radosť Ružový Panter.&lt;br /&gt;
&lt;br /&gt;
Tiger trochu lepšie upevnil káble na robotovi a vymyslel zarážku na uchytenie nadstavca na včelu a Žralok namontoval klapku na stláčanie dávkovača.&lt;br /&gt;
&lt;br /&gt;
[[Image:opierka_na_vydavkovanie.jpg|300px]] [[Image:skrecok1.jpg|300px]] [[Image:skrecok2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Naša pracovná nástenka aktuálne vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:nastenka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #AAFFAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;15.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PROJEKT:[[Media:problemy zvierat.zip|problemy zvierat.zip]]&lt;br /&gt;
&lt;br /&gt;
PROJEKT:[[Media:krabicaGorila.zip|krabicaGorila.zip]]&lt;br /&gt;
Včela je hotová :D :[[Media:vcela_hotova.zip|vcela_hotova.zip]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=S%C3%BAbor:Vcela_hotova.zip&amp;diff=226</id>
		<title>Súbor:Vcela hotova.zip</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=S%C3%BAbor:Vcela_hotova.zip&amp;diff=226"/>
		<updated>2016-11-15T18:28:47Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2016&amp;diff=225</id>
		<title>Denníček - november 2016</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Denn%C3%AD%C4%8Dek_-_november_2016&amp;diff=225"/>
		<updated>2016-11-15T18:28:27Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #EEFFEE;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;3.11. štvrtok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dnes nám chýbali Tiger aj Krotiteľ, ale využili sme čas a zopakovali sme si poradie jázd a čo všetko na to treba spraviť - keďže Patrik novú verziu ešte nevidel. &lt;br /&gt;
&lt;br /&gt;
Rak konečne našiel mechanizmus, ktorý dokáže doviezť krabičku - ukázalo sa, že je lepšie, aby bola k dávkovaču pristavená kratšou stranou, tak funguje spoľahlivo. Po zjednodušení nadstavca ním po doručení krabičky ľahko vezme aj gorilu:&lt;br /&gt;
&lt;br /&gt;
[[Image:nova_krabicka.jpg|350px]] [[Image:na_gorilu.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Rak sa pustil aj do programu, ale je tu zatiaľ iba prvá verzia, ktorá sa pohybuje prirýchlo a nepresne, ale vieme čo treba robiť ďalej.&lt;br /&gt;
&lt;br /&gt;
Program: [[Media:p5.zip|p5.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik: urobil som program na doručenie žraloka. Žraloka povedie po okraji mapy povedľa ohradenej cesty. bolo naprogramované aj druhé riešenie, ale kedže sme nedokázali zvýšiť úšpešnosť na viac ako päťdesiat percent riešenia sme sa vzdali. Bol použitý naopak otočený nadstavec od Raka na gorilu a krabicu. Robot funguje spoľahlivo po opatrnom zrýchľovaní a zameranim sa o čiaru.&lt;br /&gt;
&lt;br /&gt;
[[Image:startovna_poloha.jpg|350px]] [[Image:vysledok.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
Patrik: tu je program na žraloka&lt;br /&gt;
&lt;br /&gt;
program: [[Media:zralok.zip|zralok.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFEEAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;8.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matej vytvoril program na doručenie krabičky a odvezenie gorily, treba ešte donastavovať otáčky v niektorých blokoch.&lt;br /&gt;
&lt;br /&gt;
program:[[Media:gorila.zip|gorila.zip]]&lt;br /&gt;
&lt;br /&gt;
Samo vyrobil začiatok programu na včelu a blok, aby sa naraz obidva medium motory aktivovali, je univerzálny na pohyb oboma smermi. Má dva parametre:&lt;br /&gt;
rýchlosť, ktorou sa budú medium motory otáčať a uhol v stupňoch - ktorý môže byť aj kladný aj záporný. Keďže ozubené kolieska sa musia otáčať opačnými smermi, rýchlosť pohybu jedného motora musí mať oproti druhému opačné znamienko: ak rýchlosť vynásobíme číslom -1, tak zmení znamienko, napríklad -1 x 75 = -75. V tom prípade musí byť aj počet stupňov záporný a podmienka v čakacom bloku, ktorá používa otáčkový senzor musí použiť znamienko &amp;quot;&amp;gt;&amp;quot; - s kódom 2 a znamienko &amp;quot;&amp;lt;&amp;quot; - s kódom 4. Tieto kódy vieme vypočítať z veľkosti rýchlosti takto:&lt;br /&gt;
&lt;br /&gt;
      rychlost                 75                                      -75          -75&lt;br /&gt;
 3 - ----------   napr:   3 - ---- = 3 - 1 = 2 (znamienko &amp;quot;&amp;gt;&amp;quot;) a  3 - ----- =  3 - ------ = 3 - (-1) = 3 + 1 = 4  (znamienko &amp;quot;&amp;lt;&amp;quot;) &lt;br /&gt;
     |rychlost|                75                                     |-75|          75&lt;br /&gt;
&lt;br /&gt;
pričom |x| označuje absolútnu hodnotu z čísla x, čiže to isté číslo bez znamienka, napríklad, |-34| = 34, alebo |17| = 17.&lt;br /&gt;
&lt;br /&gt;
program:[[Media:projekt_vcela.zip|projekt_vcela.zip]]&lt;br /&gt;
&lt;br /&gt;
Patrik pracoval na programe pre prejdenie slepeckým plotom a stláčanie dávkovača krmiva, je na dobrej ceste:&lt;br /&gt;
&lt;br /&gt;
program:[[Media:vydavkovanie.zip|vydavkovanie.zip]]&lt;br /&gt;
&lt;br /&gt;
Okrem toho riešili misie FLL dva krásne a veľmi rýchle škrečky, ktorými nám urobil radosť Ružový Panter.&lt;br /&gt;
&lt;br /&gt;
Tiger trochu lepšie upevnil káble na robotovi a vymyslel zarážku na uchytenie nadstavca na včelu a Žralok namontoval klapku na stláčanie dávkovača.&lt;br /&gt;
&lt;br /&gt;
[[Image:opierka_na_vydavkovanie.jpg|300px]] [[Image:skrecok1.jpg|300px]] [[Image:skrecok2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Naša pracovná nástenka aktuálne vyzerá takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:nastenka.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #AAFFAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;15.11. utorok:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PROJEKT:[[Media:problemy zvierat.zip|problemy zvierat.zip]]&lt;br /&gt;
&lt;br /&gt;
PROJEKT:[[Media:krabicaGorila.zip|krabicaGorila.zip]]&lt;br /&gt;
Včela je hotová :D :[[Media:vcela_hotova.zip|vcela_hotova.zip]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=207</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=207"/>
		<updated>2016-11-08T14:11:25Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na http://kruzok.net/index.php?title=Samuel&amp;amp;redirect=no&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=194</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=194"/>
		<updated>2016-10-28T08:45:16Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na http://kruzok.net/index.php?title=Samuel&amp;amp;redirect=no&lt;br /&gt;
[[Image:had.jpg|300px]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=193</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=193"/>
		<updated>2016-10-28T08:44:57Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na http://kruzok.net/index.php?title=Samuel&amp;amp;redirect=no&lt;br /&gt;
[[Image:upevnenie_ruky_na_zraloka.jpg|300px]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Jazdy&amp;diff=180</id>
		<title>Jazdy</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Jazdy&amp;diff=180"/>
		<updated>2016-10-25T15:48:52Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Jazda: gorila + umiestniť krabičku na krmivo&lt;br /&gt;
&lt;br /&gt;
2. Jazda: žralok + slepecc + vysypať krmivo + zobrať krabičku s krmivom&lt;br /&gt;
&lt;br /&gt;
3. Jazda: prasa + včela + položiť včelu + med&lt;br /&gt;
&lt;br /&gt;
4. Jazda (pôjde len ak bude čas): 2 krmivá netopierovi + 2 krmivá plameniakovi + výmena - 2 stratégie:&lt;br /&gt;
     A. vymeniť zvieratko (napumpovať), zhodiť to, čo prišlo a položiť gorilu&lt;br /&gt;
     B. zhodiť čo máme u nás (už to súper napumpoval), položiť gorilu a napumpovať &lt;br /&gt;
&lt;br /&gt;
Posledná Jazda (? a najdlhšia? :D ): položiť dve krmivá ku gorile + položiť prasa + umiestniť prvý koláč + továreň na mlieko + ochranárka a pandy + druhý koláč + jašterica a robot sa zavesí&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=179</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=179"/>
		<updated>2016-10-25T14:10:16Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na http://kruzok.net/index.php?title=Samuel&amp;amp;redirect=no&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=178</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=178"/>
		<updated>2016-10-25T14:09:46Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;br /&gt;
Keby ste chceli navštíviť moju stránku choďte na Samuel.net&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=177</id>
		<title>Samuel Zuzák</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel_Zuz%C3%A1k&amp;diff=177"/>
		<updated>2016-10-25T14:07:31Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=O_mne&amp;diff=176</id>
		<title>O mne</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=O_mne&amp;diff=176"/>
		<updated>2016-10-25T14:06:36Z</updated>

		<summary type="html">&lt;p&gt;Samuel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja som Samuel Zuzak a veeeélmy rád sa smejem.😂&lt;br /&gt;
V mojom tíme ma prezívajú 🐍, lebo mám doma koralovku kalifornskú.&lt;br /&gt;
Mám desať rokov a rád stávam z LEGA.&lt;br /&gt;
Tiež rád programujem. V utorok a štvrtok mám robotický krúžok a v piatok mám &lt;br /&gt;
programovanie.&lt;br /&gt;
V pondelok a v stredu chodím na klavír.&lt;br /&gt;
Moje najoblúbenejšie hry sú Minecraft, Sabnautica, Don´t starve a mám tiež rád hry na Frive.&lt;br /&gt;
Preto sa nečudujte keby ste ma niekedy stretli hrať eggwars.&lt;br /&gt;
Moje minecraftové meno je SamuelZuzak.&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
	<entry>
		<id>https://kruzok.net/index.php?title=Samuel&amp;diff=175</id>
		<title>Samuel</title>
		<link rel="alternate" type="text/html" href="https://kruzok.net/index.php?title=Samuel&amp;diff=175"/>
		<updated>2016-10-25T14:01:37Z</updated>

		<summary type="html">&lt;p&gt;Samuel: Samuel premiestnil stránku Samuel na Samuel Zuzák - zanietený programátor a dobrý hráč&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#presmeruj [[Samuel Zuzák - zanietený programátor a dobrý hráč]]&lt;/div&gt;</summary>
		<author><name>Samuel</name></author>
	</entry>
</feed>