<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://senzor.robotika.sk/sensorwiki/index.php?action=history&amp;feed=atom&amp;title=Aut%C3%AD%C4%8Dko_na_sledovanie_%C4%8Diary</id>
	<title>Autíčko na sledovanie čiary - História úprav</title>
	<link rel="self" type="application/atom+xml" href="https://senzor.robotika.sk/sensorwiki/index.php?action=history&amp;feed=atom&amp;title=Aut%C3%AD%C4%8Dko_na_sledovanie_%C4%8Diary"/>
	<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Aut%C3%AD%C4%8Dko_na_sledovanie_%C4%8Diary&amp;action=history"/>
	<updated>2026-05-13T11:54:20Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Aut%C3%AD%C4%8Dko_na_sledovanie_%C4%8Diary&amp;diff=16711&amp;oldid=prev</id>
		<title>Balogh: Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2024 - &#039;&#039;&#039;Andrea Kuňáková&#039;&#039;&#039;   == Zadanie ==  Mojou úlohou bolo zapojiť, naprogramovať a overiť funkčnosť path following…“</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Aut%C3%AD%C4%8Dko_na_sledovanie_%C4%8Diary&amp;diff=16711&amp;oldid=prev"/>
		<updated>2024-07-01T07:36:17Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2024 - &amp;#039;&amp;#039;&amp;#039;Andrea Kuňáková&amp;#039;&amp;#039;&amp;#039;   == Zadanie ==  Mojou úlohou bolo zapojiť, naprogramovať a overiť funkčnosť path following…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Záverečný projekt predmetu MIPS / LS2024 - &amp;#039;&amp;#039;&amp;#039;Andrea Kuňáková&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Mojou úlohou bolo zapojiť, naprogramovať a overiť funkčnosť path following robota ktorý sa vie vyhýbať prekážkam. Na tento projekt som použila dosku Acrob, 6 infračervených TCRT5000 diód, ultrazvukový senzor HC-SR04 a dve Paralax Continuous Rotation servá.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
=== TCRT5000 ===&lt;br /&gt;
&lt;br /&gt;
TCRT5000 sú reflektívne senzory, na doske je napájkovaná vysielacia a prijímacia dióda, ktorá je potiahnutá špeciálnym filmom blokujúcim viditeľné žiarenie. Modul je možné použiť pri detekcií prekážok alebo robotoch sledujúcich čiernu čiaru.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:tcrt5000obr.jpg|300px|thumb|center|IR Senzor TCRT5000.]]&lt;br /&gt;
&lt;br /&gt;
=== HC-SR04 ===&lt;br /&gt;
Ultrazvukový senzor na meranie vzdialenosti.&lt;br /&gt;
==== Špecifikácie: ====&lt;br /&gt;
Operačné napätie 3.8 – 5.5 V, &lt;br /&gt;
spotreba 8 mA, &lt;br /&gt;
frekvencia ultrazvuku 40 kHz, &lt;br /&gt;
maximálna vzdialenosť 300 cm, &lt;br /&gt;
minimálna vzdialenosť 1 cm, &lt;br /&gt;
presnosťou na 0.3 cm, &lt;br /&gt;
trigger puls 10 mikrosekúnd, &lt;br /&gt;
úhol detekcie 15°.&lt;br /&gt;
[[Súbor:hcsr40obr.png|300px|thumb|center|HC-SR40 utrazvukový senzor.]]&lt;br /&gt;
&lt;br /&gt;
=== Paralax Continuous Rotation Servo ===&lt;br /&gt;
Parallax Continuous Rotation Servo je populárny komponent v robotike vďaka svojej schopnosti rotovať o 360 stupňov, čo umožňuje jeho použitie na pohyb robotov. Tento servo motor sa vyznačuje jednoduchosťou ovládania, keďže smer a rýchlosť rotácie je možné riadiť pomocou PWM signálu. Serva tohto typu sú ideálne pre projekty ako mobilné roboty, kde je potrebná nepretržitá rotácia kolies. Poskytuje dostatočný krútiaci moment pre malé a stredne veľké roboty, čím zaručuje spoľahlivý a efektívny výkon. Jeho napájacie napätie je 4,8 až 6 V a poskytuje maximálny krútiaci moment 38 oz-in (2,7 kg-cm) pri 6 V. Rýchlosť otáčania je približne 60 otáčok za minútu (RPM) pri plnom napájaní, čo umožňuje spoľahlivé a plynulé ovládanie v rôznych robotických aplikáciách​.&lt;br /&gt;
[[Súbor:parcontrot.jpg|300px|thumb|center|Paralax Continuous Rotation Servo.]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Literatúra:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
* [https://www.vishay.com/docs/83760/tcrt5000.pdf TCRT5000 Datasheet]&lt;br /&gt;
* [https://pdf1.alldatasheet.com/datasheet-pdf/view/1132204/ETC2/HCSR04.html HC-SR04 Datasheet]&lt;br /&gt;
* [https://docs.rs-online.com/870b/0900766b8123f8a1.pdf Paralax Continuous Rotation Servo datasheet]&lt;br /&gt;
* [https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Datasheet ATmega328p]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...&lt;br /&gt;
&lt;br /&gt;
Nezabudnite doplniť schému zapojenia!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define IR_PIN_0 4 // S0 - uplne na pravo (pin D4)&lt;br /&gt;
#define IR_PIN_1 5 // S1 (pin D5)&lt;br /&gt;
#define IR_PIN_2 6 // S2 (pin D6)&lt;br /&gt;
#define IR_PIN_3 7 // S3 (pin D7)&lt;br /&gt;
#define IR_PIN_4 8 // S4 (pin D8)&lt;br /&gt;
#define IR_PIN_5 11 // S5 (pin D11)&lt;br /&gt;
#define IR_PIN_6 12 // S6 (pin D12)&lt;br /&gt;
#define IR_PIN_7 13 // S7 (pin D13)&lt;br /&gt;
&lt;br /&gt;
Servo LeftServo;&lt;br /&gt;
#define SERVO_PIN_LEFT 9 // lave servo pripojene na pin D9&lt;br /&gt;
&lt;br /&gt;
Servo RightServo;&lt;br /&gt;
#define SERVO_PIN_RIGHT 10 // prave servo pripojene na pin D10&lt;br /&gt;
&lt;br /&gt;
#define TRIGGER_PIN 2 // (pin D2)&lt;br /&gt;
#define ECHO_PIN 3  // (pin D3)&lt;br /&gt;
// #define PING_PIN 3&lt;br /&gt;
long duration, distance;&lt;br /&gt;
&lt;br /&gt;
#define FAST 110&lt;br /&gt;
#define SLOW 80&lt;br /&gt;
&lt;br /&gt;
#define OBSTACLE_DISTANCE_THRESHOLD 8 // vzdialenost prekazky od robota v cm pri ktorej sa jej zacne vyhybat&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  LeftServo.attach(SERVO_PIN_LEFT);&lt;br /&gt;
  RightServo.attach(SERVO_PIN_RIGHT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(9, OUTPUT);&lt;br /&gt;
  pinMode(10, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(3, INPUT);&lt;br /&gt;
  pinMode(4, INPUT);&lt;br /&gt;
  pinMode(5, INPUT);&lt;br /&gt;
  pinMode(6, INPUT);&lt;br /&gt;
  pinMode(7, INPUT);&lt;br /&gt;
  pinMode(8, INPUT);&lt;br /&gt;
  pinMode(11, INPUT);&lt;br /&gt;
  pinMode(12, INPUT);&lt;br /&gt;
  pinMode(13, INPUT);&lt;br /&gt;
  &lt;br /&gt;
  // Povolenie prerusenia pre IR piny&lt;br /&gt;
  PCICR |= (1 &amp;lt;&amp;lt; PCIE2) | (1 &amp;lt;&amp;lt; PCIE0); // Povolenie PCIE2 pre piny od PCINT16 do PCINT23 a PCIE0 pre piny od PCINT0 do PCINT7&lt;br /&gt;
  PCMSK2 |= (1 &amp;lt;&amp;lt; PCINT20) | (1 &amp;lt;&amp;lt; PCINT21) | (1 &amp;lt;&amp;lt; PCINT22) | (1 &amp;lt;&amp;lt; PCINT23); // Povolenie preruseni pre PD4 az PD7&lt;br /&gt;
  PCMSK0 |= (1 &amp;lt;&amp;lt; PCINT0) | (1 &amp;lt;&amp;lt; PCINT3); // Povolenie preruseni pre PB0 a PB3&lt;br /&gt;
  sei();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  Serial.print(&amp;quot;S: &amp;quot;);&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_0));&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_1));&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_2));&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_3));&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_4));&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_5));&lt;br /&gt;
  Serial.print(digitalRead(IR_PIN_6));&lt;br /&gt;
  Serial.println(digitalRead(IR_PIN_7));&lt;br /&gt;
&lt;br /&gt;
  // pinMode(PING_PIN, OUTPUT);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW);&lt;br /&gt;
  delayMicroseconds(2);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, HIGH);&lt;br /&gt;
  delayMicroseconds(5);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW);&lt;br /&gt;
&lt;br /&gt;
  // pinMode(PING_PIN, INPUT);&lt;br /&gt;
  duration = pulseIn(ECHO_PIN, HIGH);&lt;br /&gt;
  distance = (duration*.0343)/2;&lt;br /&gt;
  Serial.print(&amp;quot;Distance: &amp;quot;);&lt;br /&gt;
  Serial.println(distance);&lt;br /&gt;
  // distance = microsecondsToCentimeters(duration);&lt;br /&gt;
&lt;br /&gt;
  // pohyb&lt;br /&gt;
    if(digitalRead(IR_PIN_3) == 1 || digitalRead(IR_PIN_4) == 1) &lt;br /&gt;
    { &lt;br /&gt;
      // dopredu&lt;br /&gt;
      LeftServo.write(90-SLOW);&lt;br /&gt;
      RightServo.write(90+SLOW);&lt;br /&gt;
    }&lt;br /&gt;
    else if(digitalRead(IR_PIN_5) == 1 || digitalRead(IR_PIN_6) == 1)&lt;br /&gt;
    {&lt;br /&gt;
      // dolava&lt;br /&gt;
      LeftServo.write(90-SLOW);&lt;br /&gt;
      RightServo.write(90-SLOW);&lt;br /&gt;
    }&lt;br /&gt;
    else if(digitalRead(IR_PIN_1) == 1 || digitalRead(IR_PIN_2) == 1)&lt;br /&gt;
    {&lt;br /&gt;
      // do prava&lt;br /&gt;
      LeftServo.write(90+SLOW);&lt;br /&gt;
      RightServo.write(90+SLOW);&lt;br /&gt;
    }&lt;br /&gt;
    else if(digitalRead(IR_PIN_0) == 1)&lt;br /&gt;
    {&lt;br /&gt;
      // ostro do prava&lt;br /&gt;
      LeftServo.write(90+FAST);&lt;br /&gt;
      RightServo.write(90+FAST);&lt;br /&gt;
    }&lt;br /&gt;
    else if(digitalRead(IR_PIN_7) == 1)&lt;br /&gt;
    {&lt;br /&gt;
      // ostro dolava&lt;br /&gt;
      LeftServo.write(90-FAST);&lt;br /&gt;
      RightServo.write(90-FAST);&lt;br /&gt;
    }&lt;br /&gt;
    else if(distance &amp;lt;= OBSTACLE_DISTANCE_THRESHOLD)&lt;br /&gt;
    {&lt;br /&gt;
      LeftServo.write(90+FAST);&lt;br /&gt;
      RightServo.write(90+FAST);&lt;br /&gt;
      delay(10);&lt;br /&gt;
      LeftServo.write(90-FAST);&lt;br /&gt;
      RightServo.write(90-FAST);&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
  delay(5);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // long microsecondsToCentimeters(long microseconds) &lt;br /&gt;
  // {&lt;br /&gt;
  // return microseconds / 29 / 2;&lt;br /&gt;
  // }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
Zdrojový kód: [[Médiá:ProjektMIPS_Kunakova.txt|ProjektMIPS_Kunakova.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:robobr1.jpg|300px|thumb|center|Robot na čiare I.]]&lt;br /&gt;
[[Súbor:robobr2.jpg|300px|thumb|center|Robot na čiare II.]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Video:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;https://youtu.be/5oAotqgNLbw&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &amp;#039;Category&amp;#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
</feed>