
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.robotika.sk/robowiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tomas</id>
		<title>RoboWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.robotika.sk/robowiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tomas"/>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Special:Contributions/Tomas"/>
		<updated>2026-05-18T14:20:35Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Vianoce_s_robotnackou&amp;diff=3901</id>
		<title>Vianoce s robotnackou</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Vianoce_s_robotnackou&amp;diff=3901"/>
				<updated>2008-12-16T21:24:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Obrazky robene imaginom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Obrazky robene imaginom ===&lt;br /&gt;
&lt;br /&gt;
= VLOCKA =&lt;br /&gt;
&lt;br /&gt;
 to vlocka :r :d :u&lt;br /&gt;
  if :u &amp;gt;=1 &lt;br /&gt;
  [repeat :r [fd :d&lt;br /&gt;
              vlocka :r :d/3 :u-1&lt;br /&gt;
              pu&lt;br /&gt;
              bk :d&lt;br /&gt;
              pd&lt;br /&gt;
  if :u=1 [fd :d*2/3 &lt;br /&gt;
           lt 45 &lt;br /&gt;
           fd :d/3&lt;br /&gt;
           pu&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           pd&lt;br /&gt;
           rt 90&lt;br /&gt;
           fd :d/3&lt;br /&gt;
           pu&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           lt 45&lt;br /&gt;
           bk :d*2/3&lt;br /&gt;
           pd &lt;br /&gt;
           ]            &lt;br /&gt;
              lt 360/:r&lt;br /&gt;
           ]&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
'''r''' - koľko &amp;quot;cípa je vločka&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''d''' - základná dĺžka vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
'''u''' - hustota vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
Odporúčam zadať: '''vlocka 8 150 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= STROM =&lt;br /&gt;
&lt;br /&gt;
 to strom :d :n&lt;br /&gt;
  fd :d&lt;br /&gt;
  repeat :n[lt 90 fd :d rt 135 fd sqrt(:d*:d*2) lt 45]&lt;br /&gt;
  lt 180&lt;br /&gt;
  repeat :n[lt 45 fd sqrt(:d*:d*2) rt 135 fd :d lt 90]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
'''strom 50 3'''&lt;br /&gt;
&lt;br /&gt;
= STROM 2 =&lt;br /&gt;
&lt;br /&gt;
 to binstrom :d :n&lt;br /&gt;
   if :n=0&lt;br /&gt;
   [&lt;br /&gt;
     fd :d&lt;br /&gt;
     bk :d&lt;br /&gt;
   ]&lt;br /&gt;
   if :n&amp;gt;0&lt;br /&gt;
   [&lt;br /&gt;
     fd :d&lt;br /&gt;
     lt 60&lt;br /&gt;
     binstrom :d*2/3 :n-1&lt;br /&gt;
     rt 120&lt;br /&gt;
     binstrom :d*2/3 :n-1&lt;br /&gt;
     lt 60&lt;br /&gt;
     bk :d&lt;br /&gt;
   ]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
'''binstrom 150 4'''&lt;br /&gt;
&lt;br /&gt;
= hviezda =&lt;br /&gt;
 to 5hviezda :d&lt;br /&gt;
  repeat 5&lt;br /&gt;
  [&lt;br /&gt;
  fd :d&lt;br /&gt;
  lt 144&lt;br /&gt;
  ]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
'''5hviezda 100'''&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Vianoce_s_robotnackou&amp;diff=3899</id>
		<title>Vianoce s robotnackou</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Vianoce_s_robotnackou&amp;diff=3899"/>
				<updated>2008-12-16T21:18:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: New page: === Obrazky robene imaginom ===  VLOCKA   to vlocka :r :d :u   if :u &amp;gt;=1    [repeat :r [fd :d               vlocka :r :d/3 :u-1               pu               bk :d               pd   if :...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Obrazky robene imaginom ===&lt;br /&gt;
&lt;br /&gt;
VLOCKA&lt;br /&gt;
&lt;br /&gt;
 to vlocka :r :d :u&lt;br /&gt;
  if :u &amp;gt;=1 &lt;br /&gt;
  [repeat :r [fd :d&lt;br /&gt;
              vlocka :r :d/3 :u-1&lt;br /&gt;
              pu&lt;br /&gt;
              bk :d&lt;br /&gt;
              pd&lt;br /&gt;
  if :u=1 [fd :d*2/3 &lt;br /&gt;
           lt 45 &lt;br /&gt;
           fd :d/3&lt;br /&gt;
           pu&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           pd&lt;br /&gt;
           rt 90&lt;br /&gt;
           fd :d/3&lt;br /&gt;
           pu&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           lt 45&lt;br /&gt;
           bk :d*2/3&lt;br /&gt;
           pd &lt;br /&gt;
           ]            &lt;br /&gt;
              lt 360/:r&lt;br /&gt;
           ]&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
'''r''' - koľko &amp;quot;cípa je vločka&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''d''' - základná dĺžka vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
'''u''' - hustota vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
Odporúčam zadať: '''vlocka 8 150 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STROM&lt;br /&gt;
&lt;br /&gt;
 to strom :d :n&lt;br /&gt;
  fd :d&lt;br /&gt;
  repeat :n[lt 90 fd :d rt 135 fd sqrt(:d*:d*2) lt 45]&lt;br /&gt;
  lt 180&lt;br /&gt;
  repeat :n[lt 45 fd sqrt(:d*:d*2) rt 135 fd :d lt 90]&lt;br /&gt;
 end&lt;br /&gt;
strom 50 3&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3898</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3898"/>
				<updated>2008-12-16T21:16:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
== Stretnutie 5.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Úloha pre robotnačku: nakresliť snehovú vločku v imagine.&lt;br /&gt;
[[Vianoce s robotnackou]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 12.12.2008: ==&lt;br /&gt;
&lt;br /&gt;
Zaregistrovali sme ďalšie tri tímy na súťaž RCJ Rakúsko: [[Team Bratislava Rescue 2009]], [[Team Bratislava Soccer 2009]] a [[Team Bratislava Dance 2009]].&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3897</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3897"/>
				<updated>2008-12-16T14:08:24Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
== Stretnutie 5.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Úloha pre robotnačku: nakresliť snehovú vločku v imagine.&lt;br /&gt;
&lt;br /&gt;
 to vlocka :r :d :u&lt;br /&gt;
  if :u &amp;gt;=1 &lt;br /&gt;
  [repeat :r [fd :d&lt;br /&gt;
              vlocka :r :d/3 :u-1&lt;br /&gt;
              pu&lt;br /&gt;
              bk :d&lt;br /&gt;
              pd&lt;br /&gt;
  if :u=1 [fd :d*2/3 &lt;br /&gt;
           lt 45 &lt;br /&gt;
           fd :d/3&lt;br /&gt;
           pu&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           pd&lt;br /&gt;
           rt 90&lt;br /&gt;
           fd :d/3&lt;br /&gt;
           pu&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           lt 45&lt;br /&gt;
           bk :d*2/3&lt;br /&gt;
           pd &lt;br /&gt;
           ]            &lt;br /&gt;
              lt 360/:r&lt;br /&gt;
           ]&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''r''' - koľko &amp;quot;cípa je vločka&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''d''' - základná dĺžka vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
'''u''' - hustota vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
Odporúčam zadať: '''vlocka 8 150 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12.12.2008:&lt;br /&gt;
&lt;br /&gt;
Zaregistrovali sme ďalšie tri tímy na súťaž RCJ Rakúsko: [[Team Bratislava Rescue 2009]], [[Team Bratislava Soccer 2009]] a [[Team Bratislava Dance 2009]].&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3896</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3896"/>
				<updated>2008-12-16T14:06:52Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
== Stretnutie 5.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Úloha pre robotnačku: nakresliť snehovú vločku v imagine.&lt;br /&gt;
&lt;br /&gt;
 to vlocka :r :d :u&lt;br /&gt;
  if :u &amp;gt;=1 &lt;br /&gt;
  [repeat :r [fd :d&lt;br /&gt;
              vlocka :r :d/3 :u-1&lt;br /&gt;
              bk :d&lt;br /&gt;
  if :u=1 [fd :d*2/3 &lt;br /&gt;
           lt 45 &lt;br /&gt;
           fd :d/3&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           rt 90&lt;br /&gt;
           fd :d/3&lt;br /&gt;
           bk :d/3&lt;br /&gt;
           lt 45&lt;br /&gt;
           bk :d*2/3&lt;br /&gt;
           ]            &lt;br /&gt;
              lt 360/:r&lt;br /&gt;
           ]&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''r''' - koľko &amp;quot;cípa je vločka&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''d''' - základná dĺžka vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
'''u''' - hustota vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
Odporúčam zadať: '''vlocka 8 150 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12.12.2008:&lt;br /&gt;
&lt;br /&gt;
Zaregistrovali sme ďalšie tri tímy na súťaž RCJ Rakúsko: [[Team Bratislava Rescue 2009]], [[Team Bratislava Soccer 2009]] a [[Team Bratislava Dance 2009]].&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3874</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3874"/>
				<updated>2008-12-09T17:36:20Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
== Stretnutie 5.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Úloha pre robotnačku: nakresliť snehovú vločku v imagine.&lt;br /&gt;
&lt;br /&gt;
  to vlocka :r :d :u&lt;br /&gt;
   if :u &amp;gt;=1 &lt;br /&gt;
   [repeat :r [fd :d&lt;br /&gt;
               vlocka :r :d/3 :u-1&lt;br /&gt;
               bk :d&lt;br /&gt;
   if :u=1 [fd :d*2/3 &lt;br /&gt;
            lt 45 &lt;br /&gt;
            fd :d/3&lt;br /&gt;
            bk :d/3&lt;br /&gt;
            rt 90&lt;br /&gt;
            fd :d/3&lt;br /&gt;
            bk :d/3&lt;br /&gt;
            lt 45&lt;br /&gt;
            bk :d*2/3&lt;br /&gt;
            ]            &lt;br /&gt;
               lt 360/:r&lt;br /&gt;
            ]&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
'''r''' - koľko &amp;quot;cípa je vločka&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''d''' - základná dĺžka vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
'''u''' - hustota vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
Odporúčam zadať: '''vlocka 8 150 2'''&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3873</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3873"/>
				<updated>2008-12-09T17:35:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;br /&gt;
&lt;br /&gt;
Úloha pre robotnačku: nakresliť snehovú vločku v imagine.&lt;br /&gt;
&lt;br /&gt;
  to vlocka :r :d :u&lt;br /&gt;
   if :u &amp;gt;=1 &lt;br /&gt;
   [repeat :r [fd :d&lt;br /&gt;
               vlocka :r :d/3 :u-1&lt;br /&gt;
               bk :d&lt;br /&gt;
   if :u=1 [fd :d*2/3 &lt;br /&gt;
            lt 45 &lt;br /&gt;
            fd :d/3&lt;br /&gt;
            bk :d/3&lt;br /&gt;
            rt 90&lt;br /&gt;
            fd :d/3&lt;br /&gt;
            bk :d/3&lt;br /&gt;
            lt 45&lt;br /&gt;
            bk :d*2/3&lt;br /&gt;
            ]            &lt;br /&gt;
               lt 360/:r&lt;br /&gt;
            ]&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
'''r''' - koľko &amp;quot;cípa je vločka&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''d''' - základná dĺžka vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
'''u''' - hustota vločky&amp;lt;br /&amp;gt;&lt;br /&gt;
Odporúčam zadať: '''vlocka 8 150 2'''&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3872</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3872"/>
				<updated>2008-12-09T17:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uloha pre robotnacku: nakreslit snehovu vlocku&lt;br /&gt;
&lt;br /&gt;
  to vlocka :r :d :u&lt;br /&gt;
   if :u &amp;gt;=1 &lt;br /&gt;
   [repeat :r [fd :d&lt;br /&gt;
               vlocka :r :d/3 :u-1&lt;br /&gt;
               bk :d&lt;br /&gt;
   if :u=1 [fd :d*2/3 &lt;br /&gt;
            lt 45 &lt;br /&gt;
            fd :d/3&lt;br /&gt;
            bk :d/3&lt;br /&gt;
            rt 90&lt;br /&gt;
            fd :d/3&lt;br /&gt;
            bk :d/3&lt;br /&gt;
            lt 45&lt;br /&gt;
            bk :d*2/3&lt;br /&gt;
            ]            &lt;br /&gt;
               lt 360/:r&lt;br /&gt;
            ]&lt;br /&gt;
   ]&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3871</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3871"/>
				<updated>2008-12-09T17:24:34Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uloha pre robotnacku: nakreslit snehovu vlocku&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to vlocka :r :d :u&lt;br /&gt;
 if :u &amp;gt;=1 &lt;br /&gt;
 [repeat :r [fd :d&lt;br /&gt;
             vlocka :r :d/3 :u-1&lt;br /&gt;
             bk :d&lt;br /&gt;
 if :u=1 [fd :d*2/3 &lt;br /&gt;
          lt 45 &lt;br /&gt;
          fd :d/3&lt;br /&gt;
          bk :d/3&lt;br /&gt;
          rt 90&lt;br /&gt;
          fd :d/3&lt;br /&gt;
          bk :d/3&lt;br /&gt;
          lt 45&lt;br /&gt;
          bk :d*2/3&lt;br /&gt;
         ]            &lt;br /&gt;
             lt 360/:r&lt;br /&gt;
            ]&lt;br /&gt;
 ]&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3870</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3870"/>
				<updated>2008-12-09T17:22:11Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;&lt;br /&gt;
Uloha pre robotnacku: nakreslit snehovu vlocku:&lt;br /&gt;
to vlocka :r :d :u&lt;br /&gt;
 if :u &amp;gt;=1 &lt;br /&gt;
 [repeat :r [fd :d&lt;br /&gt;
             vlocka :r :d/3 :u-1&lt;br /&gt;
             bk :d&lt;br /&gt;
 if :u=1 [fd :d*2/3 &lt;br /&gt;
          lt 45 &lt;br /&gt;
          fd :d/3&lt;br /&gt;
          bk :d/3&lt;br /&gt;
          rt 90&lt;br /&gt;
          fd :d/3&lt;br /&gt;
          bk :d/3&lt;br /&gt;
          lt 45&lt;br /&gt;
          bk :d*2/3&lt;br /&gt;
         ]            &lt;br /&gt;
             lt 360/:r&lt;br /&gt;
            ]&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3869</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3869"/>
				<updated>2008-12-05T15:02:40Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;br /&gt;
Uloha pre robotnacku: nakreslit snehovu vlocku&lt;br /&gt;
[[Media:vlocka.imp]]&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3868</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3868"/>
				<updated>2008-12-05T15:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 5.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;br /&gt;
Uloha pre robotnacku: nakreslit snehovu vlocku&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3867</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3867"/>
				<updated>2008-12-05T15:01:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 2.12.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 2.12.2008 ==&lt;br /&gt;
&lt;br /&gt;
Kolegovia fyzici nás oslovili s požiadavkou zostrojiť experimentálny model na testovanie opotrebovania vozovky pod tlakom pneumatík - t.j. úlohou bolo vymyslieť koleso ;).&lt;br /&gt;
Presnejšie povedané - koleso, ktoré stále jazdí do kola, je poháňané motorom a dá sa zaťažiť závažím. Jazdniť bude na povrchu nejakého mäkkého materiálu (mokrý piesok, plastelína) a tím bude pozorovať plastickú deformáciu modelovanej vozovky. Využili sme špeciálne sústredné pohonné koleso (turntable) poháňané jedným motorom, ktorý&lt;br /&gt;
zároveň meria otáčky. Rýchlosť je možné prispôsobiť pomocou tlačidiel na kocke NXT.&lt;br /&gt;
&lt;br /&gt;
[[Image:model_opotrebovania_vozovky.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Obrázok. Model opotrebovania vozovky.''&lt;br /&gt;
    &lt;br /&gt;
Program, ktorý riadi rýchlosť kolesa: [[Media:koleso.nxc]].&lt;br /&gt;
__notoc__&lt;br /&gt;
=== Stretnutie 5.12.2008 ===&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:Koleso.nxc&amp;diff=3866</id>
		<title>File:Koleso.nxc</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:Koleso.nxc&amp;diff=3866"/>
				<updated>2008-12-03T17:19:08Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3861</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3861"/>
				<updated>2008-12-01T08:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
P.S. Prišli sme s &amp;quot;ničím&amp;quot; a odišli sme s &amp;quot;niečim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3860</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3860"/>
				<updated>2008-12-01T08:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
V tento piatkový deň sme na zúčastnili turnaja FLL. V UPC vládla súťaživá atmosféra a boli sme vystavený vysokej konkurencii. Vyhodnotenie bolo pre nás priaznivé: 3. miesto v kategórii Robot-Game. Zo súťaže sme odchádzali s novými skúsenosťami.&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3859</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3859"/>
				<updated>2008-12-01T08:12:38Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 27.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Stretnutie 27.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3858</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3858"/>
				<updated>2008-12-01T08:11:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Stretnutie 13.10.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3857</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3857"/>
				<updated>2008-12-01T08:11:50Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Súťaž 14.11.2008 =&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3856</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3856"/>
				<updated>2008-12-01T08:11:11Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Súťaž 14.11.2008 ==&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3855</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3855"/>
				<updated>2008-12-01T08:10:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Súťaž 14.11.2008 ==&lt;br /&gt;
----&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3854</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3854"/>
				<updated>2008-11-29T17:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Súťaž 14.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
FLL - FIRST LEGO League&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL4L.jpg&amp;diff=3853</id>
		<title>File:FLL4L.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL4L.jpg&amp;diff=3853"/>
				<updated>2008-11-28T22:52:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL3L.jpg&amp;diff=3852</id>
		<title>File:FLL3L.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL3L.jpg&amp;diff=3852"/>
				<updated>2008-11-28T22:52:17Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL2L.jpg&amp;diff=3851</id>
		<title>File:FLL2L.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL2L.jpg&amp;diff=3851"/>
				<updated>2008-11-28T22:51:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1L.jpg&amp;diff=3850</id>
		<title>File:FLL1L.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1L.jpg&amp;diff=3850"/>
				<updated>2008-11-28T22:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3849</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3849"/>
				<updated>2008-11-28T22:50:34Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Súťaž 14.11.2008 ===&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3L.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4L.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL4.jpg&amp;diff=3848</id>
		<title>File:FLL4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL4.jpg&amp;diff=3848"/>
				<updated>2008-11-28T22:50:01Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL3.jpg&amp;diff=3847</id>
		<title>File:FLL3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL3.jpg&amp;diff=3847"/>
				<updated>2008-11-28T22:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL2.jpg&amp;diff=3846</id>
		<title>File:FLL2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL2.jpg&amp;diff=3846"/>
				<updated>2008-11-28T22:49:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: uploaded a new version of &amp;quot;Image:FLL2.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1.jpg&amp;diff=3845</id>
		<title>File:FLL1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1.jpg&amp;diff=3845"/>
				<updated>2008-11-28T22:49:13Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: uploaded a new version of &amp;quot;Image:FLL1.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL2.jpg&amp;diff=3844</id>
		<title>File:FLL2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL2.jpg&amp;diff=3844"/>
				<updated>2008-11-28T22:47:07Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1.jpg&amp;diff=3843</id>
		<title>File:FLL1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1.jpg&amp;diff=3843"/>
				<updated>2008-11-28T22:46:47Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: uploaded a new version of &amp;quot;Image:FLL1.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1.jpg&amp;diff=3842</id>
		<title>File:FLL1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=File:FLL1.jpg&amp;diff=3842"/>
				<updated>2008-11-28T22:43:05Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3841</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3841"/>
				<updated>2008-11-28T22:42:17Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Súťaž 14.11.2008 ===&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:FLL1.jpg]] &lt;br /&gt;
| [[Image:FLL2.jpg]] &lt;br /&gt;
| [[Image:FLL3.jpg]] &lt;br /&gt;
| [[Image:FLL4.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Media:FLL1.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL2.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL3.jpg|(+)]]&lt;br /&gt;
| [[Media:FLL4.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3840</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3840"/>
				<updated>2008-11-28T22:39:43Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: /* Súťaž 14.11.2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
=== Súťaž 14.11.2008 ===&lt;br /&gt;
[[Image:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3839</id>
		<title>Krúžok Robotiky na GJH</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Kr%C3%BA%C5%BEok_Robotiky_na_GJH&amp;diff=3839"/>
				<updated>2008-11-28T22:26:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Krúžok robotiky sa zaoberá stavbou a programovaním robotov zo stavebníc LEGO NXT.&lt;br /&gt;
Učíme sa programovací jazyk NXC. V máji sa chceme zúčastniť na turnaji &lt;br /&gt;
RoboCup Junior Slovensko v Banskej Bystrici a na jeseň na súťaži First LEGO League.&lt;br /&gt;
&lt;br /&gt;
Pozri stránku [http://skse.6com.sk/sse-files/html/aktivity/ROBOCUP2008/propozicie.html RoboCup Junior Slovensko], kde sú aj&lt;br /&gt;
pravidlá súťažných kategórií Záchranár, Futbal a Tanec robotov.&lt;br /&gt;
&lt;br /&gt;
[[Media:kruzok.png|plagatik]]&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 22.4.2008 =&lt;br /&gt;
&lt;br /&gt;
* Nainštalovali sme si programovací jazyk NXC s prostredím [http://bricxcc.sourceforge.net/ BricX] &lt;br /&gt;
(treba stiahnuť súbor test_release.zip, rozbaliť ho a spustiť). USB driver: [http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip download]&lt;br /&gt;
&lt;br /&gt;
* Napísali sme prvý program pre robota, pomocou ktorého prejde o kúsok vpred:&lt;br /&gt;
&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   OnFwd(OUT_AC, 75);&lt;br /&gt;
   Wait(1000);&lt;br /&gt;
   Float(OUT_AC);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Prvý riadok zapne motory na portoch A a C na rýchlosť 75 (najväčšia rýchlosť je 100).&lt;br /&gt;
Druhý riadok počká 1 sekundu (ale motory sú už zapnuté, takže robot ide 1s vpred).&lt;br /&gt;
Tretí riadok vypne motory na portoch A a C.&lt;br /&gt;
&lt;br /&gt;
* Potom si krúžkari sami zmenili program tak, aby robot prešiel do štvorca, použili sme&lt;br /&gt;
pritom príkaz:&lt;br /&gt;
&lt;br /&gt;
 OnRev(OUT_AC, 75);&lt;br /&gt;
&lt;br /&gt;
ktorý zapne motor v spätnom chode (rýchlosťou 75 - tú môžeme samozrejme meniť).&lt;br /&gt;
&lt;br /&gt;
Videli sme, že bolo zložité vyladiť dĺžku čakania pri zatáčaní a preto sme využili príkaz&lt;br /&gt;
&lt;br /&gt;
 RotateMotor(OUT_A, 75, 45);&lt;br /&gt;
&lt;br /&gt;
ktorý spôsobí, že motor na porte A sa otočí len o 45 stupňov a potom zastane - využíva&lt;br /&gt;
pritom otáčkové snímače, ktoré sú zabudované do motorov.&lt;br /&gt;
&lt;br /&gt;
* Napokon sme na papieri fixkou nakreslili čiaru a naprogramovali sme robota tak, aby&lt;br /&gt;
chodil do kola po čiare (keď sme konečne našli správne príkazy :). Tu je výsledný program:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LIGHT_ACTIVE);&lt;br /&gt;
   SetSensorMode(S1, SENSOR_MODE_PERCENT);&lt;br /&gt;
   ResetSensor(S1);&lt;br /&gt;
 &lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
     if (Sensor(S1) &amp;lt; 48) &lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_A, 75);&lt;br /&gt;
       Float(OUT_C);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       OnFwd(OUT_C, 75);&lt;br /&gt;
       Float(OUT_A);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Program najskôr nastaví typ senzora na porte 1 (čiže S1) na aktívny svetelný senzor.&lt;br /&gt;
Potom opakuje donekonečna (lebo podmienka 1 je vždy splnená) jeden jednoduchý test:&lt;br /&gt;
ak je intenzita odrazeného svetla menšia ako 45, robot je na čiernej čiare a má zatáčať&lt;br /&gt;
vpravo. V opačnom prípade je robot na bielom papieri a má zatáčať vľavo. Takto robot&lt;br /&gt;
sleduje hranu čiary medzi bielou a čiernou...&lt;br /&gt;
Tento program treba prispôsobiť podľa toho, aká tmavá je čiara (hodnota 48 v podmienke)&lt;br /&gt;
a podľa toho, na ktorých portoch má robot pripojené motory a ktorým smerom sú otočené&lt;br /&gt;
(t.j. vymeniť časti podmienok).&lt;br /&gt;
&lt;br /&gt;
[[Image:kruzok_gjh_sledovanie_ciary.jpg]]&lt;br /&gt;
&lt;br /&gt;
Spoločné stretnutia pre všetkých zaújemcov budú pokračovať každý týždeň v utorok o 14.&lt;br /&gt;
&lt;br /&gt;
= Stretnutia 24. - 27. 4. 2008 =&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program vypisuje hodnoty ultrazvukového snímača na porte 1 na meranie vzdialenosti &lt;br /&gt;
na LCD:&lt;br /&gt;
&lt;br /&gt;
 int s;&lt;br /&gt;
 task main()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1, SENSOR_TYPE_LOWSPEED);&lt;br /&gt;
   ClearScreen();&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
     ClearScreen();&lt;br /&gt;
     NumOut(10,10,SensorUS(S1));&lt;br /&gt;
     Wait(500);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Typy senzorov:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_TYPE_TOUCH        tlakový snímač (tlačidlo)&lt;br /&gt;
 SENSOR_TYPE_TEMPERATURE  tepelný snímač (doplnkový senzor)&lt;br /&gt;
 SENSOR_TYPE_LIGHT        svetelný snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_ROTATION     otáčkový snímač zo stavebnice RCX&lt;br /&gt;
 SENSOR_TYPE_LIGHT_ACTIVE svetelný NXT snímač v aktívnom režime&lt;br /&gt;
 SENSOR_TYPE_LIGHT_INACTIVE svetelný NXT snímač v pasívnom režime (dióda nesvieti)&lt;br /&gt;
 SENSOR_TYPE_SOUND_DB     zvukový snímač&lt;br /&gt;
 SENSOR_TYPE_SOUND_DBA    zvukový snímač (iné jednotky)&lt;br /&gt;
 SENSOR_TYPE_LOWSPEED     ultrazvukový snímač&lt;br /&gt;
&lt;br /&gt;
Snímače sa v programe čítajú pomocou funkcíí Sensor(S1) - Sensor(S4),&amp;lt;br&amp;gt;&lt;br /&gt;
ale ultrazvukový snímač sa číta pomocou SensorUS(S1) - SensorUS(S4).&lt;br /&gt;
&lt;br /&gt;
Na začiatku programu treba snímače nastaviť pomocou príkazu:&lt;br /&gt;
&lt;br /&gt;
 SetSensorType(S1,jeden_z_tychto_typov);&lt;br /&gt;
 SetSensorMode(S1,SENSOR_MODE_PERCENT);&lt;br /&gt;
 ResetSensor(S1);&lt;br /&gt;
&lt;br /&gt;
Ak nechceme hodnoty 0-100, môžeme použiť iný mód, jeden z nasledujúcich:&lt;br /&gt;
&lt;br /&gt;
 SENSOR_MODE_RAW        priama &amp;quot;surová&amp;quot; hodnota od 0 do 1023&lt;br /&gt;
 SENSOR_MODE_BOOL	0 alebo 1&lt;br /&gt;
 SENSOR_MODE_EDGE	počíta koľkokrát prejde senzor z 0 do 1 alebo z 1 do 0&lt;br /&gt;
 SENSOR_MODE_PULSE	počíta koľkokrát prejde senzor z 0 do 1 a naspäť&lt;br /&gt;
 SENSOR_MODE_PERCENT	hodnota 0 až 100&lt;br /&gt;
 SENSOR_MODE_FAHRENHEIT	jednotky F (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_CELSIUS	stupne C (pre tepelný snímač)&lt;br /&gt;
 SENSOR_MODE_ROTATION	počet otáčok (pre RCX otáčkový snímač)&lt;br /&gt;
&lt;br /&gt;
Senzory HiTechnic na snímanie IR lotpy, farby, naklonenia a smeru (kompasový) sa nastavujú&lt;br /&gt;
ako keby boli ultrazvukový senzor. Ak potrebujeme čítať hodnoty aj z iných I2C adries, ako&lt;br /&gt;
42H (pozri dokumentáciu k senzorom), môžeme použiť takýto program: [[Media:accel.nxc|accel.nxc]] - číta&lt;br /&gt;
presné hodnoty naklonenia akceleračného snímača podľa troch osí X,Y,Z. &lt;br /&gt;
&lt;br /&gt;
Podobne nasledujúci program číta presné hodnoty R,G,B zo svetelného senzora: [[Media:color.nxc|color.nxc]], a nasledujúci prečíta hodnoty pre všetkých 5 &lt;br /&gt;
IR senzorov zabudovaných do IRSeeker senzora vrátane smeru 1-9: [[Media:irseeker.nxc|irseeker.nxc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia prikáže motorom urobiť zadaný počet otáčok v zadanom výkone:&lt;br /&gt;
&lt;br /&gt;
 void go(int powerA, int powerB, int rotations)&lt;br /&gt;
 {&lt;br /&gt;
   SetOutput(OUT_A,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerA,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
 &lt;br /&gt;
   SetOutput(OUT_B,&lt;br /&gt;
             TachoLimit, rotations,&lt;br /&gt;
             Power, powerB,&lt;br /&gt;
             OutputMode,&lt;br /&gt;
             OUT_MODE_MOTORON,&lt;br /&gt;
             RunState,&lt;br /&gt;
             OUT_RUNSTATE_RUNNING,&lt;br /&gt;
             UpdateFlags, UF_UPDATE_MODE + UF_UPDATE_SPEED + UF_UPDATE_TACHO_LIMIT );&lt;br /&gt;
  while( GetOutput ( OUT_A, RunState ) != OUT_RUNSTATE_IDLE);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
napríklad:&lt;br /&gt;
&lt;br /&gt;
 go(75,75,1000);  - prejdi 1000 krokov (stupňov otočenia motora) vpred rýchlosťou 75&lt;br /&gt;
 go(-75,-75,1000); - prejdi 1000 krokov vzad...&lt;br /&gt;
 go(75,-75,1000); - otáčaj sa jedným smerom...&lt;br /&gt;
 go(-75,75,1000); - otáčaj sa druhźm smerom...&lt;br /&gt;
&lt;br /&gt;
Nasledujúci program zapne motory v spätnom chode a ked robot narazí na prekážku,&lt;br /&gt;
t.j. motory sa začnú prešmykovať, tak začne pískať:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
  int rot0, x;&lt;br /&gt;
  &lt;br /&gt;
  OnRev(OUT_BC,100);&lt;br /&gt;
 &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
   rot0 = GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   Wait(15);&lt;br /&gt;
   x =  GetOutput(OUT_C, TachoCount);&lt;br /&gt;
   if ((x - rot0) &amp;gt; -7) PlayTone(200,200);&lt;br /&gt;
  }&lt;br /&gt;
  while (true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:stavba_rcj1_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj2_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj3_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj4_s.jpg]] &lt;br /&gt;
| [[Image:stavba_rcj5_s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:stavba_rcj1.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj2.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj3.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj4.jpg|(+)]]&lt;br /&gt;
| [[Media:stavba_rcj5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nasledujúca funkcia využíva kompasový senzor na porte 1 a vráti uhol 0-180 - smer oproti začiatočnému smeru pri odštartovaní programu.&lt;br /&gt;
&lt;br /&gt;
 int r;&lt;br /&gt;
 int uhol()&lt;br /&gt;
 {&lt;br /&gt;
   int u, mensi, vacsi, roz1, roz2;&lt;br /&gt;
   u = SensorUS(S1);&lt;br /&gt;
   if (u &amp;gt; r) { mensi = r; vacsi = u; }&lt;br /&gt;
   else { mensi = u; vacsi = r; }&lt;br /&gt;
  &lt;br /&gt;
   roz1 = vacsi - mensi;&lt;br /&gt;
   roz2 = mensi + 180 - vacsi;&lt;br /&gt;
  &lt;br /&gt;
   if (roz1 &amp;lt; roz2) return 2*roz1;&lt;br /&gt;
   return 2*roz2;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Môžeme ju v programe použiť takto:&lt;br /&gt;
&lt;br /&gt;
 task main ()&lt;br /&gt;
 {&lt;br /&gt;
   SetSensorType(S1,SENSOR_TYPE_LOWSPEED); // compass&lt;br /&gt;
   Wait(1000); // pocka 1 sekundu &lt;br /&gt;
   &lt;br /&gt;
   r = (SensorUS(S1));  // nacita pociatocnu hodnotu snimaca&lt;br /&gt;
   while(ButtonPressed(BTN2,true) == false); // pocka na stlacenie sipky vpravo&lt;br /&gt;
   PlayTone(2000,500);  // potom zapiska&lt;br /&gt;
 &lt;br /&gt;
   ...&lt;br /&gt;
   if (uhol() &amp;lt; 90)&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny spravnym smerom&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // robot je otoceny opacnym smerom&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
V dňoch 1. a 2. mája sme sa zúčastnili Súťaže v stavbe a programovaní robotov RoboCup Junior Slovensko 2008 v Banskej Bystrici &lt;br /&gt;
s týmami v kategóriách Futbal 2-na-2 a Záchranár. Hoci náš záchranársky robot nedopadol veľmi dobre - keďže sme mali na prípravu&lt;br /&gt;
menej ako 2 týždne, futbalové roboty boli postavené a naprogramované spoľahlivo a získali pekné 3. miesto (2. v kategórii stredných&lt;br /&gt;
škôl). Tu sú súťažné roboty:&lt;br /&gt;
&lt;br /&gt;
[[Image:futbalista1.jpg]]  [[Image:futbalista2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Záchranárske roboty odvtedy vylepšujeme/staviame odznova. Tu sú dve verzie z polovičky mája, ktoré čoskoro otestujeme:&lt;br /&gt;
&lt;br /&gt;
[[Image:zachranar1.jpg]] [[Image:zachranar2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Staviame i novú verziu futbalistických robotov, ktoré v prototypoch vyzerajú takto:&lt;br /&gt;
&lt;br /&gt;
[[Image:novy_futbal.jpg]] [[Image:novy_futbal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 20.5.2008 =&lt;br /&gt;
&lt;br /&gt;
Prvý dnešný program hľadá ľudí dookola a keď niekoho nájde, ide za ním, až kým nepríde bližšie, keď zastane: [[Media:hladac.nxc|hladac.nxc]].&lt;br /&gt;
&lt;br /&gt;
Druhý program naopak chodí vpred dokiaľ nepríde k prekážke, ktorej sa vyhne a pokračuje ďalej:[[Media:vyhybac.nxc|vyhybac.nxc]].&lt;br /&gt;
&lt;br /&gt;
A takto vyzerá zábava s robotom:&lt;br /&gt;
&lt;br /&gt;
[[Image:nahanac1.jpg]] [[Image:nahanac2.jpg]] [[Image:nahanac3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Stretnutie 24.6.2008 =&lt;br /&gt;
&lt;br /&gt;
Tvoríme 3D model zachranárskych robotov v programe [http://www.lego.com/ldd/ LEGO Digital Designer]. &lt;br /&gt;
Tu je skoro kompletný model robota:&lt;br /&gt;
&lt;br /&gt;
[[Image:rescue_robot_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
Vymýšľame algoritmus pre futbalistické roboty:&lt;br /&gt;
&lt;br /&gt;
 1.Nacitanie vstupnych udajov&lt;br /&gt;
    kam som otoceny&lt;br /&gt;
    na ktorej som polke(svetla/tmava)&lt;br /&gt;
    cakanie na stlacanie startovneho tlacidla&lt;br /&gt;
 &lt;br /&gt;
 nekonecny cyklus(do vypnutia programu):&lt;br /&gt;
 {&lt;br /&gt;
   2. Ak nevidim loptu : &lt;br /&gt;
                        Hladanie :  &lt;br /&gt;
 			  Otocka na mieste 360 deg&lt;br /&gt;
 			  ked ju stale nevidi pojde na svoju polku kontrolujuc&lt;br /&gt;
                            prekazku (ktore obide) natoci sa na supera &lt;br /&gt;
 			    a bude pozerat po lopte&lt;br /&gt;
 &lt;br /&gt;
      ak vidi loptu :&lt;br /&gt;
 		a)je otoceny na svoju polku:&lt;br /&gt;
                    - obide ju: skusi ju obist nalavo,&lt;br /&gt;
                      ak je tam prekazka tak ju obide napravo&lt;br /&gt;
                      pocas obchadzania kontroluje prekazku  &lt;br /&gt;
                    // a pojde na superovu branku&lt;br /&gt;
 		&lt;br /&gt;
 		b)je otoceny na supera- utoci:&lt;br /&gt;
                    - ak je lopta daleko (t.j. prekazkovy senzor dava hodnotu &amp;gt; 5 cm):&lt;br /&gt;
                      nastavi motory tak, aby sa robot tocil na loptu&lt;br /&gt;
                    - ak je lopta blizko, plnou rychlostou vpred na kratku vzdialenost,&lt;br /&gt;
                       a potom zastavit na chvilku&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 3.spracovanie prekazky : ak je predo mnou prekazka a  &lt;br /&gt;
 			 nie je to lopta treba sa jej vyhnut: &lt;br /&gt;
                            zastat, &lt;br /&gt;
                            vratit sa o kusok spat&lt;br /&gt;
                            otocit sa smerom k superovej strane (vlavo alebo vpravo o 60 stupnov)&lt;br /&gt;
&lt;br /&gt;
Tu je program, ktorý otočí robotom na mieste o 360 stupňov, pričom počas otáčania beží&lt;br /&gt;
cyklus while a tak robot môže priebežne reagovať na vnemy zo snímačov: [[Media:otocka.nxc|otocka.nxc]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:futbal1s.jpg]] &lt;br /&gt;
| [[Image:futbal2s.jpg]] &lt;br /&gt;
| [[Image:futbal3s.jpg]] &lt;br /&gt;
| [[Image:futbal4s.jpg]] &lt;br /&gt;
| [[Image:futbal5s.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Media:futbal1.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal2.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal3.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal4.jpg|(+)]]&lt;br /&gt;
| [[Media:futbal5.jpg|(+)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stretnutie 13.10.2008 ===&lt;br /&gt;
&lt;br /&gt;
Marek: [[Navrh robota pre RoboCup 2009]]&lt;br /&gt;
&lt;br /&gt;
Miso, Miro, Lubo: [[Balancujuci robot]]&lt;br /&gt;
&lt;br /&gt;
=== Súťaž 14.11.2008 ===&lt;br /&gt;
=== Stretnutie 27.11.2008 ===&lt;br /&gt;
&lt;br /&gt;
Pripravuje sa robot na RoboCup Rescue, pozri osobitnú stránku: [[Team GJH Rescue 2009]] a roboty na RoboCup Soccer, pozri&lt;br /&gt;
stránku [[Team GJH Soccer 2009]].&lt;br /&gt;
&lt;br /&gt;
# M&amp;amp;Ms začali robit na projekte kontroly kvality výrobkov pomocou ultrazvukového senzora - zobrazili sme si pekne nameraný profil v grafe.&amp;lt;br&amp;gt;Naprogramovali sme prvú verziu merania profilov pomocou ultrazvukového senzora: [[Media:kontrola.nxc|kontrola.nxc]]&lt;br /&gt;
# Tomáš pripravil ružicu pre Sbota, takže teraz budeme musieť naprogramovať riadenie rýchlosti servomotorov, lebo doteraz vieme len zapnúť/vypnúť a zmeniť smer. Toto treba naštudovať v manuáli o ATmega128 a upraviť firmware...&lt;br /&gt;
# Preskúmali sme novú hračku - robota iSobot, ktorý ako sa ukázalo nechcel ísť, lebo je vyberavý - potebuje veľmi silné batérie - ani alkalické mu nestačia!! (ale už funguje, takže ho nabudúce prinesiem)&lt;br /&gt;
# Chalani pracovali na svojom Rescue robotovi.&lt;br /&gt;
 &lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Tomas</name></author>	</entry>

	</feed>