<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://senzor.robotika.sk/sensorwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Balogh</id>
	<title>SensorWiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="https://senzor.robotika.sk/sensorwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Balogh"/>
	<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Balogh"/>
	<updated>2026-06-28T23:29:32Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Interakt%C3%ADvna_lampi%C4%8Dka_I&amp;diff=19679</id>
		<title>Interaktívna lampička I</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Interakt%C3%ADvna_lampi%C4%8Dka_I&amp;diff=19679"/>
		<updated>2026-06-24T13:24:39Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Čo by som urobil inak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Matúš Grúň&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Zadaním projektu je naprogramovať interaktívnu lampičku, ktorá reaguje na zvolený podnet. Ako podnet som si vybral zvuk — konkrétne tlieskanie. Lampička sníma zvuk pomocou mikrofónového senzora a ovláda sa počtom tleskov v časovom okne: 3 tlesky prepínajú systém medzi aktívnym a uspávacím režimom, 1 tlesk ovláda červenú LED a 2 tlesky ovládajú zelenú LED.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Arduino-uno.jpg|400px|thumb|center|Vývojová doska Arduino Uno r3 s procesorom ATmega328p]]&lt;br /&gt;
[[Obrázok:KY-037.jpg|400px|thumb|center|Mikrofónový modul KY-037]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf Dokumentácia k doske Arduino Uno]&lt;br /&gt;
* [https://download.kamami.pl/p587610-KY-037.pdf Dokumentácia k Mikrofónovému modulu KY-037]&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;
&#039;&#039;&#039;Použité súčiastky:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Arduino Uno R3:                Riadiaca jednotka &lt;br /&gt;
&lt;br /&gt;
- Červená LED Dióda              Červené Svetlo&lt;br /&gt;
&lt;br /&gt;
- Zelená LED Dióda               Zelené Svetlo &lt;br /&gt;
&lt;br /&gt;
- Mikrofónový modul KY-037       Snímač Zvuku (tlesk)&lt;br /&gt;
&lt;br /&gt;
- vodiče:                        Prepojenie periférií&lt;br /&gt;
&lt;br /&gt;
- Rezistory:                     2x220 OHM zapojené pred LED Diódy&lt;br /&gt;
&lt;br /&gt;
- Stará lampa:                   Dodá projektu formu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:ZariadenieIL1.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interaktívna lampička — popis funkcionality a zostrojenia:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Zariadenie predstavuje stolnú lampičku ovládanú tlieskaním, postavenú na mikrokontroléri ATmega328P — konkrétne na verzii Arduina Uno R3. Zvuk sníma mikrofónový modul KY-037 pripojený na digitálny pin 7. Modul obsahuje elektretový mikrofón s komparátorom, ktorý pri prekročení nastavenej hlasitostnej úrovne vyšle na výstupe logickú jednotku. Firmware túto udalosť zaznamená ako tlesknutie. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aby systém vedel rozlíšiť jedno tlesknutie od série, pracuje s časovým oknom približne 800 milisekúnd. Po prvom zachytenom tlesknutí sa okno spustí a počítadlo sa zvyšuje s každým ďalším impulzom. Po vypršaní okna sa počet impulzov vyhodnotí: jedno tlesknutie prepne červenú LED na pine 5, dve tlesknutia prepnú zelenú LED na pine 6 a tri tlesknutia slúžia ako hlavný vypínač — pri aktívnom systéme ho uspí a zhasne obe LED, pri uspatom systéme ho prebudí a obe LED automaticky rozsvieti. Debounce navyše krátko ignoruje signál po detekcii impulzu, aby ozvena alebo mechanický šum nespôsobili falošný záznam. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Funkčnosť celého konceptu bola najprv overená na breadboarde s Arduinom a modulom KY037. Až po spoľahlivom odladení logiky sa pristúpilo k zabudovaniu do skutočnej lampičky. Cez telo stolnej lampy boli pretiahnuté tri vodiče: jeden pre pin 6, jeden pre pin 5 a spoločná zem. Na ich koncoch boli priletované LED diódy, každá so sériovým ochranným odporom 220 ohmov, ktorý obmedzuje prúd na hodnotu bezpečnú pre výstupné piny Arduina. Arduino zostalo mimo viditeľnej časti lampy — do nej vstupujú len tri tenké kábliky.&lt;br /&gt;
[[Súbor:SchemaIL1.jpg|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Algoritmus programu využíva sledovanie stavu mikrofónu na pine PD7. Program pri každom tlesknutí zachytí nábehovú hranu (zmenu z 0 na 1) a zvýši počítadlo tlesknutí. Aby program nerátal jedno tlesknutie viackrát, používa ochranu proti zákmitom — čaká aspoň 50ms medzi tlesknutiami. Po uplynutí časového okna 800ms sa pozrie koľko tlesknutí prišlo a podľa toho niečo vykoná.&lt;br /&gt;
&lt;br /&gt;
Základné funkcie sú nastav_led(), ktorá zapína alebo vypína červenú LED na pine PD6 a zelenú LED na pine PD5 podľa toho aký je aktuálny stav, a vyhodnot(), ktorá skontroluje počet tlesknutí a rozhodne čo sa má stať. Tieto funkcie sa volajú z hlavnej slučky main() — vyhodnot() vždy keď uplynie časové okno, a nastav_led() vždy keď sa zmení stav niektorej LED.&lt;br /&gt;
&lt;br /&gt;
Logika systému funguje tak, že program má dva stavy — vypnutý a zapnutý. Tri tlesky prepnú medzi týmito stavmi. Keď je systém zapnutý, jedno tlesknutie prepne červenú LED a dva tlesky prepnú zelenú LED. Keď sa systém zapne, obe LED sa automaticky rozsvietia, keď sa vypne, obe zhasnú.&lt;br /&gt;
Výpis kódu je nižšie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;main.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#define BAUD 9600&lt;br /&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* --- piny --- */&lt;br /&gt;
#define MIC  PD7&lt;br /&gt;
#define R_LED PD6&lt;br /&gt;
#define G_LED PD5&lt;br /&gt;
&lt;br /&gt;
/* --- casovanie --- */&lt;br /&gt;
#define DEBOUNCE 50&lt;br /&gt;
#define OKNO     800&lt;br /&gt;
&lt;br /&gt;
/* --- makra z uart.h --- */&lt;br /&gt;
FILE uart_out = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
/* --- globalne premenne --- */&lt;br /&gt;
uint8_t  pocet       = 0;&lt;br /&gt;
uint8_t  aktivny     = 0;&lt;br /&gt;
uint8_t  cervena     = 0;&lt;br /&gt;
uint8_t  zelena      = 0;&lt;br /&gt;
uint8_t  mic_pred    = 0;&lt;br /&gt;
uint32_t t_posledny  = 0;&lt;br /&gt;
uint32_t ms          = 0;   /* citac milisekund */&lt;br /&gt;
&lt;br /&gt;
/* --- aktualizuj LEDky --- */&lt;br /&gt;
void nastav_led(void)&lt;br /&gt;
{&lt;br /&gt;
    if (cervena) set_bit(PORTD, R_LED);&lt;br /&gt;
    else        clear_bit(PORTD, R_LED);&lt;br /&gt;
&lt;br /&gt;
    if (zelena)  set_bit(PORTD, G_LED);&lt;br /&gt;
    else        clear_bit(PORTD, G_LED);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- vyhodnotenie tleskov --- */&lt;br /&gt;
void vyhodnot(void)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;tlesky: %d\r\n&amp;quot;, pocet);&lt;br /&gt;
&lt;br /&gt;
    if (pocet == 3) {&lt;br /&gt;
        aktivny = !aktivny;&lt;br /&gt;
        if (aktivny) {&lt;br /&gt;
            cervena = 1;&lt;br /&gt;
            zelena  = 1;&lt;br /&gt;
            nastav_led();&lt;br /&gt;
            printf(&amp;quot;&amp;gt;&amp;gt; AKTIVNY - obe LED zapnute\r\n&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            cervena = 0;&lt;br /&gt;
            zelena  = 0;&lt;br /&gt;
            nastav_led();&lt;br /&gt;
            printf(&amp;quot;&amp;gt;&amp;gt; USPENY - obe LED zhasnute\r\n&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else if (aktivny) {&lt;br /&gt;
        if (pocet == 1) {&lt;br /&gt;
            cervena = !cervena;&lt;br /&gt;
            printf(&amp;quot;&amp;gt;&amp;gt; cervena: %s\r\n&amp;quot;, cervena ? &amp;quot;ON&amp;quot; : &amp;quot;OFF&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if (pocet == 2) {&lt;br /&gt;
            zelena = !zelena;&lt;br /&gt;
            printf(&amp;quot;&amp;gt;&amp;gt; zelena: %s\r\n&amp;quot;, zelena ? &amp;quot;ON&amp;quot; : &amp;quot;OFF&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        nastav_led();&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        printf(&amp;quot;&amp;gt;&amp;gt; system spi, ignorujem\r\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
	printf(&amp;quot;ms pri vyhodnoteni: %lu\r\n&amp;quot;, ms);&lt;br /&gt;
    pocet = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* nastavenie pinov */&lt;br /&gt;
    set_bit(DDRD, R_LED);    /* vystup - cervena */&lt;br /&gt;
    set_bit(DDRD, G_LED);    /* vystup - zelena  */&lt;br /&gt;
    clear_bit(DDRD, MIC);    /* vstup  - mikrofon */&lt;br /&gt;
&lt;br /&gt;
    clear_bit(PORTD, R_LED);&lt;br /&gt;
    clear_bit(PORTD, G_LED);&lt;br /&gt;
&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;uart_out;&lt;br /&gt;
    printf(&amp;quot;system USPENY. 3x tlesk = zapni\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        _delay_ms(1);&lt;br /&gt;
        ms++;&lt;br /&gt;
&lt;br /&gt;
        uint8_t mic_teraz = bit_is_set(PIND, MIC) ? 1 : 0;&lt;br /&gt;
&lt;br /&gt;
        /* nabezna hrana + debounce */&lt;br /&gt;
        if (mic_teraz == 1 &amp;amp;&amp;amp; mic_pred == 0) {&lt;br /&gt;
            if ((ms - t_posledny) &amp;gt; DEBOUNCE) {&lt;br /&gt;
                pocet++;&lt;br /&gt;
                t_posledny = ms;&lt;br /&gt;
                printf(&amp;quot;tlesk #%d\r\n&amp;quot;, pocet);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        mic_pred = mic_teraz;&lt;br /&gt;
&lt;br /&gt;
        /* po uplynutí okna vyhodno? */&lt;br /&gt;
        if (pocet &amp;gt; 0 &amp;amp;&amp;amp; (ms - t_posledny) &amp;gt; OKNO) {&lt;br /&gt;
            vyhodnot();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
/* ************************************************************************* */&lt;br /&gt;
/* FileName:             uart.c                                              */&lt;br /&gt;
/* ************************************************************************* */&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#define BAUD  9600&lt;br /&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;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_init( void )&lt;br /&gt;
{&lt;br /&gt;
	//  for different BAUD rate change the project settings, or uncomment&lt;br /&gt;
	//  following two lines:&lt;br /&gt;
	//	#undef  BAUD           // avoid compiler warning&lt;br /&gt;
	&lt;br /&gt;
	#include &amp;lt;util/setbaud.h&amp;gt;  // requires defined BAUD&lt;br /&gt;
	&lt;br /&gt;
	UBRR0H = UBRRH_VALUE;&lt;br /&gt;
	UBRR0L = UBRRL_VALUE;&lt;br /&gt;
	#if USE_2X                 // defined in setbaud.h&lt;br /&gt;
	UCSR0A |= (1 &amp;lt;&amp;lt; U2X0);&lt;br /&gt;
	#else&lt;br /&gt;
	UCSR0A &amp;amp;= ~(1 &amp;lt;&amp;lt; U2X0);&lt;br /&gt;
	#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */&lt;br /&gt;
	UCSR0B = _BV(RXEN0) | _BV(TXEN0);   /* Enable RX and TX */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int uart_putc( char c, FILE *stream )&lt;br /&gt;
{&lt;br /&gt;
	if (c == &#039;\n&#039;)&lt;br /&gt;
	uart_putc(&#039;\r&#039;,stream);&lt;br /&gt;
	&lt;br /&gt;
	loop_until_bit_is_set(UCSR0A, UDRE0); /* Wait until data register empty. */&lt;br /&gt;
	UDR0 = c;&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char *s, FILE *stream)&lt;br /&gt;
{&lt;br /&gt;
	while(*s)&lt;br /&gt;
	{&lt;br /&gt;
		uart_putc(*s++, stream);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char uart_getc(void)&lt;br /&gt;
{&lt;br /&gt;
	loop_until_bit_is_set(UCSR0A, RXC0); /* Wait until data exists. */&lt;br /&gt;
	return UDR0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delay(int delay)      // vlastna funkcia pre dlhsie casy&lt;br /&gt;
{&lt;br /&gt;
	for (int i=1; i&amp;lt;=delay; i++)&lt;br /&gt;
	_delay_ms(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
/* ************************************************************************* */&lt;br /&gt;
/* FileName:             uart.h                                              */&lt;br /&gt;
/* ************************************************************************* */&lt;br /&gt;
&lt;br /&gt;
#define LED PB5  // internal on-board LED &lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#define BAUD  9600&lt;br /&gt;
&lt;br /&gt;
 /* na testovanie su uz zadefinovane */&lt;br /&gt;
 // bit_is_set(PINB, SW1)&lt;br /&gt;
 // bit_is_clear(PINB, SW1)&lt;br /&gt;
&lt;br /&gt;
 /* na cakanie su preddefinovane slucky */&lt;br /&gt;
 // loop_until_bit_is_set(PINB, SW1);    // cakanie na uvolnenie tlacitka&lt;br /&gt;
 // loop_until_bit_is_clear(PINB, SW1);  // cakanie na stlacenie tlacitka&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define set_bit(ADDRESS,BIT) (ADDRESS |= (1&amp;lt;&amp;lt;BIT))&lt;br /&gt;
#define clear_bit(ADDRESS,BIT) (ADDRESS &amp;amp;= ~(1&amp;lt;&amp;lt;BIT))&lt;br /&gt;
&lt;br /&gt;
#ifndef UART_H_&lt;br /&gt;
#define UART_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define BAUD_PRESCALE  103  // vzor?ek z datasheetu&lt;br /&gt;
&lt;br /&gt;
void hw_init( void );&lt;br /&gt;
void uart_init( void );&lt;br /&gt;
     &lt;br /&gt;
/* Following definition is compatible with STDIO.H, for more&lt;br /&gt;
 * information see https://www.appelsiini.net/2011/simple-usart-with-avr-libc/&lt;br /&gt;
 */&lt;br /&gt;
	 &lt;br /&gt;
int uart_putc( char c, FILE *stream );&lt;br /&gt;
void uart_puts( const char *s, FILE *stream);&lt;br /&gt;
&lt;br /&gt;
char uart_getc( void );&lt;br /&gt;
&lt;br /&gt;
void delay(int delay); &lt;br /&gt;
&lt;br /&gt;
#endif /* UART_H_ */&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:Interaktivna_lampa_1.zip|Interaktivna lampa 1]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Funkčnosť programu bola overená testovaním na reálnom zariadení, a to nasledovne:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;sledovaním LEDky na module mikrofónu, ktorá sa zasvieti ak sníma zvuk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;nastavovaním senzitivity mikrofónu pomocou potenciometra, ktorý je súčasťou modulu mikrofónu(taktiež podľa LED na module mikrofónu)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;sledovaním stavu samotných LED diód, či svietia alebo nie&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;sledovaním LEDky Tx na samotnom Arduino UNO, kedy doska zachytáva signál z mikrofónu, a kedy reaguje na vstupný zvuk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;správnou reakciou na 1 tlesk, čo znamená --&amp;gt; zasvieť červenú LED &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;správnou reakciou na 2 tlesky, čo znamená --&amp;gt; zasvieť zelenú LED. Toto bolo trošku náročnejšie, lebo bolo treba nastaviť debounce a čas snímania tlesku na správne hodnoty&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;správnou reakciou na 3 tlesky, čo znamená --&amp;gt; Reaguj na 1 a 2 tlesky a zároveň zapni obe LEDky, alebo opak --&amp;gt; Ignoruj 1 a 2 tlesky a zároveň vypni obe LEDky &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;GG_nnK2SsiM&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Projekt sa mi podarilo vyhotoviť bez väčších problémov, avšak musel som sa inšpirovať zapojeniami a videami na internete, kde chvalabohu takéto projekty sú. Ak by som mal niečo spraviť inak, dal by som tam miesto dvoch LED rôznej farby jednu RGB LEDku a skúsil sa pohrať s tým. Ďalšia možnosť by bola použiť LED pásik a bolo by to omnoho použiteľnejšie. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19678</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19678"/>
		<updated>2026-06-24T13:21:56Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Bukhtiiarov, Egor: [[Zbernica i2c: EEPROM Terminál]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čornyj, Gordij: [[Úsporné režimy procesora]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Domchuk, Dmytro: [[Integrátor s mikroprocesorom]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dzivjaková, Broňa: [[UART Kalkulačka]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Igaz, Samuel: [[Monitor kapacity batérie]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Nevzorova, Sofia: [[Vstupná jednotka s palcovým prepínačom TS211]]   (*)&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Prokop, Matúš: [[Simulátor sústavy 1. rádu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vasas, Mihály Bertalan: [[Ultrazvukový radar so senzorom Ping)))]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vríčan, Dávid: [[Automatické zavlažovanie]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Vstupn%C3%A1_jednotka_s_palcov%C3%BDm_prep%C3%ADna%C4%8Dom_TS211&amp;diff=19677</id>
		<title>Vstupná jednotka s palcovým prepínačom TS211</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Vstupn%C3%A1_jednotka_s_palcov%C3%BDm_prep%C3%ADna%C4%8Dom_TS211&amp;diff=19677"/>
		<updated>2026-06-24T13:20:52Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Sofiia Nevzorova&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Navrhnite a realizujte vstupnú jednotku na báze dvojsekčného palcového prepínača TS211 s BCD kódovaním pripojenú k vývojovej doske ACROB. Programovo zabezpečte čítanie hodnôt z oboch sekcií prepínača (desiatky a jednotky) v negatívnej logike s využitím interných pull-up rezistorov mikrokontroléra ATmega328P. Implementujte algoritmus na prevod BCD kódov z portov PORTC a PORTD na výsledné dekadické číslo v rozsahu 00 až 99. Zabezpečte výpis aktuálnej hodnoty cez rozhranie UART do konzoly pri každej zmene nastavenia(na overenie).&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#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.bucek.name/pdf/ts21xxxxx.pdf&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;
Základným komponentom tohto riešenia je dvojsekčný palcový prepínač TS211. Každá sekcia prepínača funguje ako mechanický dekodér, ktorý prevádza nastavenú číslicu (0–9) na 4-bitový signál v kóde BCD (Binary Coded Decimal). Prepínač má pre každú sekciu 5 výstupov: jeden spoločný kontakt (Common) a štyri dátové kontakty s váhami 1, 2, 4 a 8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:TS211_Nevzorova_realizacia.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
Princíp činnosti a softvérové spracovanie:&lt;br /&gt;
Vstupy mikrokontroléra sú nakonfigurované v režime s aktivovanými internými pull-up rezistormi. To znamená, že piny pracujú v negatívnej logike:&lt;br /&gt;
Ak je kontakt v prepínači otvorený, pull-up rezistor drží na pine logickú 1.&lt;br /&gt;
Ak je kontakt zopnutý (číslica je zvolená), pin sa prepojí so zemou (GND) a procesor načíta logickú 0.&lt;br /&gt;
V programe sa preto načítané hodnoty z registrov PINC a PIND najskôr bitovo invertujú (~).&lt;br /&gt;
Pre desiatky (PORTC) sa priamo maskujú spodné 4 bity.&lt;br /&gt;
Pre jednotky (PORTD) sa využíva bitový posun doprava o 2 miesta (&amp;gt;&amp;gt; 2), aby sa bity z pozícií D2–D5 dostali na pozície 0–3 pre správny výpočet váhy BCD kódu.&lt;br /&gt;
&lt;br /&gt;
Výsledné číslo sa vypočíta podľa vzťahu: Hodnota = (Desiatky * 10) + Jednotky, a následne sa posiela cez rozhranie UART do konzoly PuTTY.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:schemaMips.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
Hardvérové zapojenie:&lt;br /&gt;
Prepojenie s mikrokontrolérom ATmega328P na doske ACROB bolo realizované nasledovne:&lt;br /&gt;
Ľavý blok (Desiatky): Výstupy s váhami 1, 2, 4, 8 sú pripojené na piny A0, A1, A2 a A3 (čo zodpovedá portu PORTC, bity 0–3).&lt;br /&gt;
Pravý blok (Jednotky): Výstupy sú pripojené na digitálne piny D2, D3, D4 a D5 (port PORTD, bity 2–5).&lt;br /&gt;
Spoločné kontakty (C): Obe sekcie majú spoločný kontakt pripojený na GND (zem).&lt;br /&gt;
Z hľadiska mechanickej konštrukcie bolo kvôli nedostatočnej dĺžke kontaktov prepínača pre montáž priamo do breadboardu zvolené pripojenie pomocou flexibilných vodičov, čím sa zabezpečil spoľahlivý elektrický kontakt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
V programe sme využili 8-bitovú premennú &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; na uloženie stavu jednotlivých sekcií prepínača. Hodnota z portov sa po inverzii maskuje pomocou &amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;, čím získame čistý BCD kód (0–9).&lt;br /&gt;
&lt;br /&gt;
V úvode funkcie &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; prebieha inicializácia smerových registrov &lt;br /&gt;
&amp;lt;code&amp;gt;DDR&amp;lt;/code&amp;gt; a nastavenie vstupov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DDRC &amp;amp;= ~0x0F; PORTC |= 0x0F;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DDRD &amp;amp;= ~0x3C; PORTD |= 0x3C;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Týmto krokom aktivujeme vnútorné pull-up rezistory ešte pred vstupom do hlavného cyklu &amp;lt;code&amp;gt;while(1)&amp;lt;/code&amp;gt;, čo zabezpečuje stabilné čítanie hodnôt z prepínača hneď po štarte mikrokontroléra.&lt;br /&gt;
&lt;br /&gt;
Výsledná hodnota sa vypočíta podľa vzťahu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total = (tens * 10) + units;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre výpočet desiatkovej hodnoty z portu D sme použili bitový posun o 2 miesta doprava, pretože fyzické pripojenie prepínača na piny D2 až D5 posúva dáta v registri &amp;lt;code&amp;gt;PIND&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Vzťah pre prepočet je:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tens = (~PIND &amp;gt;&amp;gt; 2) &amp;amp; 0x0F;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Táto úprava je nevyhnutná, aby sa logické úrovne zarovnali do intervalu 0 až 9, ktorý zodpovedá číslam na prepínači. Všetky výpočty sú vykonávané v celočíselnej aritmetike, čo je pre daný rozsah 0–99 úplne postačujúce.&lt;br /&gt;
&lt;br /&gt;
Na riadenie výpisu do konzoly bola použitá pomocná premenná &amp;lt;code&amp;gt;last_val&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;if (total != last_val) {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; printf(&amp;quot;Value: %02u\n&amp;quot;, total);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; last_val = total;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Táto podmienka zabezpečuje, že mikrokontrolér odosiela dáta cez UART len v momente, keď dôjde k fyzickej zmene nastavenia na prepínači. Týmto sa minimalizuje zaťaženie sériovej linky a terminál PuTTY zostáva prehľadný.&lt;br /&gt;
Pri implementácii boli využité štandardné typy &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; pre dáta z portov a &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uint16_t&amp;lt;/code&amp;gt; pre výslednú hodnotu, čo je z hľadiska pamäťových nárokov na procesor ATmega328P optimálne.&lt;br /&gt;
&lt;br /&gt;
V hlavnom cykle programu je zaradené krátke oneskorenie &amp;lt;code&amp;gt;_delay_ms(150);&amp;lt;/code&amp;gt;. Táto pauza slúži na stabilizáciu hodnôt pri mechanickom prepínaní kontaktov a zabraňuje náhodným chybám v načítaných dátach počas pohybu prepínača.&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;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
uint8_t read_bcd_tens(void) {&lt;br /&gt;
    uint8_t status = ~PINC;&lt;br /&gt;
    return (status &amp;amp; 0x0F); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t read_bcd_units(void) {&lt;br /&gt;
    uint8_t status = ~PIND;&lt;br /&gt;
    return ((status &amp;gt;&amp;gt; 2) &amp;amp; 0x0F); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout; &lt;br /&gt;
    &lt;br /&gt;
    DDRC &amp;amp;= ~0x0F; PORTC |= 0x0F;      &lt;br /&gt;
    DDRD &amp;amp;= ~0x3C; PORTD |= 0x3C;      &lt;br /&gt;
&lt;br /&gt;
    uint8_t last_val = 255; &lt;br /&gt;
&lt;br /&gt;
    while(1)&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t tens = read_bcd_tens();   &lt;br /&gt;
        uint8_t units = read_bcd_units(); &lt;br /&gt;
        &lt;br /&gt;
        uint16_t total = (tens * 10) + units;&lt;br /&gt;
        &lt;br /&gt;
        if (total != last_val) {&lt;br /&gt;
            printf(&amp;quot;Value: %02u\n&amp;quot;, total);&lt;br /&gt;
            last_val = total;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        _delay_ms(150); &lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;filename.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                                   // A/D converter initialization&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projekt_Nevzorova.zip|projekt_Nevzorova]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Správna funkcia projektu bola overená sledovaním sériového výstupu v termináli PuTTY. Pri každej mechanickej zmene polohy palcového prepínača sa v konzole okamžite zobrazila zodpovedajúca dvojciferná hodnota. Testovaním všetkých polôh oboch sekcií (0–9) sa potvrdilo, že program správne interpretuje BCD kód a bezchybne vypočítava výsledné dekadické číslo v rozsahu 00 až 99.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;e5XRd5vfh3U&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobila inak ==&lt;br /&gt;
&lt;br /&gt;
V budúcej verzii by som namiesto neustáleho dopytovania sa na stav portov v cykle (polling) skúsila implementovať čítanie pomocou externých prerušení (interrupts), čo by zvýšilo efektivitu programu. Taktiež by som pridala ďalšiu sekciu prepínača pre zadávanie trojciferných čísel a navrhla kompaktný plošný spoj, aby som nahradila veľké množstvo prepojovacích káblov stabilnejším riešením.&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Vstupn%C3%A1_jednotka_s_palcov%C3%BDm_prep%C3%ADna%C4%8Dom_TS211&amp;diff=19676</id>
		<title>Vstupná jednotka s palcovým prepínačom TS211</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Vstupn%C3%A1_jednotka_s_palcov%C3%BDm_prep%C3%ADna%C4%8Dom_TS211&amp;diff=19676"/>
		<updated>2026-06-24T13:07:00Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Čo by som urobil inak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Sofiia Nevzorova&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Navrhnite a realizujte vstupnú jednotku na báze dvojsekčného palcového prepínača TS211 s BCD kódovaním pripojenú k vývojovej doske ACROB. Programovo zabezpečte čítanie hodnôt z oboch sekcií prepínača (desiatky a jednotky) v negatívnej logike s využitím interných pull-up rezistorov mikrokontroléra ATmega328P. Implementujte algoritmus na prevod BCD kódov z portov PORTC a PORTD na výsledné dekadické číslo v rozsahu 00 až 99. Zabezpečte výpis aktuálnej hodnoty cez rozhranie UART do konzoly pri každej zmene nastavenia(na overenie).&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&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;
Základným komponentom tohto riešenia je dvojsekčný palcový prepínač TS211. Každá sekcia prepínača funguje ako mechanický dekodér, ktorý prevádza nastavenú číslicu (0–9) na 4-bitový signál v kóde BCD (Binary Coded Decimal). Prepínač má pre každú sekciu 5 výstupov: jeden spoločný kontakt (Common) a štyri dátové kontakty s váhami 1, 2, 4 a 8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:TS211_Nevzorova_realizacia.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
Princíp činnosti a softvérové spracovanie:&lt;br /&gt;
Vstupy mikrokontroléra sú nakonfigurované v režime s aktivovanými internými pull-up rezistormi. To znamená, že piny pracujú v negatívnej logike:&lt;br /&gt;
Ak je kontakt v prepínači otvorený, pull-up rezistor drží na pine logickú 1.&lt;br /&gt;
Ak je kontakt zopnutý (číslica je zvolená), pin sa prepojí so zemou (GND) a procesor načíta logickú 0.&lt;br /&gt;
V programe sa preto načítané hodnoty z registrov PINC a PIND najskôr bitovo invertujú (~).&lt;br /&gt;
Pre desiatky (PORTC) sa priamo maskujú spodné 4 bity.&lt;br /&gt;
Pre jednotky (PORTD) sa využíva bitový posun doprava o 2 miesta (&amp;gt;&amp;gt; 2), aby sa bity z pozícií D2–D5 dostali na pozície 0–3 pre správny výpočet váhy BCD kódu.&lt;br /&gt;
&lt;br /&gt;
Výsledné číslo sa vypočíta podľa vzťahu: Hodnota = (Desiatky * 10) + Jednotky, a následne sa posiela cez rozhranie UART do konzoly PuTTY.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:schemaMips.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
Hardvérové zapojenie:&lt;br /&gt;
Prepojenie s mikrokontrolérom ATmega328P na doske ACROB bolo realizované nasledovne:&lt;br /&gt;
Ľavý blok (Desiatky): Výstupy s váhami 1, 2, 4, 8 sú pripojené na piny A0, A1, A2 a A3 (čo zodpovedá portu PORTC, bity 0–3).&lt;br /&gt;
Pravý blok (Jednotky): Výstupy sú pripojené na digitálne piny D2, D3, D4 a D5 (port PORTD, bity 2–5).&lt;br /&gt;
Spoločné kontakty (C): Obe sekcie majú spoločný kontakt pripojený na GND (zem).&lt;br /&gt;
Z hľadiska mechanickej konštrukcie bolo kvôli nedostatočnej dĺžke kontaktov prepínača pre montáž priamo do breadboardu zvolené pripojenie pomocou flexibilných vodičov, čím sa zabezpečil spoľahlivý elektrický kontakt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
V programe sme využili 8-bitovú premennú &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; na uloženie stavu jednotlivých sekcií prepínača. Hodnota z portov sa po inverzii maskuje pomocou &amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;, čím získame čistý BCD kód (0–9).&lt;br /&gt;
&lt;br /&gt;
V úvode funkcie &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; prebieha inicializácia smerových registrov &lt;br /&gt;
&amp;lt;code&amp;gt;DDR&amp;lt;/code&amp;gt; a nastavenie vstupov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DDRC &amp;amp;= ~0x0F; PORTC |= 0x0F;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DDRD &amp;amp;= ~0x3C; PORTD |= 0x3C;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Týmto krokom aktivujeme vnútorné pull-up rezistory ešte pred vstupom do hlavného cyklu &amp;lt;code&amp;gt;while(1)&amp;lt;/code&amp;gt;, čo zabezpečuje stabilné čítanie hodnôt z prepínača hneď po štarte mikrokontroléra.&lt;br /&gt;
&lt;br /&gt;
Výsledná hodnota sa vypočíta podľa vzťahu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total = (tens * 10) + units;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre výpočet desiatkovej hodnoty z portu D sme použili bitový posun o 2 miesta doprava, pretože fyzické pripojenie prepínača na piny D2 až D5 posúva dáta v registri &amp;lt;code&amp;gt;PIND&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Vzťah pre prepočet je:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tens = (~PIND &amp;gt;&amp;gt; 2) &amp;amp; 0x0F;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Táto úprava je nevyhnutná, aby sa logické úrovne zarovnali do intervalu 0 až 9, ktorý zodpovedá číslam na prepínači. Všetky výpočty sú vykonávané v celočíselnej aritmetike, čo je pre daný rozsah 0–99 úplne postačujúce.&lt;br /&gt;
&lt;br /&gt;
Na riadenie výpisu do konzoly bola použitá pomocná premenná &amp;lt;code&amp;gt;last_val&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;if (total != last_val) {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; printf(&amp;quot;Value: %02u\n&amp;quot;, total);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; last_val = total;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Táto podmienka zabezpečuje, že mikrokontrolér odosiela dáta cez UART len v momente, keď dôjde k fyzickej zmene nastavenia na prepínači. Týmto sa minimalizuje zaťaženie sériovej linky a terminál PuTTY zostáva prehľadný.&lt;br /&gt;
Pri implementácii boli využité štandardné typy &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; pre dáta z portov a &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uint16_t&amp;lt;/code&amp;gt; pre výslednú hodnotu, čo je z hľadiska pamäťových nárokov na procesor ATmega328P optimálne.&lt;br /&gt;
&lt;br /&gt;
V hlavnom cykle programu je zaradené krátke oneskorenie &amp;lt;code&amp;gt;_delay_ms(150);&amp;lt;/code&amp;gt;. Táto pauza slúži na stabilizáciu hodnôt pri mechanickom prepínaní kontaktov a zabraňuje náhodným chybám v načítaných dátach počas pohybu prepínača.&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;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
uint8_t read_bcd_tens(void) {&lt;br /&gt;
    uint8_t status = ~PINC;&lt;br /&gt;
    return (status &amp;amp; 0x0F); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t read_bcd_units(void) {&lt;br /&gt;
    uint8_t status = ~PIND;&lt;br /&gt;
    return ((status &amp;gt;&amp;gt; 2) &amp;amp; 0x0F); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout; &lt;br /&gt;
    &lt;br /&gt;
    DDRC &amp;amp;= ~0x0F; PORTC |= 0x0F;      &lt;br /&gt;
    DDRD &amp;amp;= ~0x3C; PORTD |= 0x3C;      &lt;br /&gt;
&lt;br /&gt;
    uint8_t last_val = 255; &lt;br /&gt;
&lt;br /&gt;
    while(1)&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t tens = read_bcd_tens();   &lt;br /&gt;
        uint8_t units = read_bcd_units(); &lt;br /&gt;
        &lt;br /&gt;
        uint16_t total = (tens * 10) + units;&lt;br /&gt;
        &lt;br /&gt;
        if (total != last_val) {&lt;br /&gt;
            printf(&amp;quot;Value: %02u\n&amp;quot;, total);&lt;br /&gt;
            last_val = total;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        _delay_ms(150); &lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;filename.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                                   // A/D converter initialization&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projekt_Nevzorova.zip|projekt_Nevzorova]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Správna funkcia projektu bola overená sledovaním sériového výstupu v termináli PuTTY. Pri každej mechanickej zmene polohy palcového prepínača sa v konzole okamžite zobrazila zodpovedajúca dvojciferná hodnota. Testovaním všetkých polôh oboch sekcií (0–9) sa potvrdilo, že program správne interpretuje BCD kód a bezchybne vypočítava výsledné dekadické číslo v rozsahu 00 až 99.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;e5XRd5vfh3U&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobila inak ==&lt;br /&gt;
&lt;br /&gt;
V budúcej verzii by som namiesto neustáleho dopytovania sa na stav portov v cykle (polling) skúsila implementovať čítanie pomocou externých prerušení (interrupts), čo by zvýšilo efektivitu programu. Taktiež by som pridala ďalšiu sekciu prepínača pre zadávanie trojciferných čísel a navrhla kompaktný plošný spoj, aby som nahradila veľké množstvo prepojovacích káblov stabilnejším riešením.&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=UART_Kalkula%C4%8Dka&amp;diff=19675</id>
		<title>UART Kalkulačka</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=UART_Kalkula%C4%8Dka&amp;diff=19675"/>
		<updated>2026-06-24T13:04:59Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Čo by som urobil inak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Broňa Dzivjaková&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Úlohou bolo implementovať kalkulačku komunikujúcu cez sériové rozhranie UART (minimálne použiť: +, -, *, /). Používateľ zadáva matematický príklad (napr. 10+5 alebo 3.14*2) priamo cez sériový terminál a Arduino UNO výsledok vypočíta a odošle späť. Po úspešnom výpočte sa rozsvieti vstavaná LED dióda na pine 13. Program taktiež uchováva históriu posledných desiatich príkladov v pamäti EEPROM, ktorá zostane zachovaná aj po vypnutí zariadenia. Históriu je možné zobraziť príkazom &#039;h&#039; a vymazať príkazom &#039;c&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:arduinoUNO.png|400px|thumb|center|Vývojová doska Arduino UNO.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Dokumentácia k mikrokontroléru ATmega328P]&lt;br /&gt;
* [https://docs.arduino.cc/hardware/uno-rev3/ Dokumentácia k doske Arduino UNO]&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;
Projekt je realizovaný na vývojovej doske Arduino UNO s mikrokontrolérom ATmega328P. Komunikácia prebieha cez UART rozhranie na rýchlosti 9600 baudov. &lt;br /&gt;
&lt;br /&gt;
Nakoľko matematické operácie sú na 8-bitových mikrokontroléroch nepresné, tak príklady sú riešené pomocou fixnej desatinnej čiarky. Všetky zadané hodnoty sú spracované ako stotiny (násobené *100) s použitím vlastnej funkcie. Týmto spôsobom vie kalkulačka dosiahnuť presnosť na 2 desatinné miesta.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:ZapojenieUNO.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na vstup ani výstup nie sú potrebné žiadne externé súčiastky, nakoľko som využila vstavanú LED diódu na pine 13 (PB5) a sériový port cez USB kábel. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:ZapUnoSchem.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program je rozdelený do niekoľkých funkcií. Po spustení sa inicializuje UART &#039;funkcia uart_init&#039; a LED pin ako výstup. Hlavná nekonečná slučka čaká na vstup od používateľa. Funkcia &#039;read_line&#039; číta znaky zo sériového portu jeden po druhom a ukladá ich do vyrovnávacej pamäte (buffer), kým nepríde &#039;Enter&#039;.&lt;br /&gt;
&lt;br /&gt;
Hlavné funkcie programu:&lt;br /&gt;
&lt;br /&gt;
•	Funkcia &#039;na_stotiny&#039;, ktorá nám spracuje načítaný vstup z pamäte. Preskakuje medzery, spracuje nám záporné čísla a prenásobí ich *100. &lt;br /&gt;
&lt;br /&gt;
•	Funkcia &#039;process&#039; je jadro kalkulačky. Kontroluje nám validitu vstupu a obsahuje iba čísla. Následne vyhľadáva operátor, podľa ktorého vykonáva matematickú operáciu. Ošetruje taktiež aj delenie  nulou, výsledky so zápornými znamienkami a korektné formátovanie. &lt;br /&gt;
&lt;br /&gt;
•	Funkcie &#039;hist_save&#039;, &#039;hist_print&#039; a &#039;hist_clear&#039; zabezpečujú cyklický posun a ukladanie reťazcov do EEPROM pamäte. Pri zápise nového príkladu sa staré záznamy posunú o index vyššie. Pamäť ukladá 10 operácií. Pamäť sa maže zapísaním nulových bitov.  &lt;br /&gt;
&lt;br /&gt;
•	Funkcia &#039;led_blink&#039; nám rieši nastavenie pinu PB na vstavanej LED do logickej jednotky po dobu 1000 ms.&lt;br /&gt;
&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;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/eeprom.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define LED_DDR   DDRB&lt;br /&gt;
#define LED_PORT  PORTB&lt;br /&gt;
#define LED_PIN   PB5 //vstavaná LED&lt;br /&gt;
&lt;br /&gt;
#define HIST_COUNT  10  // História definovaná - uloží mi posledných 10 operácií&lt;br /&gt;
#define HIST_LEN    32 &lt;br /&gt;
char EEMEM ee_hist[HIST_COUNT][HIST_LEN];&lt;br /&gt;
&lt;br /&gt;
static FILE uart_stream = FDEV_SETUP_STREAM(uart_putc, uart_getc, _FDEV_SETUP_RW);&lt;br /&gt;
&lt;br /&gt;
 // používané funkcie&lt;br /&gt;
void    led_init(void);&lt;br /&gt;
void    led_blink(void);&lt;br /&gt;
uint8_t read_line(char *buf, uint8_t max);&lt;br /&gt;
void    process(const char *line);&lt;br /&gt;
void    hist_save(const char *line);&lt;br /&gt;
void    hist_print(void);&lt;br /&gt;
void    hist_clear(void);&lt;br /&gt;
int     na_stotiny(const char *str);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    char buf[HIST_LEN];&lt;br /&gt;
&lt;br /&gt;
    uart_init();				//basic uart inicializácia&lt;br /&gt;
    stdin  = &amp;amp;uart_stream;&lt;br /&gt;
    stdout = &amp;amp;uart_stream;&lt;br /&gt;
    led_init();&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;=================================\r\n\r&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;======= MIPS 2026 ZADANIE: ======\r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;======== UART Kalkulačka ========\r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;   Zadaj príklad (napr.: 3.14*2)\r\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;   Dostupné operandy: +, -, *, / \r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;     Pre pozretie histórie: h \r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;    Pre vymazanie histórie: c \r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;=================================\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;&amp;gt; &amp;quot;);&lt;br /&gt;
        if (read_line(buf, HIST_LEN))&lt;br /&gt;
        {&lt;br /&gt;
            if (strcmp(buf, &amp;quot;h&amp;quot;) == 0) {		//čítanie zadaného vstupu &lt;br /&gt;
                hist_print();					//kontrola, či nie je &#039;h&#039; alebo &#039;c&#039;&lt;br /&gt;
            }&lt;br /&gt;
            else if (strcmp(buf, &amp;quot;c&amp;quot;) == 0) { &lt;br /&gt;
                hist_clear();&lt;br /&gt;
            }&lt;br /&gt;
            else {&lt;br /&gt;
                process(buf);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void led_init(void)&lt;br /&gt;
{&lt;br /&gt;
    LED_DDR  |=  (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
}&lt;br /&gt;
									//basic LED blikanie&lt;br /&gt;
void led_blink(void)&lt;br /&gt;
{&lt;br /&gt;
    LED_PORT |=  (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    _delay_ms(1000);&lt;br /&gt;
    LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uint8_t read_line(char *buf, uint8_t max)	//čítanie vstupu a &lt;br /&gt;
{											// ukladanie do bufferu, kde to potom spracuvávam&lt;br /&gt;
    uint8_t i = 0;&lt;br /&gt;
    char c;&lt;br /&gt;
    while (i &amp;lt; max - 1)&lt;br /&gt;
    {&lt;br /&gt;
        c = uart_getc(stdin);&lt;br /&gt;
        if (c == &#039;\r&#039; || c == &#039;\n&#039;) { uart_puts(&amp;quot;\r\n&amp;quot;); break; }&lt;br /&gt;
        if (c == &#039;\b&#039; &amp;amp;&amp;amp; i &amp;gt; 0)    { i--; uart_puts(&amp;quot;\b \b&amp;quot;); continue; } //možný backspace&lt;br /&gt;
        uart_putc(c, stdout);&lt;br /&gt;
        buf[i++] = c;&lt;br /&gt;
    }&lt;br /&gt;
    buf[i] = &#039;\0&#039;;&lt;br /&gt;
    return (i &amp;gt; 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int na_stotiny(const char *str)  //keďže nefunguje float dobre a ani iné operácie s desatinami&lt;br /&gt;
{								//musím to manuálne spracovať - zvolila som si prácu s max &lt;br /&gt;
    int cela = 0;				// 2 desatinnými číslami &lt;br /&gt;
    int desatina = 0;&lt;br /&gt;
    int znamienko = 1;&lt;br /&gt;
    const char *p = str;&lt;br /&gt;
&lt;br /&gt;
    while (*p == &#039; &#039;) p++;&lt;br /&gt;
&lt;br /&gt;
    if (*p == &#039;-&#039;) { znamienko = -1; p++; }&lt;br /&gt;
    else if (*p == &#039;+&#039;) p++;&lt;br /&gt;
&lt;br /&gt;
    //hlavným cieľom je nájsť bodku/čiarku - tu čítam čísla pred&lt;br /&gt;
    while (*p &amp;gt;= &#039;0&#039; &amp;amp;&amp;amp; *p &amp;lt;= &#039;9&#039;) {&lt;br /&gt;
        cela = cela * 10 + (*p - &#039;0&#039;);&lt;br /&gt;
        p++;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ak prídem na . akebo , &lt;br /&gt;
    if (*p == &#039;.&#039; || *p == &#039;,&#039;) {&lt;br /&gt;
        p++;&lt;br /&gt;
        if (*p &amp;gt;= &#039;0&#039; &amp;amp;&amp;amp; *p &amp;lt;= &#039;9&#039;) {&lt;br /&gt;
            desatina += (*p - &#039;0&#039;) * 10; // desatina&lt;br /&gt;
            p++;&lt;br /&gt;
        }&lt;br /&gt;
        if (*p &amp;gt;= &#039;0&#039; &amp;amp;&amp;amp; *p &amp;lt;= &#039;9&#039;) {&lt;br /&gt;
            desatina += (*p - &#039;0&#039;);      // stotina&lt;br /&gt;
            p++;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (cela * 100 + desatina) * znamienko;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void process(const char *line)&lt;br /&gt;
{&lt;br /&gt;
    // Kontrola na nepovolené znaky (písmená a iné)&lt;br /&gt;
    const char *check = line;&lt;br /&gt;
    while (*check) {&lt;br /&gt;
        if (!isdigit((unsigned char)*check) &amp;amp;&amp;amp; *check != &#039;.&#039; &amp;amp;&amp;amp; &lt;br /&gt;
            *check != &#039;+&#039; &amp;amp;&amp;amp; *check != &#039;-&#039; &amp;amp;&amp;amp; *check != &#039;*&#039; &amp;amp;&amp;amp; *check != &#039;/&#039;) {&lt;br /&gt;
            printf(&amp;quot;Chyba: neplatný znak v príklade!\r\n\r\n&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        check++;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const char ops[] = &amp;quot;*/+-&amp;quot;;&lt;br /&gt;
    const char *op_pos = NULL;&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    &lt;br /&gt;
    // aký operátor&lt;br /&gt;
    for (i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
        op_pos = strchr(line + 1, ops[i]);&lt;br /&gt;
        if (op_pos) break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!op_pos) {&lt;br /&gt;
        printf(&amp;quot;Chyba: nebol zadaný operátor!\r\n\r\n&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    char op = *op_pos;&lt;br /&gt;
&lt;br /&gt;
    // a-pred čiarkou, b-za čiarkou&lt;br /&gt;
    long a = na_stotiny(line);&lt;br /&gt;
    long b = na_stotiny(op_pos + 1);&lt;br /&gt;
    long r = 0;&lt;br /&gt;
&lt;br /&gt;
    if (op == &#039;/&#039; &amp;amp;&amp;amp; b == 0) {		//kontrola delenia s 0&lt;br /&gt;
        printf(&amp;quot;Chyba: delenie nulou!\r\n\r\n&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //operácie poriešené cez * a / 100 &lt;br /&gt;
    if (op == &#039;+&#039;) r = a + b;&lt;br /&gt;
    else if (op == &#039;-&#039;) r = a - b;&lt;br /&gt;
    else if (op == &#039;*&#039;) r = (a * b) / 100; &lt;br /&gt;
    else if (op == &#039;/&#039;) r = (a * 100) / b;&lt;br /&gt;
&lt;br /&gt;
    long cela_cast = r / 100;&lt;br /&gt;
    long des_cast = r % 100;&lt;br /&gt;
    if (des_cast &amp;lt; 0) des_cast = -des_cast;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // rozlišovanie, či výsledok má desatinné číslo&lt;br /&gt;
     printf(&amp;quot;Vysledok: &amp;quot;);&lt;br /&gt;
    if (r &amp;lt; 0 &amp;amp;&amp;amp; cela_cast == 0) {&lt;br /&gt;
        printf(&amp;quot;-&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;%ld&amp;quot;, cela_cast);&lt;br /&gt;
&lt;br /&gt;
    // ak zistím, ... vypíšem bodku&lt;br /&gt;
    if (des_cast != 0) {&lt;br /&gt;
        printf(&amp;quot;.&amp;quot;);&lt;br /&gt;
        if (des_cast &amp;lt; 10) {&lt;br /&gt;
            printf(&amp;quot;0&amp;quot;); // ak mám 0.05 napr.&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;%ld&amp;quot;, des_cast);&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    char hist_buffer[HIST_LEN];&lt;br /&gt;
    if (des_cast != 0) {&lt;br /&gt;
        if (r &amp;lt; 0 &amp;amp;&amp;amp; cela_cast == 0) {&lt;br /&gt;
            sprintf(hist_buffer, &amp;quot;%s=-%ld.%02ld&amp;quot;, line, cela_cast, des_cast);&lt;br /&gt;
        } else {&lt;br /&gt;
            sprintf(hist_buffer, &amp;quot;%s=%ld.%02ld&amp;quot;, line, cela_cast, des_cast);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sprintf(hist_buffer, &amp;quot;%s=%ld&amp;quot;, line, cela_cast);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    hist_save(hist_buffer); // uložím do histórie&lt;br /&gt;
    led_blink();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void hist_save(const char *line)&lt;br /&gt;
{&lt;br /&gt;
    char tmp[HIST_LEN];&lt;br /&gt;
    int8_t i;&lt;br /&gt;
    &lt;br /&gt;
    for (i = HIST_COUNT - 1; i &amp;gt; 0; i--) {&lt;br /&gt;
        eeprom_read_block(tmp, ee_hist[i - 1], HIST_LEN);&lt;br /&gt;
        eeprom_write_block(tmp, ee_hist[i], HIST_LEN);&lt;br /&gt;
    }&lt;br /&gt;
    eeprom_write_block(line, ee_hist[0], HIST_LEN);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void hist_print(void)   &lt;br /&gt;
{&lt;br /&gt;
    char tmp[HIST_LEN];&lt;br /&gt;
    uint8_t found = 0;&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
   &lt;br /&gt;
    printf(&amp;quot;============ História ===========\r\n&amp;quot;, HIST_COUNT);&lt;br /&gt;
    for (i = 0; i &amp;lt; HIST_COUNT; i++) {&lt;br /&gt;
        eeprom_read_block(tmp, ee_hist[i], HIST_LEN);&lt;br /&gt;
        tmp[HIST_LEN - 1] = &#039;\0&#039;;&lt;br /&gt;
        &lt;br /&gt;
        if ((unsigned char)tmp[0] == 0xFF || tmp[0] == &#039;\0&#039;) continue;&lt;br /&gt;
        &lt;br /&gt;
        printf(&amp;quot;  %d: %s\r\n&amp;quot;, i + 1, tmp);&lt;br /&gt;
        found = 1;&lt;br /&gt;
    }&lt;br /&gt;
    if (!found) printf(&amp;quot;       História je prázdna.\r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;=================================\r\n\r&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void hist_clear(void)  //vymazanie histórie&lt;br /&gt;
{&lt;br /&gt;
    char prazdne[HIST_LEN];&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    memset(prazdne, 0, HIST_LEN);&lt;br /&gt;
    for (i = 0; i &amp;lt; HIST_COUNT; i++) {&lt;br /&gt;
        eeprom_write_block(prazdne, ee_hist[i], HIST_LEN);&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;       História je vymazaná.\r\n\r\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef UART_H_&lt;br /&gt;
#define UART_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void uart_init(void);&lt;br /&gt;
//void uart_putc(char c);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
//char uart_getc(void);&lt;br /&gt;
int  uart_putc(char c, FILE *stream);&lt;br /&gt;
int  uart_getc(FILE *stream);&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char *s);&lt;br /&gt;
&lt;br /&gt;
#endif /* UART_H_ */&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#define BAUD  9600&lt;br /&gt;
#define MYUBRR (F_CPU / 16 / BAUD - 1)&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void uart_init(void)&lt;br /&gt;
{&lt;br /&gt;
    unsigned int ubrr = MYUBRR;&lt;br /&gt;
&lt;br /&gt;
    /* nastavenie baud rate */&lt;br /&gt;
    UBRR0H = (unsigned char)(ubrr &amp;gt;&amp;gt; 8);&lt;br /&gt;
    UBRR0L = (unsigned char)(ubrr);&lt;br /&gt;
&lt;br /&gt;
    /* zapni RX a TX */&lt;br /&gt;
    UCSR0B = (1 &amp;lt;&amp;lt; RXEN0) | (1 &amp;lt;&amp;lt; TXEN0);&lt;br /&gt;
&lt;br /&gt;
    /* 8 datových bitov, 1 stop bit, bez parity */&lt;br /&gt;
    UCSR0C = (1 &amp;lt;&amp;lt; UCSZ01) | (1 &amp;lt;&amp;lt; UCSZ00);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int uart_putc(char c, FILE *stream)&lt;br /&gt;
{&lt;br /&gt;
    if (c == &#039;\n&#039;)&lt;br /&gt;
        uart_putc(&#039;\r&#039;, stream);&lt;br /&gt;
&lt;br /&gt;
    while (!(UCSR0A &amp;amp; (1 &amp;lt;&amp;lt; UDRE0)));   /* čakaj kým je buffer prázdny */&lt;br /&gt;
    UDR0 = c;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int uart_getc(FILE *stream)&lt;br /&gt;
{&lt;br /&gt;
    while (!(UCSR0A &amp;amp; (1 &amp;lt;&amp;lt; RXC0)));    /* čakaj na prijatý znak */&lt;br /&gt;
    return UDR0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char *s)&lt;br /&gt;
{&lt;br /&gt;
    while (*s)&lt;br /&gt;
        uart_putc(*s++, NULL);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:ProjektDzivjakovaBronaMIPS.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Funkčnosť som overila pomocou sériového terminálu s knižnicou UART. Testovala som každú z ponúknutých operácií, operáciu s desatinnými a zápornými číslami, a aj chybové stavy.&lt;br /&gt;
&lt;br /&gt;
•	Základné operácie: 5+8 = 13, 8*3 = 24, -9-4 = -13, 10/4 = 2.5, 89/0 = Delenie nulou&lt;br /&gt;
&lt;br /&gt;
•	Desatinné čísla: 3.14*7 = 21.98&lt;br /&gt;
&lt;br /&gt;
•	Chybové stavy: delenie nulou, zadanie písmena namiesto čísla&lt;br /&gt;
&lt;br /&gt;
•	História: príkaz &#039;h&#039; zobrazí posledné 3 príklady, &#039;c&#039; ich vymaže&lt;br /&gt;
&lt;br /&gt;
•	LED: po každom správnom výpočte blikne vstavaná LED na pine 13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Dzbarduino.jpg|400px|thumb|center|Bliknutie LED pri výpočte.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;Wl-AcCXg7Nw&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobila inak ==&lt;br /&gt;
&lt;br /&gt;
Projekt splnil požiadavky zadania, no v budúcnosti by som ho rozšírila o LCD displej, kde by sa príklady a výsledky zobrazovali priamo na zariadení bez potreby počítača a sériového terminálu. Taktiež by bolo zaujímavé pridať podporu pre viac operácií v jednom výraze s dodržaním matematickej priority (násobenie pred sčítaním).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Integr%C3%A1tor_s_mikroprocesorom&amp;diff=19674</id>
		<title>Integrátor s mikroprocesorom</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Integr%C3%A1tor_s_mikroprocesorom&amp;diff=19674"/>
		<updated>2026-06-24T12:54:24Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Dmytro Domchuk&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Integrátor. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serialplot. Takže, sčitame hodnotu ADC vstupu z potenciometra a budeme ju integrovať každych 5ms. Ďalej, vysledky budeme posielať cez seriovu linku do programu SerialPlot.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
&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;
Našou ulohou bolo vytvoriť integrator na zaklade vyvijivej dosky Acrob a petenciometroveho modula. Potenciometrový model sa saklada z potenciometra, prepinača režimu fungovania(linearný alebo parabolický), reset tlačidko a kontrolera. Zapojili sme modul potenciometra ku doske Acrob na port X4. A pripojili Acrob ku počitaču pomocou USB kabla. Na moldule potenciometra nastavujeme velkosť potenciometra, sčitavame hodnotu z ADC, vypočitame integral a posielame dve hodnoty na SerialPlot. Prva hodnota je velkosťou vstupu a druha je integrolom.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:08d34a4c-397f-4d53-b44a-7e9815cb343b.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:schemazapojenia.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
 &lt;br /&gt;
Algoritmus programu  v hlavnej slučke sa začina tym že robí inicializaciu UART, ADC a Timer1 apovoluje prerušenia pomocou sei(). Ďalej zapisuje parametre integratora. Potom program zčita hodnotu z ADC a spravi posun nuly. Ďalej sa vytvori pasmo necitlivosti na +-3 jednotky z hodnoty ADC. Potom program vypočita integral Eulerovou metodou a spravi anti-windup aby hodnota integrala ne prekročila hranice 10000 a -10000. Ďalej v programe vytvorime 2 premennych typu int16_t plot_input a plot_ integral ktore sa rovnaju hodnotam input a integral. Ďalej posielame hodnoty premennych cez seriovu linku v binarnom tvare.&lt;br /&gt;
Funkcia void UART_init() robo inicializaciu UART pre baud 14400  a posialanie 8 datovych bitov a 1 stop bit.  Funkcia void UART_transmit_byte(uint8_t data) čaka pokial bufer sa vyprazdni a posiela 8 datovych bitov. Funkcia void UART_send_int16(int16_t value) 2 krat použiva predchadzajucu funkciu na posielani jedneho čisla typu int16. Inicializaciu ADC robi void ADC_init(). Funkcia uint16_t ADC_read() načitava hodnotu z ADC.Inicializujeme Timer1 v void Timer1_init(). Funkcia ISR(TIMER1_COMPA_vect) je rutiniu prerušenia. Ne použil som funkcie uart.c a adc.c zo semestra lebo musel by som ich moc silno zmeniť, takže na jeden krat stači aj realizacia priamo v programe. Ale pri vetšiem počte podobnych programov alebo pre zabezpečenie fungovania na viacerych zariadeniach radšej spraviť zvlašť hlavnu slučku a funkcie.&lt;br /&gt;
&lt;br /&gt;
&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;syntaxhighlight  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;
&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt; &lt;br /&gt;
	 // Globálne premenné&lt;br /&gt;
	   volatile uint8_t timer_flag = 0;// Príznak z prerušenia &lt;br /&gt;
	  &lt;br /&gt;
	   // --- Inicializácia UART pre 14400 baud (pri 16 MHz) --- &lt;br /&gt;
	   &lt;br /&gt;
    void UART_init() {&lt;br /&gt;
    uint16_t ubrr = 68; &lt;br /&gt;
    UBRR0H = (uint8_t)(ubrr &amp;gt;&amp;gt; 8);&lt;br /&gt;
    UBRR0L = (uint8_t)ubrr;&lt;br /&gt;
    UCSR0A &amp;amp;= ~(1 &amp;lt;&amp;lt; U2X0); // Dvojnásobná rýchlost off &lt;br /&gt;
    UCSR0B = (1 &amp;lt;&amp;lt; TXEN0); // Povolenie vysielaca&lt;br /&gt;
    UCSR0C = (1 &amp;lt;&amp;lt; UCSZ01) | (1 &amp;lt;&amp;lt; UCSZ00);&lt;br /&gt;
		   } // 8 dátových bitov, 1 stop bit . Odošle jeden znak &lt;br /&gt;
		   &lt;br /&gt;
		   &lt;br /&gt;
		   &lt;br /&gt;
    void UART_transmit_byte(uint8_t data) {&lt;br /&gt;
    while (!(UCSR0A &amp;amp; (1 &amp;lt;&amp;lt; UDRE0))); // caká na vyprázdnenie buffra &lt;br /&gt;
    UDR0 = data;&lt;br /&gt;
		    } &lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
    void UART_send_int16(int16_t value){&lt;br /&gt;
    UART_transmit_byte((uint8_t)(value &amp;amp; 0xFF));&lt;br /&gt;
    UART_transmit_byte((uint8_t)((value&amp;gt;&amp;gt;8) &amp;amp; 0xFF));&lt;br /&gt;
			  }&lt;br /&gt;
			  &lt;br /&gt;
			  &lt;br /&gt;
			   // --- Inicializácia ADC --- &lt;br /&gt;
			  void ADC_init() { // Referencia AVCC (REFS0=1), výber kanála ADC0 (MUX = 0000) &lt;br /&gt;
			  ADMUX = (1 &amp;lt;&amp;lt; REFS0)|(1&amp;lt;&amp;lt;MUX2); // Povolenie ADC (ADEN=1), preddelic 128 (ADPS2..0 = 111) pre frekvenciu 125 kHz&lt;br /&gt;
			   ADCSRA = (1 &amp;lt;&amp;lt; ADEN) | (1 &amp;lt;&amp;lt; ADPS2) | (1 &amp;lt;&amp;lt; ADPS1) | (1 &amp;lt;&amp;lt; ADPS0); } &lt;br /&gt;
			   &lt;br /&gt;
			   // Nacítanie hodnoty z ADC0 &lt;br /&gt;
			   uint16_t ADC_read() {&lt;br /&gt;
                ADCSRA |= (1 &amp;lt;&amp;lt; ADSC); // Spustenie prevodu &lt;br /&gt;
			   while (ADCSRA &amp;amp; (1 &amp;lt;&amp;lt; ADSC)); // cakanie na dokoncenie &lt;br /&gt;
			   return ADC; &lt;br /&gt;
			   } &lt;br /&gt;
			   // --- Inicializácia Timer1 pre 5ms prerušenie --- &lt;br /&gt;
			   void Timer1_init() { &lt;br /&gt;
// Režim CTC (Clear Timer on Compare Match), &lt;br /&gt;
			   TCCR1B |= (1 &amp;lt;&amp;lt; WGM12); &lt;br /&gt;
// Nastavenie preddelica na 64 &lt;br /&gt;
// Frekvencia casovaca = 16 MHz / 64 = 250 kHz &lt;br /&gt;
// Požadovaný cas = 5 ms (0.005 s) &lt;br /&gt;
// Hodnota do OCR1A = (0.005 * 250000) - 1 = 1249 &lt;br /&gt;
			   &lt;br /&gt;
               OCR1A = 1249; &lt;br /&gt;
// Povolenie prerušenia pri zhode (Compare Match A) &lt;br /&gt;
			   TIMSK1 |= (1 &amp;lt;&amp;lt; OCIE1A); &lt;br /&gt;
// Spustenie casovaca s preddelicom 64 (CS11=1, CS10=1) &lt;br /&gt;
			   TCCR1B |= (1 &amp;lt;&amp;lt; CS11) | (1 &amp;lt;&amp;lt; CS10); } &lt;br /&gt;
			   &lt;br /&gt;
			   // Rutina obsluhy prerušenia od Timer1 (vykoná sa každých 5 ms) &lt;br /&gt;
			   ISR(TIMER1_COMPA_vect) {&lt;br /&gt;
                 timer_flag = 1; // Len nastavíme vlajku, výpocet urobíme v main slu?ke &lt;br /&gt;
			   } &lt;br /&gt;
			   int main(void) {&lt;br /&gt;
			   UART_init();&lt;br /&gt;
			   ADC_init();&lt;br /&gt;
			   Timer1_init();&lt;br /&gt;
			   sei(); // Globálne povolenie prerušení &lt;br /&gt;
				   &lt;br /&gt;
				   // Parametre integrátora &lt;br /&gt;
				   const float Ts = 0.005; // 5 ms &lt;br /&gt;
				   const float Ti = 1.0; &lt;br /&gt;
				   float integral = 0.0; &lt;br /&gt;
				   float input =0;&lt;br /&gt;
				  &lt;br /&gt;
				    while (1) {&lt;br /&gt;
					 if (timer_flag) {&lt;br /&gt;
					  timer_flag = 0; // Zhodenie vlajky &lt;br /&gt;
					 					  &lt;br /&gt;
					  // 1. Nacítanie vstupu a posunutie nuly &lt;br /&gt;
					  uint16_t raw_adc = ADC_read();&lt;br /&gt;
					   input = (float)(raw_adc - 512); &lt;br /&gt;
// Softvérové pásmo necitlivosti (Deadband) &lt;br /&gt;
// Ignoruje jemný šum (napr. +- 3 hodnoty z ADC okolo stredu), aby integrátor nedriftoval &lt;br /&gt;
					   if (input &amp;gt; -3.0 &amp;amp;&amp;amp; input &amp;lt; 3.0) {&lt;br /&gt;
					    input = 0.0; &lt;br /&gt;
						} &lt;br /&gt;
						// 2. Výpocet (Eulerova dopredná metóda) &lt;br /&gt;
						integral = integral + (Ts / Ti) * input; &lt;br /&gt;
						// Anti-windup &lt;br /&gt;
						if (integral &amp;gt; 10000.0) integral = 10000.0;&lt;br /&gt;
						 if (integral &amp;lt; -10000.0) integral = -10000.0; &lt;br /&gt;
						 &lt;br /&gt;
						 &lt;br /&gt;
						 int16_t plot_input=(int16_t)input;&lt;br /&gt;
						 int16_t plot_integral=(int16_t)integral;&lt;br /&gt;
						  &lt;br /&gt;
// 4. Odoslanie vo formáte pre Serial Plotter: &amp;quot;Hodnota1,Hodnota2\n&amp;quot; &lt;br /&gt;
						  &lt;br /&gt;
						  &lt;br /&gt;
							UART_send_int16(plot_input);&lt;br /&gt;
							UART_send_int16(plot_integral);&lt;br /&gt;
							UART_transmit_byte(&#039;\r&#039;);&lt;br /&gt;
							UART_transmit_byte(&#039;\n&#039;);&lt;br /&gt;
							 } &lt;br /&gt;
							 } &lt;br /&gt;
					   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;filename.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt; &lt;br /&gt;
void UART_init();&lt;br /&gt;
void UART_transmit_byte(uint8_t data);&lt;br /&gt;
void UART_send_int16(int16_t value);&lt;br /&gt;
void ADC_init();&lt;br /&gt;
uint16_t ADC_read();&lt;br /&gt;
void Timer1_init();&lt;br /&gt;
ISR(TIMER1_COMPA_vect);&lt;br /&gt;
int main(void);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:Domchuk_Dmytro_MIPS_projekt.zip|zdrojak Domchuk.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Overovali sme naš program tym že menili sme polohu potenciometra a pozerali ako sa zmeni graf na serial plot.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Potenciometr0.jpg|400px|thumb|center|Poloha potenciometra 0.]]&lt;br /&gt;
[[Súbor:Graf0.jpg|400px|thumb|center|Graf pri polohe potenciometra 0.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Potenciometr3.7.jpg|400px|thumb|center|Poloha potenciometra 3.7.]]&lt;br /&gt;
[[Súbor:Graf3.7.jpg|400px|thumb|center|Graf pri polohe potenciometra 3.7.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Potenciometr4,2.jpg|400px|thumb|center|Poloha potenciometra 4.2.]]&lt;br /&gt;
[[Súbor:Graf4.2.jpg|400px|thumb|center|Graf pri polohe potenciometra 4.2.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Potenciometr5.2.jpg|400px|thumb|center|Poloha potenciometra 5.2.]]&lt;br /&gt;
[[Súbor:Graf5.2.jpg|400px|thumb|center|Graf pri polohe potenciometra 5.2.]]&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
Nabuduce pre riešenie tohto problemu zrušil by som posun nuly pri sčitanií ADC. Takže zmenil by som Baud na dajme tomu 115200 pre rychlejší prenos signalu. Takže nabuduce spravil by som to z viac profesionalnym pristupom a vytvorenim samostatnych funkcí.&lt;br /&gt;
Nepodarilo sa mi odladiť program tak aby signal bol ustalený a ne kmital.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19519</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19519"/>
		<updated>2026-06-19T12:35:46Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Bukhtiiarov, Egor: [[Zbernica i2c: EEPROM Terminál]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Igaz, Samuel: [[Monitor kapacity batérie]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Prokop, Matúš: [[Simulátor sústavy 1. rádu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vasas, Mihály Bertalan: [[Ultrazvukový radar so senzorom Ping)))]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vríčan, Dávid: [[Automatické zavlažovanie]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;  Čornyj, Gordij: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
 &amp;lt;li&amp;gt;  Domchuk, Dmytro: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
 &amp;lt;li&amp;gt;  Dzivjaková, Broňa: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Nevzorova, Sofia: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19499</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19499"/>
		<updated>2026-06-09T12:03:12Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Bukhtiiarov, Egor: [[Zbernica i2c: EEPROM Terminál]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Igaz, Samuel: [[Monitor kapacity batérie]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Prokop, Matúš: [[Simulátor sústavy 1. rádu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vasas, Mihály Bertalan: [[Ultrazvukový radar so senzorom Ping)))]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vríčan, Dávid: [[Automatické zavlažovanie]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;  Čornyj, Gordij: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
 &amp;lt;li&amp;gt;  Domchuk, Dmytro: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
 &amp;lt;li&amp;gt;  Dzivjaková, Broňa: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Nevzorova, Sofia: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19498</id>
		<title>Vzorové riešenie MIPS 2026</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19498"/>
		<updated>2026-06-09T08:25:58Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Praktická časť skúšky z predmetu MIPS / LS2026 - &#039;&#039;&#039;Richard Balogh&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Dostali ste neznámu elektronickú súčiastku spolu s jej datasheet-om. Vašou úlohou je z datasheetu zistiť, o aký snímač ide, identifikovať jeho vývody a navrhnúť zapojenie k mikroprocesoru ATmega328P. Analógový výstup snímača pripojte na vstup ADC0 (pin PC0). Na LCD displeji EA-DOGM163 zobrazte aktuálnu teplotu podľa predpísaného formátu.&lt;br /&gt;
&lt;br /&gt;
 +----------------+&lt;br /&gt;
 | Snimac teploty |&lt;br /&gt;
 | T = 25.3 °C    |&lt;br /&gt;
 | Meno Priezvisk |&lt;br /&gt;
 +----------------+&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;K dispozícii máte:&#039;&#039;&#039; &lt;br /&gt;
* Rozširujúci modul s displejom EA-DOGM163 &lt;br /&gt;
* Knižnice lcd.h / lcd.c a uart.h / uart.c z cvičení&lt;br /&gt;
* [https://www.ti.com/lit/ds/symlink/lm35.pdf Datasheet obvodu LM35]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Z datasheetu zistíme, že súčiastka LM35DZ je analógový snímač teploty v puzdre TO-92 s lineárnym výstupom &#039;&#039;&#039;10 mV/°C&#039;&#039;&#039;. Má tri vývody — pri pohľade spredu (plochá strana k nám, nožičky smerujú dole) sú zľava: +Vs (napájanie), Vout (analógový výstup) a GND (zem). Napájací rozsah je 4–30 V, takže 5 V z dosky Acrob vyhovuje.&lt;br /&gt;
&lt;br /&gt;
Zapojenie je jednoduché — napájanie na 5V, zem na GND a výstup Vout priamo na pin PC0 (ADC0). Nie je potrebný žiadny prídavný rezistor ani kondenzátor.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-schema.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Schéma zapojenia LM35DZ k ATmega328P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ak sa zo schémy zapojenia neviete celkom zorientovať, možno vám pomôže fotografia zapojenia priamo na doštičke.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-zapojenie.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zapojenie na doštičke.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Prepočet ADC na teplotu ===&lt;br /&gt;
&lt;br /&gt;
ATmega328P má 10-bitový ADC prevodník (rozsah 0–1023). S referenčným napätím AVcc = 5 V je rozlíšenie jedného kroku:&lt;br /&gt;
&lt;br /&gt;
 5000 mV / 1024 = 4,88 mV/krok&lt;br /&gt;
&lt;br /&gt;
Keďže LM35 dáva 10 mV/°C, rozlíšenie merania je približne 0,5 °C. Prepočet na teplotu v desatinách stupňa (celočíselná aritmetika):&lt;br /&gt;
&lt;br /&gt;
 t_x10 = adc_val × 5000 / 1024&lt;br /&gt;
&lt;br /&gt;
Pozor na pretečenie — hodnota 1023 × 5000 = 5 115 000, čo sa nezmestí do 16-bitového typu (max 65 535). Preto je nutné pretypovanie na &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint16_t t_x10 = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
uint8_t  cele     = t_x10 / 10;    // celá časť&lt;br /&gt;
uint8_t  desatiny = t_x10 % 10;    // desatinná časť&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program najprv inicializuje UART (pre ladenie cez &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;), LCD displej a ADC prevodník. &lt;br /&gt;
V hlavnej slučke periodicky číta hodnotu z ADC0, prepočíta ju na teplotu a zobrazí na displej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);&lt;br /&gt;
&lt;br /&gt;
    adc_init();&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read(0);&lt;br /&gt;
        uint16_t t_x10   = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
        uint8_t  cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t  desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Snimac teploty &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u oC    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Meno Priezvisko &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(100);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza problémov a najčastejšie chyby ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prevažná väčšina dokázala správne identifikovať funkciu súčiastky a väčšinou aj správne identifikovať pinout z datasheetu (ak si odmyslím &amp;quot;pohľad zdola&amp;quot;). &lt;br /&gt;
Väčšina študentov tiež ovláda jednotlivé stavebné bloky — napr. ADC inicializácia sa objavuje takmer všade a je väčšinou správna, sériová linka fungovala a často aj displej. &lt;br /&gt;
&lt;br /&gt;
Hlavný problém nebol v žiadnej jednotlivej časti — každú z nich (ADC, LCD, UART) sme robili na cvičeniach samostatne. Problém je však celková integrácia. Na skúške ste mali spojiť všetky tri naraz, navyše &lt;br /&gt;
s neznámou súčiastkou a pochopiť datasheet v angličtine.&lt;br /&gt;
&lt;br /&gt;
Vaše programy boli obvykle mozaikou kúskov z rôznych cvičení (PWM, tlačidlá, ADC, UART, LCD), poskladaných vedľa seba bez toho, aby tvorili súvislý celok. To naznačuje, že ste kód z cvičení &lt;br /&gt;
skôr kopírovali než pochopili, a keď ho bolo potrebné poskladať inak, nevedeli ste ako.&lt;br /&gt;
&lt;br /&gt;
=== Najčastejšie chyby ===&lt;br /&gt;
&lt;br /&gt;
* Príliš ambiciózny prístup &lt;br /&gt;
** písanie celého kódu na jeden krát bez priebežnej kompilácie a overovania, alebo &lt;br /&gt;
** pokus o čítanie ADC cez prerušenie (na skúšku zbytočne zložité a nedá sa stihnúť)&lt;br /&gt;
* Zmätok a neprehľadnosť v kóde &lt;br /&gt;
** chýba slučka while(1), takže celý program zbehne len raz, &lt;br /&gt;
** funkcia ktorá sa ani neskompiluje, pretože chýba jej deklarácia,&lt;br /&gt;
** mŕtvy kód - displej je za nekonečnou slučkou, takže sa nikdy nevykoná&lt;br /&gt;
** kompiluje sa celkom iný program z iného cvičenia ako ten čo je otvorený v editore&lt;br /&gt;
** Copy-paste bez rozmyslu - často sa v kóde objavovali funkcie na prácu s časovačmi a PWM výstupom.&lt;br /&gt;
&lt;br /&gt;
=== Na čo sa sústrediť pri príprave na opravný termín ===&lt;br /&gt;
&lt;br /&gt;
* Pochopiť, nielen kopírovať príkazy&lt;br /&gt;
* Snažiť sa natrénovať celý reťazec od nuly, nie jednotlivé bloky. &lt;br /&gt;
* Kompletný program: inicializuj ADC → prečítaj → prepočítaj → zobraz na LCD → opakuj. &lt;br /&gt;
* Naučiť sa vzor sprintf → lcd_puts. Toto je mechanický vzor, ktorý sa opakuje stále rovnako:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  cchar buf[17];&lt;br /&gt;
  sprintf(buf, &amp;quot;T = %2d.%d oC&amp;quot;, cele, desatiny);&lt;br /&gt;
  lcd_setCursor(2, 0);&lt;br /&gt;
  lcd_puts(buf);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kto si toto zapamätá ako jeden blok, ušetrí na skúške cenné minúty.&lt;br /&gt;
&lt;br /&gt;
* Vedieť rýchlo preskenovať a prečítať datasheet: Stačí nájsť tri veci: čo to je, aký je pinout, aká je charakteristika. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozšírená verzia kódu ==&lt;br /&gt;
&lt;br /&gt;
Na záver ukážka programu, ktorý rieši aj niektoré menšie problémy. Je tu zadefinovaný vlastný znak pre stupeň celzia aj&lt;br /&gt;
pre priezvisko s diakritikou. Aby hodnota teploty nekolísala, spravíme 16 meraní a vypočítame z nich priemernú hodnotu, &lt;br /&gt;
teda spravíme akýsi jednoduchý filter. &lt;br /&gt;
&lt;br /&gt;
Najzložitejšie je pochopiť, že v tomto kóde sme zmenili referenčné napätie z 5,0V na interných 1,1 V. Predpokladáme, že&lt;br /&gt;
teplota nikdy neprekročí 100 stupňov a teda aj napätie bude vždy menšie ako 1,0V. Preto zmenou referenčného napätia&lt;br /&gt;
rapídne zlepšíme presnosť merania. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Vzorové riešenie — rozšírená verzia (bonus)&lt;br /&gt;
 * =============================================&lt;br /&gt;
 * LM35DZ na ADC0 (PC0), displej EA-DOGM163&lt;br /&gt;
 *&lt;br /&gt;
 * Vylepšenia oproti základu:&lt;br /&gt;
 *   1. Interná referencia 1,1V  (rozlíšenie ~0,1 °C)&lt;br /&gt;
 *   2. Priemerovanie 16 vzoriek (potlačenie šumu)&lt;br /&gt;
 *   3. Vlastné znaky: °C (stupeň), ž, č  →  &amp;quot;Jožko Mrkvička&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
 * F_CPU=16000000UL, BAUDRATE=9600&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&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;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  Vlastné znaky v CGRAM  (5×8 pixelov)&lt;br /&gt;
 *&lt;br /&gt;
 *  CGRAM má 8 pozícií (0–7). Znak na pozícii N sa vloží ako &#039;\x0N&#039;.&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 1: stupeň °&lt;br /&gt;
 *&lt;br /&gt;
 *   .XX..     0x06&lt;br /&gt;
 *   X..X.     0x09&lt;br /&gt;
 *   X..X.     0x09&lt;br /&gt;
 *   .XX..     0x06&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_stupen[8] = {&lt;br /&gt;
    0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 2: ž  (z s mäkčeňom)&lt;br /&gt;
 *&lt;br /&gt;
 *   .X.X.     0x0A&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   XXXX.     0x1E&lt;br /&gt;
 *   ...X.     0x02&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   .X...     0x08&lt;br /&gt;
 *   XXXX.     0x1E&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_z_hacik[8] = {&lt;br /&gt;
    0x0A, 0x04, 0x1E, 0x02, 0x04, 0x08, 0x1E, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 3: č  (c s mäkčeňom)&lt;br /&gt;
 *&lt;br /&gt;
 *   .X.X.     0x0A&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   .XXX.     0x0E&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   .XXX.     0x0E&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_c_hacik[8] = {&lt;br /&gt;
    0x0A, 0x04, 0x0E, 0x10, 0x10, 0x10, 0x0E, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  ADC — interná referencia 1,1V + priemerovanie&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
void adc_init_1(void)&lt;br /&gt;
{&lt;br /&gt;
    /*  REFS1=1, REFS0=1  →  interná referencia 1,1V&lt;br /&gt;
     *&lt;br /&gt;
     *  Prečo 1,1V a nie 5V?&lt;br /&gt;
     *    5V:   rozlíšenie = 5000/1024 = 4,88 mV/krok → ~0,49 °C/krok&lt;br /&gt;
     *    1,1V: rozlíšenie = 1100/1024 = 1,07 mV/krok → ~0,11 °C/krok&lt;br /&gt;
     *&lt;br /&gt;
     *  Maximum s 1,1V referenciou je ~110 °C, čo LM35DZ (0–100 °C) pokryje.&lt;br /&gt;
     */&lt;br /&gt;
    ADMUX  = (1 &amp;lt;&amp;lt; REFS1) | (1 &amp;lt;&amp;lt; REFS0);&lt;br /&gt;
&lt;br /&gt;
    ADCSRA = (1 &amp;lt;&amp;lt; ADEN)&lt;br /&gt;
           | (1 &amp;lt;&amp;lt; ADPS2) | (1 &amp;lt;&amp;lt; ADPS1) | (1 &amp;lt;&amp;lt; ADPS0);  /* /128 → 125 kHz */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*  Priemer z N meraní — potlačenie šumu&lt;br /&gt;
 *&lt;br /&gt;
 *  Prečo priemerovať?&lt;br /&gt;
 *    Jeden ADC prevod kolíše ±1–2 LSB kvôli šumu.&lt;br /&gt;
 *    Priemer z 16 vzoriek to vyfiltruje.&lt;br /&gt;
 *    16 je mocnina 2, takže delenie je rýchly bitový posun.&lt;br /&gt;
 */&lt;br /&gt;
uint16_t adc_read_avg(uint8_t channel, uint8_t n)&lt;br /&gt;
{&lt;br /&gt;
    uint32_t sum = 0;&lt;br /&gt;
    for (uint8_t i = 0; i &amp;lt; n; i++)&lt;br /&gt;
    {&lt;br /&gt;
        sum += adc_read(channel);&lt;br /&gt;
        _delay_ms(2);&lt;br /&gt;
    }&lt;br /&gt;
    return (uint16_t)(sum / n);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  MAIN&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* --- Inicializácia --- */&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
    printf(&amp;quot;\r\n=== LM35DZ Teplomer (bonus) ===\r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;Ref: 1.1V interna, priemer 16 vzoriek\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);           /* display ON, cursor OFF */&lt;br /&gt;
&lt;br /&gt;
    /* Nahraj vlastné znaky do CGRAM */&lt;br /&gt;
    def_znak(znak_stupen,  1);   /* ° na pozícii 1 → &#039;\x01&#039; */&lt;br /&gt;
    def_znak(znak_z_hacik, 2);   /* ž na pozícii 2 → &#039;\x02&#039; */&lt;br /&gt;
    def_znak(znak_c_hacik, 3);   /* č na pozícii 3 → &#039;\x03&#039; */&lt;br /&gt;
&lt;br /&gt;
    /* Inicializuj ADC s internou 1,1V referenciou */&lt;br /&gt;
    adc_init_1();&lt;br /&gt;
    (void)adc_read(0);           /* zahoď prvý prevod po zmene Vref */&lt;br /&gt;
    _delay_ms(50);               /* nechaj referenciu ustáliť sa */&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    /* --- Hlavná slučka --- */&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read_avg(0, 16);&lt;br /&gt;
&lt;br /&gt;
        /*  Prepočet s 1,1V referenciou:&lt;br /&gt;
         *&lt;br /&gt;
         *    U [mV] = adc_val × 1100 / 1024&lt;br /&gt;
         *    T [°C] = U / 10            (LM35: 10 mV/°C)&lt;br /&gt;
         *    t_x10  = adc_val × 1100 / 1024   (teplota × 10)&lt;br /&gt;
         *&lt;br /&gt;
         *    Príklad: adc_val = 227&lt;br /&gt;
         *      t_x10 = 227 × 1100 / 1024 = 243  →  24,3 °C&lt;br /&gt;
         */&lt;br /&gt;
        uint16_t t_x10 = (uint32_t)adc_val * 1100 / 1024;&lt;br /&gt;
&lt;br /&gt;
        uint8_t cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        /* Debug na UART */&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 1: nadpis */&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Senzor LM35 &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 2: teplota so znakom ° z CGRAM pozície 1 */&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u \x01&amp;quot;&amp;quot;C    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 3: &amp;quot;Jožko Mrkvička&amp;quot; s vlastnými ž a č */&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Jo\x02ko Mrkvi\x03ka &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(500);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Program funguje ako vidno na videu - je na ňom vidieť aktuálnu teplotu na displeji, ktorá reaguje na dotyk prsta (zahriatie).&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-video.gif|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:AVR]]&lt;br /&gt;
[[Kategória:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:MIPS2026-LM35DZ-video.gif&amp;diff=19497</id>
		<title>Súbor:MIPS2026-LM35DZ-video.gif</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:MIPS2026-LM35DZ-video.gif&amp;diff=19497"/>
		<updated>2026-06-09T08:25:12Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:MIPS2026-LM35DZ-zapojenie.jpg&amp;diff=19496</id>
		<title>Súbor:MIPS2026-LM35DZ-zapojenie.jpg</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:MIPS2026-LM35DZ-zapojenie.jpg&amp;diff=19496"/>
		<updated>2026-06-09T08:19:10Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:MIPS2026-LM35DZ-schema.png&amp;diff=19495</id>
		<title>Súbor:MIPS2026-LM35DZ-schema.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:MIPS2026-LM35DZ-schema.png&amp;diff=19495"/>
		<updated>2026-06-09T08:14:17Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19494</id>
		<title>Vzorové riešenie MIPS 2026</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19494"/>
		<updated>2026-06-09T08:14:03Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Praktická časť skúšky z predmetu MIPS / LS2026 - &#039;&#039;&#039;Richard Balogh&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Dostali ste neznámu elektronickú súčiastku spolu s jej datasheet-om. Vašou úlohou je z datasheetu zistiť, o aký snímač ide, identifikovať jeho vývody a navrhnúť zapojenie k mikroprocesoru ATmega328P. Analógový výstup snímača pripojte na vstup ADC0 (pin PC0). Na LCD displeji EA-DOGM163 zobrazte aktuálnu teplotu podľa predpísaného formátu.&lt;br /&gt;
&lt;br /&gt;
 +----------------+&lt;br /&gt;
 | Snimac teploty |&lt;br /&gt;
 | T = 25.3 °C    |&lt;br /&gt;
 | Meno Priezvisk |&lt;br /&gt;
 +----------------+&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;K dispozícii máte:&#039;&#039;&#039; &lt;br /&gt;
* Rozširujúci modul s displejom EA-DOGM163 &lt;br /&gt;
* Knižnice lcd.h / lcd.c a uart.h / uart.c z cvičení&lt;br /&gt;
* [https://www.ti.com/lit/ds/symlink/lm35.pdf Datasheet obvodu LM35]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Z datasheetu zistíme, že súčiastka LM35DZ je analógový snímač teploty v puzdre TO-92 s lineárnym výstupom &#039;&#039;&#039;10 mV/°C&#039;&#039;&#039;. Má tri vývody — pri pohľade spredu (plochá strana k nám, nožičky smerujú dole) sú zľava: +Vs (napájanie), Vout (analógový výstup) a GND (zem). Napájací rozsah je 4–30 V, takže 5 V z dosky Acrob vyhovuje.&lt;br /&gt;
&lt;br /&gt;
Zapojenie je jednoduché — napájanie na 5V, zem na GND a výstup Vout priamo na pin PC0 (ADC0). Nie je potrebný žiadny prídavný rezistor ani kondenzátor.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-schema.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Schéma zapojenia LM35DZ k ATmega328P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ak sa zo schémy zapojenia neviete celkom zorientovať, možno vám pomôže fotografia zapojenia priamo na doštičke.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-zapojenie.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zapojenie na doštičke.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Prepočet ADC na teplotu ===&lt;br /&gt;
&lt;br /&gt;
ATmega328P má 10-bitový ADC prevodník (rozsah 0–1023). S referenčným napätím AVcc = 5 V je rozlíšenie jedného kroku:&lt;br /&gt;
&lt;br /&gt;
 5000 mV / 1024 = 4,88 mV/krok&lt;br /&gt;
&lt;br /&gt;
Keďže LM35 dáva 10 mV/°C, rozlíšenie merania je približne 0,5 °C. Prepočet na teplotu v desatinách stupňa (celočíselná aritmetika):&lt;br /&gt;
&lt;br /&gt;
 t_x10 = adc_val × 5000 / 1024&lt;br /&gt;
&lt;br /&gt;
Pozor na pretečenie — hodnota 1023 × 5000 = 5 115 000, čo sa nezmestí do 16-bitového typu (max 65 535). Preto je nutné pretypovanie na &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint16_t t_x10 = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
uint8_t  cele     = t_x10 / 10;    // celá časť&lt;br /&gt;
uint8_t  desatiny = t_x10 % 10;    // desatinná časť&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program najprv inicializuje UART (pre ladenie cez &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;), LCD displej a ADC prevodník. &lt;br /&gt;
V hlavnej slučke periodicky číta hodnotu z ADC0, prepočíta ju na teplotu a zobrazí na displej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);&lt;br /&gt;
&lt;br /&gt;
    adc_init();&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read(0);&lt;br /&gt;
        uint16_t t_x10   = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
        uint8_t  cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t  desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Snimac teploty &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u oC    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Meno Priezvisko &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(100);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza problémov a najčastejšie chyby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prevažná väčšina dokázala správne identifikovať funkciu súčiastky a väčšinou aj správne identifikovať pinout z datasheetu (ak si odmyslím &amp;quot;pohľad zdola&amp;quot;). &lt;br /&gt;
Väčšina študentov tiež ovláda jednotlivé stavebné bloky — napr. ADC inicializácia sa objavuje takmer všade a je väčšinou správna, sériová linka fungovala a často aj displej. &lt;br /&gt;
&lt;br /&gt;
Hlavný problém nebol v žiadnej jednotlivej časti — každú z nich (ADC, LCD, UART) sme robili na cvičeniach samostatne. Problém je však celková integrácia. Na skúške ste mali spojiť všetky tri naraz, navyše &lt;br /&gt;
s neznámou súčiastkou a pochopiť datasheet v angličtine.&lt;br /&gt;
&lt;br /&gt;
Vaše programy boli obvykle mozaikou kúskov z rôznych cvičení (PWM, tlačidlá, ADC, UART, LCD), poskladaných vedľa seba bez toho, aby tvorili súvislý celok. To naznačuje, že ste kód z cvičení &lt;br /&gt;
skôr kopírovali než pochopili, a keď ho bolo potrebné poskladať inak, nevedeli ste ako.&lt;br /&gt;
&lt;br /&gt;
=== Najčastejšie chyby ===&lt;br /&gt;
&lt;br /&gt;
* Príliš ambiciózny prístup &lt;br /&gt;
** písanie celého kódu na jeden krát bez priebežnej kompilácie a overovania, alebo &lt;br /&gt;
** pokus o čítanie ADC cez prerušenie (na skúšku zbytočne zložité a nedá sa stihnúť)&lt;br /&gt;
* Zmätok a neprehľadnosť v kóde &lt;br /&gt;
** chýba slučka while(1), takže celý program zbehne len raz, &lt;br /&gt;
** funkcia ktorá sa ani neskompiluje, pretože chýba jej deklarácia,&lt;br /&gt;
** mŕtvy kód - displej je za nekonečnou slučkou, takže sa nikdy nevykoná&lt;br /&gt;
** kompiluje sa celkom iný program z iného cvičenia ako ten čo je otvorený v editore&lt;br /&gt;
** Copy-paste bez rozmyslu - často sa v kóde objavovali funkcie na prácu s časovačmi a PWM výstupom.&lt;br /&gt;
&lt;br /&gt;
=== Na čo sa sústrediť pri príprave na opravný termín ===&lt;br /&gt;
&lt;br /&gt;
* Pochopiť, nielen kopírovať príkazy&lt;br /&gt;
* Snažiť sa natrénovať celý reťazec od nuly, nie jednotlivé bloky. &lt;br /&gt;
* Kompletný program: inicializuj ADC → prečítaj → prepočítaj → zobraz na LCD → opakuj. &lt;br /&gt;
* Naučiť sa vzor sprintf → lcd_puts. Toto je mechanický vzor, ktorý sa opakuje stále rovnako:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  cchar buf[17];&lt;br /&gt;
  sprintf(buf, &amp;quot;T = %2d.%d oC&amp;quot;, cele, desatiny);&lt;br /&gt;
  lcd_setCursor(2, 0);&lt;br /&gt;
  lcd_puts(buf);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kto si toto zapamätá ako jeden blok, ušetrí na skúške cenné minúty.&lt;br /&gt;
&lt;br /&gt;
* Vedieť rýchlo preskenovať a prečítať datasheet: Stačí nájsť tri veci: čo to je, aký je pinout, aká je charakteristika. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozšírená verzia kódu ==&lt;br /&gt;
&lt;br /&gt;
Na záver ukážka programu, ktorý rieši aj niektoré menšie problémy. Je tu zadefinovaný vlastný znak pre stupeň celzia aj&lt;br /&gt;
pre priezvisko s diakritikou. Aby hodnota teploty nekolísala, spravíme 16 meraní a vypočítame z nich priemernú hodnotu, &lt;br /&gt;
teda spravíme akýsi jednoduchý filter. &lt;br /&gt;
&lt;br /&gt;
Najzložitejšie je pochopiť, že v tomto kóde sme zmenili referenčné napätie z 5,0V na interných 1,1 V. Predpokladáme, že&lt;br /&gt;
teplota nikdy neprekročí 100 stupňov a teda aj napätie bude vždy menšie ako 1,0V. Preto zmenou referenčného napätia&lt;br /&gt;
rapídne zlepšíme presnosť merania. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Vzorové riešenie — rozšírená verzia (bonus)&lt;br /&gt;
 * =============================================&lt;br /&gt;
 * LM35DZ na ADC0 (PC0), displej EA-DOGM163&lt;br /&gt;
 *&lt;br /&gt;
 * Vylepšenia oproti základu:&lt;br /&gt;
 *   1. Interná referencia 1,1V  (rozlíšenie ~0,1 °C)&lt;br /&gt;
 *   2. Priemerovanie 16 vzoriek (potlačenie šumu)&lt;br /&gt;
 *   3. Vlastné znaky: °C (stupeň), ž, č  →  &amp;quot;Jožko Mrkvička&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
 * F_CPU=16000000UL, BAUDRATE=9600&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&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;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  Vlastné znaky v CGRAM  (5×8 pixelov)&lt;br /&gt;
 *&lt;br /&gt;
 *  CGRAM má 8 pozícií (0–7). Znak na pozícii N sa vloží ako &#039;\x0N&#039;.&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 1: stupeň °&lt;br /&gt;
 *&lt;br /&gt;
 *   .XX..     0x06&lt;br /&gt;
 *   X..X.     0x09&lt;br /&gt;
 *   X..X.     0x09&lt;br /&gt;
 *   .XX..     0x06&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_stupen[8] = {&lt;br /&gt;
    0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 2: ž  (z s mäkčeňom)&lt;br /&gt;
 *&lt;br /&gt;
 *   .X.X.     0x0A&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   XXXX.     0x1E&lt;br /&gt;
 *   ...X.     0x02&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   .X...     0x08&lt;br /&gt;
 *   XXXX.     0x1E&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_z_hacik[8] = {&lt;br /&gt;
    0x0A, 0x04, 0x1E, 0x02, 0x04, 0x08, 0x1E, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 3: č  (c s mäkčeňom)&lt;br /&gt;
 *&lt;br /&gt;
 *   .X.X.     0x0A&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   .XXX.     0x0E&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   .XXX.     0x0E&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_c_hacik[8] = {&lt;br /&gt;
    0x0A, 0x04, 0x0E, 0x10, 0x10, 0x10, 0x0E, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  ADC — interná referencia 1,1V + priemerovanie&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
void adc_init_1(void)&lt;br /&gt;
{&lt;br /&gt;
    /*  REFS1=1, REFS0=1  →  interná referencia 1,1V&lt;br /&gt;
     *&lt;br /&gt;
     *  Prečo 1,1V a nie 5V?&lt;br /&gt;
     *    5V:   rozlíšenie = 5000/1024 = 4,88 mV/krok → ~0,49 °C/krok&lt;br /&gt;
     *    1,1V: rozlíšenie = 1100/1024 = 1,07 mV/krok → ~0,11 °C/krok&lt;br /&gt;
     *&lt;br /&gt;
     *  Maximum s 1,1V referenciou je ~110 °C, čo LM35DZ (0–100 °C) pokryje.&lt;br /&gt;
     */&lt;br /&gt;
    ADMUX  = (1 &amp;lt;&amp;lt; REFS1) | (1 &amp;lt;&amp;lt; REFS0);&lt;br /&gt;
&lt;br /&gt;
    ADCSRA = (1 &amp;lt;&amp;lt; ADEN)&lt;br /&gt;
           | (1 &amp;lt;&amp;lt; ADPS2) | (1 &amp;lt;&amp;lt; ADPS1) | (1 &amp;lt;&amp;lt; ADPS0);  /* /128 → 125 kHz */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*  Priemer z N meraní — potlačenie šumu&lt;br /&gt;
 *&lt;br /&gt;
 *  Prečo priemerovať?&lt;br /&gt;
 *    Jeden ADC prevod kolíše ±1–2 LSB kvôli šumu.&lt;br /&gt;
 *    Priemer z 16 vzoriek to vyfiltruje.&lt;br /&gt;
 *    16 je mocnina 2, takže delenie je rýchly bitový posun.&lt;br /&gt;
 */&lt;br /&gt;
uint16_t adc_read_avg(uint8_t channel, uint8_t n)&lt;br /&gt;
{&lt;br /&gt;
    uint32_t sum = 0;&lt;br /&gt;
    for (uint8_t i = 0; i &amp;lt; n; i++)&lt;br /&gt;
    {&lt;br /&gt;
        sum += adc_read(channel);&lt;br /&gt;
        _delay_ms(2);&lt;br /&gt;
    }&lt;br /&gt;
    return (uint16_t)(sum / n);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  MAIN&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* --- Inicializácia --- */&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
    printf(&amp;quot;\r\n=== LM35DZ Teplomer (bonus) ===\r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;Ref: 1.1V interna, priemer 16 vzoriek\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);           /* display ON, cursor OFF */&lt;br /&gt;
&lt;br /&gt;
    /* Nahraj vlastné znaky do CGRAM */&lt;br /&gt;
    def_znak(znak_stupen,  1);   /* ° na pozícii 1 → &#039;\x01&#039; */&lt;br /&gt;
    def_znak(znak_z_hacik, 2);   /* ž na pozícii 2 → &#039;\x02&#039; */&lt;br /&gt;
    def_znak(znak_c_hacik, 3);   /* č na pozícii 3 → &#039;\x03&#039; */&lt;br /&gt;
&lt;br /&gt;
    /* Inicializuj ADC s internou 1,1V referenciou */&lt;br /&gt;
    adc_init_1();&lt;br /&gt;
    (void)adc_read(0);           /* zahoď prvý prevod po zmene Vref */&lt;br /&gt;
    _delay_ms(50);               /* nechaj referenciu ustáliť sa */&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    /* --- Hlavná slučka --- */&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read_avg(0, 16);&lt;br /&gt;
&lt;br /&gt;
        /*  Prepočet s 1,1V referenciou:&lt;br /&gt;
         *&lt;br /&gt;
         *    U [mV] = adc_val × 1100 / 1024&lt;br /&gt;
         *    T [°C] = U / 10            (LM35: 10 mV/°C)&lt;br /&gt;
         *    t_x10  = adc_val × 1100 / 1024   (teplota × 10)&lt;br /&gt;
         *&lt;br /&gt;
         *    Príklad: adc_val = 227&lt;br /&gt;
         *      t_x10 = 227 × 1100 / 1024 = 243  →  24,3 °C&lt;br /&gt;
         */&lt;br /&gt;
        uint16_t t_x10 = (uint32_t)adc_val * 1100 / 1024;&lt;br /&gt;
&lt;br /&gt;
        uint8_t cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        /* Debug na UART */&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 1: nadpis */&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Senzor LM35 &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 2: teplota so znakom ° z CGRAM pozície 1 */&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u \x01&amp;quot;&amp;quot;C    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 3: &amp;quot;Jožko Mrkvička&amp;quot; s vlastnými ž a č */&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Jo\x02ko Mrkvi\x03ka &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(500);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Program funguje ako vidno na videu - je na ňom vidieť aktuálnu teplotu na displeji, ktorá reaguje na dotyk prsta (zahriatie).&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-video.gif|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:AVR]]&lt;br /&gt;
[[Kategória:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19493</id>
		<title>Vzorové riešenie MIPS 2026</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19493"/>
		<updated>2026-06-09T08:10:49Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vzorové riešenie MIPS 2026&lt;br /&gt;
&lt;br /&gt;
Praktická časť skúšky z predmetu MIPS / LS2026 - &#039;&#039;&#039;Richard Balogh&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Dostali ste neznámu elektronickú súčiastku spolu s jej datasheet-om. Vašou úlohou je z datasheetu zistiť, o aký snímač ide, identifikovať jeho vývody a navrhnúť zapojenie k mikroprocesoru ATmega328P. Analógový výstup snímača pripojte na vstup ADC0 (pin PC0). Na LCD displeji EA-DOGM163 zobrazte aktuálnu teplotu podľa predpísaného formátu.&lt;br /&gt;
&lt;br /&gt;
 +----------------+&lt;br /&gt;
 | Snimac teploty |&lt;br /&gt;
 | T = 25.3 °C    |&lt;br /&gt;
 | Meno Priezvisk |&lt;br /&gt;
 +----------------+&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;K dispozícii máte:&#039;&#039;&#039; &lt;br /&gt;
* Rozširujúci modul s displejom EA-DOGM163 &lt;br /&gt;
* Knižnice lcd.h / lcd.c a uart.h / uart.c z cvičení&lt;br /&gt;
* [https://www.ti.com/lit/ds/symlink/lm35.pdf Datasheet obvodu LM35]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Z datasheetu zistíme, že súčiastka LM35DZ je analógový snímač teploty v puzdre TO-92 s lineárnym výstupom &#039;&#039;&#039;10 mV/°C&#039;&#039;&#039;. Má tri vývody — pri pohľade spredu (plochá strana k nám, nožičky smerujú dole) sú zľava: +Vs (napájanie), Vout (analógový výstup) a GND (zem). Napájací rozsah je 4–30 V, takže 5 V z dosky Acrob vyhovuje.&lt;br /&gt;
&lt;br /&gt;
Zapojenie je jednoduché — napájanie na 5V, zem na GND a výstup Vout priamo na pin PC0 (ADC0). Nie je potrebný žiadny prídavný rezistor ani kondenzátor.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-schema.svg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Schéma zapojenia LM35DZ k ATmega328P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ak sa zo schémy zapojenia neviete celkom zorientovať, možno vám pomôže fotografia zapojenia priamo na doštičke.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-zapojenie.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zapojenie na doštičke.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Prepočet ADC na teplotu ===&lt;br /&gt;
&lt;br /&gt;
ATmega328P má 10-bitový ADC prevodník (rozsah 0–1023). S referenčným napätím AVcc = 5 V je rozlíšenie jedného kroku:&lt;br /&gt;
&lt;br /&gt;
 5000 mV / 1024 = 4,88 mV/krok&lt;br /&gt;
&lt;br /&gt;
Keďže LM35 dáva 10 mV/°C, rozlíšenie merania je približne 0,5 °C. Prepočet na teplotu v desatinách stupňa (celočíselná aritmetika):&lt;br /&gt;
&lt;br /&gt;
 t_x10 = adc_val × 5000 / 1024&lt;br /&gt;
&lt;br /&gt;
Pozor na pretečenie — hodnota 1023 × 5000 = 5 115 000, čo sa nezmestí do 16-bitového typu (max 65 535). Preto je nutné pretypovanie na &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint16_t t_x10 = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
uint8_t  cele     = t_x10 / 10;    // celá časť&lt;br /&gt;
uint8_t  desatiny = t_x10 % 10;    // desatinná časť&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program najprv inicializuje UART (pre ladenie cez &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;), LCD displej a ADC prevodník. &lt;br /&gt;
V hlavnej slučke periodicky číta hodnotu z ADC0, prepočíta ju na teplotu a zobrazí na displej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);&lt;br /&gt;
&lt;br /&gt;
    adc_init();&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read(0);&lt;br /&gt;
        uint16_t t_x10   = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
        uint8_t  cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t  desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Snimac teploty &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u oC    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Meno Priezvisko &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(100);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza problémov a najčastejšie chyby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prevažná väčšina dokázala správne identifikovať funkciu súčiastky a väčšinou aj správne identifikovať pinout z datasheetu (ak si odmyslím &amp;quot;pohľad zdola&amp;quot;). &lt;br /&gt;
Väčšina študentov tiež ovláda jednotlivé stavebné bloky — napr. ADC inicializácia sa objavuje takmer všade a je väčšinou správna, sériová linka fungovala a často aj displej. &lt;br /&gt;
&lt;br /&gt;
Hlavný problém nebol v žiadnej jednotlivej časti — každú z nich (ADC, LCD, UART) sme robili na cvičeniach samostatne. Problém je však celková integrácia. Na skúške ste mali spojiť všetky tri naraz, navyše &lt;br /&gt;
s neznámou súčiastkou a pochopiť datasheet v angličtine.&lt;br /&gt;
&lt;br /&gt;
Vaše programy boli obvykle mozaikou kúskov z rôznych cvičení (PWM, tlačidlá, ADC, UART, LCD), poskladaných vedľa seba bez toho, aby tvorili súvislý celok. To naznačuje, že ste kód z cvičení &lt;br /&gt;
skôr kopírovali než pochopili, a keď ho bolo potrebné poskladať inak, nevedeli ste ako.&lt;br /&gt;
&lt;br /&gt;
=== Najčastejšie chyby ===&lt;br /&gt;
&lt;br /&gt;
* Príliš ambiciózny prístup &lt;br /&gt;
** písanie celého kódu na jeden krát bez priebežnej kompilácie a overovania, alebo &lt;br /&gt;
** pokus o čítanie ADC cez prerušenie (na skúšku zbytočne zložité a nedá sa stihnúť)&lt;br /&gt;
* Zmätok a neprehľadnosť v kóde &lt;br /&gt;
** chýba slučka while(1), takže celý program zbehne len raz, &lt;br /&gt;
** funkcia ktorá sa ani neskompiluje, pretože chýba jej deklarácia,&lt;br /&gt;
** mŕtvy kód - displej je za nekonečnou slučkou, takže sa nikdy nevykoná&lt;br /&gt;
** kompiluje sa celkom iný program z iného cvičenia ako ten čo je otvorený v editore&lt;br /&gt;
** Copy-paste bez rozmyslu - často sa v kóde objavovali funkcie na prácu s časovačmi a PWM výstupom.&lt;br /&gt;
&lt;br /&gt;
=== Na čo sa sústrediť pri príprave na opravný termín ===&lt;br /&gt;
&lt;br /&gt;
* Pochopiť, nielen kopírovať príkazy&lt;br /&gt;
* Snažiť sa natrénovať celý reťazec od nuly, nie jednotlivé bloky. &lt;br /&gt;
* Kompletný program: inicializuj ADC → prečítaj → prepočítaj → zobraz na LCD → opakuj. &lt;br /&gt;
* Naučiť sa vzor sprintf → lcd_puts. Toto je mechanický vzor, ktorý sa opakuje stále rovnako:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  cchar buf[17];&lt;br /&gt;
  sprintf(buf, &amp;quot;T = %2d.%d oC&amp;quot;, cele, desatiny);&lt;br /&gt;
  lcd_setCursor(2, 0);&lt;br /&gt;
  lcd_puts(buf);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kto si toto zapamätá ako jeden blok, ušetrí na skúške cenné minúty.&lt;br /&gt;
&lt;br /&gt;
* Vedieť rýchlo preskenovať a prečítať datasheet: Stačí nájsť tri veci: čo to je, aký je pinout, aká je charakteristika. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozšírená verzia kódu ==&lt;br /&gt;
&lt;br /&gt;
Na záver ukážka programu, ktorý rieši aj niektoré menšie problémy. Je tu zadefinovaný vlastný znak pre stupeň celzia aj&lt;br /&gt;
pre priezvisko s diakritikou. Aby hodnota teploty nekolísala, spravíme 16 meraní a vypočítame z nich priemernú hodnotu, &lt;br /&gt;
teda spravíme akýsi jednoduchý filter. &lt;br /&gt;
&lt;br /&gt;
Najzložitejšie je pochopiť, že v tomto kóde sme zmenili referenčné napätie z 5,0V na interných 1,1 V. Predpokladáme, že&lt;br /&gt;
teplota nikdy neprekročí 100 stupňov a teda aj napätie bude vždy menšie ako 1,0V. Preto zmenou referenčného napätia&lt;br /&gt;
rapídne zlepšíme presnosť merania. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Vzorové riešenie — rozšírená verzia (bonus)&lt;br /&gt;
 * =============================================&lt;br /&gt;
 * LM35DZ na ADC0 (PC0), displej EA-DOGM163&lt;br /&gt;
 *&lt;br /&gt;
 * Vylepšenia oproti základu:&lt;br /&gt;
 *   1. Interná referencia 1,1V  (rozlíšenie ~0,1 °C)&lt;br /&gt;
 *   2. Priemerovanie 16 vzoriek (potlačenie šumu)&lt;br /&gt;
 *   3. Vlastné znaky: °C (stupeň), ž, č  →  &amp;quot;Jožko Mrkvička&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
 * F_CPU=16000000UL, BAUDRATE=9600&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&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;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  Vlastné znaky v CGRAM  (5×8 pixelov)&lt;br /&gt;
 *&lt;br /&gt;
 *  CGRAM má 8 pozícií (0–7). Znak na pozícii N sa vloží ako &#039;\x0N&#039;.&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 1: stupeň °&lt;br /&gt;
 *&lt;br /&gt;
 *   .XX..     0x06&lt;br /&gt;
 *   X..X.     0x09&lt;br /&gt;
 *   X..X.     0x09&lt;br /&gt;
 *   .XX..     0x06&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_stupen[8] = {&lt;br /&gt;
    0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 2: ž  (z s mäkčeňom)&lt;br /&gt;
 *&lt;br /&gt;
 *   .X.X.     0x0A&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   XXXX.     0x1E&lt;br /&gt;
 *   ...X.     0x02&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   .X...     0x08&lt;br /&gt;
 *   XXXX.     0x1E&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_z_hacik[8] = {&lt;br /&gt;
    0x0A, 0x04, 0x1E, 0x02, 0x04, 0x08, 0x1E, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*  Pozícia 3: č  (c s mäkčeňom)&lt;br /&gt;
 *&lt;br /&gt;
 *   .X.X.     0x0A&lt;br /&gt;
 *   ..X..     0x04&lt;br /&gt;
 *   .XXX.     0x0E&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   X....     0x10&lt;br /&gt;
 *   .XXX.     0x0E&lt;br /&gt;
 *   .....     0x00&lt;br /&gt;
 */&lt;br /&gt;
unsigned char znak_c_hacik[8] = {&lt;br /&gt;
    0x0A, 0x04, 0x0E, 0x10, 0x10, 0x10, 0x0E, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  ADC — interná referencia 1,1V + priemerovanie&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
void adc_init_1(void)&lt;br /&gt;
{&lt;br /&gt;
    /*  REFS1=1, REFS0=1  →  interná referencia 1,1V&lt;br /&gt;
     *&lt;br /&gt;
     *  Prečo 1,1V a nie 5V?&lt;br /&gt;
     *    5V:   rozlíšenie = 5000/1024 = 4,88 mV/krok → ~0,49 °C/krok&lt;br /&gt;
     *    1,1V: rozlíšenie = 1100/1024 = 1,07 mV/krok → ~0,11 °C/krok&lt;br /&gt;
     *&lt;br /&gt;
     *  Maximum s 1,1V referenciou je ~110 °C, čo LM35DZ (0–100 °C) pokryje.&lt;br /&gt;
     */&lt;br /&gt;
    ADMUX  = (1 &amp;lt;&amp;lt; REFS1) | (1 &amp;lt;&amp;lt; REFS0);&lt;br /&gt;
&lt;br /&gt;
    ADCSRA = (1 &amp;lt;&amp;lt; ADEN)&lt;br /&gt;
           | (1 &amp;lt;&amp;lt; ADPS2) | (1 &amp;lt;&amp;lt; ADPS1) | (1 &amp;lt;&amp;lt; ADPS0);  /* /128 → 125 kHz */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*  Priemer z N meraní — potlačenie šumu&lt;br /&gt;
 *&lt;br /&gt;
 *  Prečo priemerovať?&lt;br /&gt;
 *    Jeden ADC prevod kolíše ±1–2 LSB kvôli šumu.&lt;br /&gt;
 *    Priemer z 16 vzoriek to vyfiltruje.&lt;br /&gt;
 *    16 je mocnina 2, takže delenie je rýchly bitový posun.&lt;br /&gt;
 */&lt;br /&gt;
uint16_t adc_read_avg(uint8_t channel, uint8_t n)&lt;br /&gt;
{&lt;br /&gt;
    uint32_t sum = 0;&lt;br /&gt;
    for (uint8_t i = 0; i &amp;lt; n; i++)&lt;br /&gt;
    {&lt;br /&gt;
        sum += adc_read(channel);&lt;br /&gt;
        _delay_ms(2);&lt;br /&gt;
    }&lt;br /&gt;
    return (uint16_t)(sum / n);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =====================================================================&lt;br /&gt;
 *  MAIN&lt;br /&gt;
 * ===================================================================== */&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* --- Inicializácia --- */&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
    printf(&amp;quot;\r\n=== LM35DZ Teplomer (bonus) ===\r\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;Ref: 1.1V interna, priemer 16 vzoriek\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);           /* display ON, cursor OFF */&lt;br /&gt;
&lt;br /&gt;
    /* Nahraj vlastné znaky do CGRAM */&lt;br /&gt;
    def_znak(znak_stupen,  1);   /* ° na pozícii 1 → &#039;\x01&#039; */&lt;br /&gt;
    def_znak(znak_z_hacik, 2);   /* ž na pozícii 2 → &#039;\x02&#039; */&lt;br /&gt;
    def_znak(znak_c_hacik, 3);   /* č na pozícii 3 → &#039;\x03&#039; */&lt;br /&gt;
&lt;br /&gt;
    /* Inicializuj ADC s internou 1,1V referenciou */&lt;br /&gt;
    adc_init_1();&lt;br /&gt;
    (void)adc_read(0);           /* zahoď prvý prevod po zmene Vref */&lt;br /&gt;
    _delay_ms(50);               /* nechaj referenciu ustáliť sa */&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    /* --- Hlavná slučka --- */&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read_avg(0, 16);&lt;br /&gt;
&lt;br /&gt;
        /*  Prepočet s 1,1V referenciou:&lt;br /&gt;
         *&lt;br /&gt;
         *    U [mV] = adc_val × 1100 / 1024&lt;br /&gt;
         *    T [°C] = U / 10            (LM35: 10 mV/°C)&lt;br /&gt;
         *    t_x10  = adc_val × 1100 / 1024   (teplota × 10)&lt;br /&gt;
         *&lt;br /&gt;
         *    Príklad: adc_val = 227&lt;br /&gt;
         *      t_x10 = 227 × 1100 / 1024 = 243  →  24,3 °C&lt;br /&gt;
         */&lt;br /&gt;
        uint16_t t_x10 = (uint32_t)adc_val * 1100 / 1024;&lt;br /&gt;
&lt;br /&gt;
        uint8_t cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        /* Debug na UART */&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 1: nadpis */&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Senzor LM35 &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 2: teplota so znakom ° z CGRAM pozície 1 */&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u \x01&amp;quot;&amp;quot;C    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        /* Riadok 3: &amp;quot;Jožko Mrkvička&amp;quot; s vlastnými ž a č */&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Jo\x02ko Mrkvi\x03ka &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(500);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Program funguje ako vidno na videu - je na ňom vidieť aktuálnu teplotu na displeji, ktorá reaguje na dotyk prsta (zahriatie).&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-video.gif|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:AVR]]&lt;br /&gt;
[[Kategória:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19492</id>
		<title>Vzorové riešenie MIPS 2026</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Vzorov%C3%A9_rie%C5%A1enie_MIPS_2026&amp;diff=19492"/>
		<updated>2026-06-09T06:47:24Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Vytvorená stránka „Vzorové riešenie MIPS 2026  Praktická časť skúšky z predmetu MIPS / LS2026 - &amp;#039;&amp;#039;&amp;#039;Richard Balogh&amp;#039;&amp;#039;&amp;#039;   == Zadanie ==  Dostali ste neznámu elektronickú súčiastku spolu s jej datasheet-om. Vašou úlohou je z datasheetu zistiť, o aký snímač ide, identifikovať jeho vývody a navrhnúť zapojenie k mikroprocesoru ATmega328P. Analógový výstup snímača pripojte na vstup ADC0 (pin PC0). Na LCD displeji EA-DOGM163 zobrazte aktuálnu teplotu podľa predpís…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vzorové riešenie MIPS 2026&lt;br /&gt;
&lt;br /&gt;
Praktická časť skúšky z predmetu MIPS / LS2026 - &#039;&#039;&#039;Richard Balogh&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Dostali ste neznámu elektronickú súčiastku spolu s jej datasheet-om. Vašou úlohou je z datasheetu zistiť, o aký snímač ide, identifikovať jeho vývody a navrhnúť zapojenie k mikroprocesoru ATmega328P. Analógový výstup snímača pripojte na vstup ADC0 (pin PC0). Na LCD displeji EA-DOGM163 zobrazte aktuálnu teplotu podľa predpísaného formátu.&lt;br /&gt;
&lt;br /&gt;
 +----------------+&lt;br /&gt;
 | Snimac teploty |&lt;br /&gt;
 | T = 25.3 °C    |&lt;br /&gt;
 | Meno Priezvisk |&lt;br /&gt;
 +----------------+&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;K dispozícii máte:&#039;&#039;&#039; &lt;br /&gt;
* Rozširujúci modul s displejom EA-DOGM163 &lt;br /&gt;
* Knižnice lcd.h / lcd.c a uart.h / uart.c z cvičení&lt;br /&gt;
* [https://www.ti.com/lit/ds/symlink/lm35.pdf Datasheet obvodu LM35]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analýza a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Z datasheetu zistíme, že súčiastka LM35DZ je analógový snímač teploty v puzdre TO-92 s lineárnym výstupom &#039;&#039;&#039;10 mV/°C&#039;&#039;&#039;. Má tri vývody — pri pohľade spredu (plochá strana k nám, nožičky smerujú dole) sú zľava: +Vs (napájanie), Vout (analógový výstup) a GND (zem). Napájací rozsah je 4–30 V, takže 5 V z dosky Acrob vyhovuje.&lt;br /&gt;
&lt;br /&gt;
Zapojenie je jednoduché — napájanie na 5V, zem na GND a výstup Vout priamo na pin PC0 (ADC0). Nie je potrebný žiadny prídavný rezistor ani kondenzátor.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-schema.svg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Schéma zapojenia LM35DZ k ATmega328P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ak sa zo schémy zapojenia neviete celkom zorientovať, možno vám pomôže fotografia zapojenia priamo na doštičke.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-zapojenie.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zapojenie na doštičke.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Prepočet ADC na teplotu ===&lt;br /&gt;
&lt;br /&gt;
ATmega328P má 10-bitový ADC prevodník (rozsah 0–1023). S referenčným napätím AVcc = 5 V je rozlíšenie jedného kroku:&lt;br /&gt;
&lt;br /&gt;
 5000 mV / 1024 = 4,88 mV/krok&lt;br /&gt;
&lt;br /&gt;
Keďže LM35 dáva 10 mV/°C, rozlíšenie merania je približne 0,5 °C. Prepočet na teplotu v desatinách stupňa (celočíselná aritmetika):&lt;br /&gt;
&lt;br /&gt;
 t_x10 = adc_val × 5000 / 1024&lt;br /&gt;
&lt;br /&gt;
Pozor na pretečenie — hodnota 1023 × 5000 = 5 115 000, čo sa nezmestí do 16-bitového typu (max 65 535). Preto je nutné pretypovanie na &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint16_t t_x10 = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
uint8_t  cele     = t_x10 / 10;    // celá časť&lt;br /&gt;
uint8_t  desatiny = t_x10 % 10;    // desatinná časť&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program najprv inicializuje UART (pre ladenie cez &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;), LCD displej a ADC prevodník. &lt;br /&gt;
V hlavnej slučke periodicky číta hodnotu z ADC0, prepočíta ju na teplotu a zobrazí na displej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
&lt;br /&gt;
    lcd_init();&lt;br /&gt;
    lcd_bklt(1);&lt;br /&gt;
    lcd_command(0x0C);&lt;br /&gt;
&lt;br /&gt;
    adc_init();&lt;br /&gt;
&lt;br /&gt;
    char riadok[17];&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        uint16_t adc_val = adc_read(0);&lt;br /&gt;
        uint16_t t_x10   = (uint32_t)adc_val * 5000 / 1024;&lt;br /&gt;
        uint8_t  cele     = t_x10 / 10;&lt;br /&gt;
        uint8_t  desatiny = t_x10 % 10;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;ADC=%4u  T=%2u.%1u C\r\n&amp;quot;, adc_val, cele, desatiny);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(1, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Snimac teploty &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        sprintf(riadok, &amp;quot; T = %2u.%1u oC    &amp;quot;, cele, desatiny);&lt;br /&gt;
        lcd_setCursor(2, 0);&lt;br /&gt;
        lcd_puts(riadok);&lt;br /&gt;
&lt;br /&gt;
        lcd_setCursor(3, 0);&lt;br /&gt;
        lcd_puts(&amp;quot; Meno Priezvisko &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        _delay_ms(100);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Program fungoval na prvý pokus. Na videu je vidieť aktuálnu teplotu na displeji, ktorá reaguje na dotyk prsta (zahriatie).&lt;br /&gt;
&lt;br /&gt;
[[Súbor:MIPS2026-LM35DZ-video.gif|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:AVR]]&lt;br /&gt;
[[Kategória:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19358</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19358"/>
		<updated>2026-06-07T12:59:03Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vasas, Mihály Bertalan: [[Ultrazvukový radar so senzorom Ping)))]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;  Bukhtiiarov, Egor: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
 &amp;lt;li&amp;gt;  Čornyj, Gordij: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
 &amp;lt;li&amp;gt;  Domchuk, Dmytro: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
 &amp;lt;li&amp;gt;  Dzivjaková, Broňa: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Igaz, Samuel: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Nevzorova, Sofia: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Vríčan, Dávid: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19356</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19356"/>
		<updated>2026-06-07T12:54:34Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vasas, Mihály Bertalan: [[Ultrazvukový radar so senzorom Ping)))]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;  Bukhtiiarov, Egor: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
 &amp;lt;li&amp;gt;  Čornyj, Gordij: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
 &amp;lt;li&amp;gt;  Domchuk, Dmytro: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
 &amp;lt;li&amp;gt;  Dzivjaková, Broňa: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Igaz, Samuel: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
 &amp;lt;li&amp;gt; Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Nevzorova, Sofia: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
 &amp;lt;li&amp;gt; (*) Vríčan, Dávid: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19355</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19355"/>
		<updated>2026-06-07T12:50:44Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Vasas, Mihály Bertalan: [[Ultrazvukový radar so senzorom Ping)))]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19354</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19354"/>
		<updated>2026-06-07T12:47:25Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Buryk, Yaroslav: [[Digitálny potenciometer]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19353</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19353"/>
		<updated>2026-06-07T12:46:15Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dudášová, Mia: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Federmayer, Werner: [[Ultrazvukový radar s HC-SR04]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kesckés, Marek: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Rostupytskyi, Kristian: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Svystak, Dariia: [[Implementácia funkcie map()]] &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabo, Oliver: [[Generátor tónov]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Pohybliv%C3%BD_text&amp;diff=19340</id>
		<title>Pohyblivý text</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Pohybliv%C3%BD_text&amp;diff=19340"/>
		<updated>2026-06-07T09:58:09Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Dariia Dordiai&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Cieľom projektu je zobraziť text na LCD displeji EA-DOGM163, ktorý je pripojený k vývojovej doske ACROB s mikrokontrolérom ATmega328P. Text je možné posúvať vľavo a vpravo po riadku displeja pomocou potenciometra. Poloha potenciometra je snímaná analógovo-digitálnym prevodníkom (ADC) a prepočítaná na pozíciu kurzora na displeji. Program umožňuje zobraziť ľubovoľný text.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
&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;
Systém sa skladá z dvoch hlavných častí: vývojovej dosky ACROB s mikrokontrolérom ATmega328P a rozširujúceho modulu s LCD displejom EA-DOGM163. Externe je pripojená ovládacia krabička s potenciometrom, ktorá je k doske prepojená páskowym káblom. Otočením potenciometra sa mení napätie na analógovom vstupe, ktoré mikrokontrolér prevedie na pozíciu textu a zobrazí ho na displeji.&lt;br /&gt;
[[Obrázok:photo_2026-06-06_19-41-34.jpg|400px|thumb|center|Zapojenie vývojovej dosky ACROB s LCD modulom a potenciometrom.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Použité komponenty===&lt;br /&gt;
Vývojová doska ACROB — doska postavená okolo mikrokontroléra ATmega328P.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
LCD modul EA-DOGM163 — rozširujúci modul pre dosku ACROB s displejom 3×16 znakov, oranžovým podsvietením, troma tlačidlami a jednou LED diódou. &lt;br /&gt;
&lt;br /&gt;
[[Obrázok:LCD_AppMod.jpg|400px|thumb|center|LCD modul EA-DOGM163.]]&lt;br /&gt;
&lt;br /&gt;
Potenciometer — externý otočný potenciometer umiestnený v krabičke so stupnicou 0–10. Slúži ako vstupné zariadenie pre nastavenie polohy textu. Prepojený s doskou páskowym káblom.&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program je napísaný v jazyku C pre mikrokontrolér ATmega328P. Po inicializácii UART, LCD displeja a ADC vstupuje program do nekonečnej slučky.&lt;br /&gt;
V každom cykle sa načíta hodnota z potenciometra. Aby sa eliminoval šum, meranie sa opakuje päťkrát s prestávkou 5 ms a výsledok sa spriemeruje. Ak je výsledná hodnota väčšia ako 1000, automaticky sa zaokrúhli na 1023 — táto mŕtva zóna zabraňuje chveniu textu pri krajnej polohe potenciometra.&lt;br /&gt;
Hodnota ADC sa prepočíta na pozíciu kurzora v rozsahu 0–10 podľa vzorca:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pos = ((1023 - val) × MAX_COL) / 1023&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text sa prepíše na displej len vtedy, keď sa pozícia zmení oproti predchádzajúcemu cyklu. Tým sa predchádza zbytočnému blikaniu displeja. Riadok sa najprv vymaže funkciou lcd_clearline(), následne sa nastaví kurzor na novú pozíciu a vypíše sa text pomocou lcd_puts().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;main.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
#define TEXT &amp;quot;DARIIA&amp;quot;   // zobrazovaný text&lt;br /&gt;
#define TEXT_LEN 6      // dĺžka textu&lt;br /&gt;
#define MAX_COL 10      // maximálna pozícia kurzora&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();        // inicializácia UART&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
    lcd_init();         // inicializácia LCD displeja&lt;br /&gt;
    lcd_bklt(1);        // zapnutie podsvietenia&lt;br /&gt;
    adc_init();         // inicializácia ADC&lt;br /&gt;
    int last_pos = -1;  // posledná pozícia textu&lt;br /&gt;
&lt;br /&gt;
    while(1)&lt;br /&gt;
    {&lt;br /&gt;
        // načítanie hodnoty z potenciometra (priemer 5 meraní)&lt;br /&gt;
        unsigned int val = 0;&lt;br /&gt;
        for (uint8_t i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
            val += adc_read(4);  // čítanie ADC kanála 4&lt;br /&gt;
            _delay_ms(5);&lt;br /&gt;
        }&lt;br /&gt;
        val /= 5;  // výpočet priemeru&lt;br /&gt;
&lt;br /&gt;
        // mŕtva zóna — stabilizácia pri krajnej polohe&lt;br /&gt;
        if (val &amp;gt; 1000) val = 1023;&lt;br /&gt;
&lt;br /&gt;
        // prepočet hodnoty ADC na pozíciu kurzora (0 - 10)&lt;br /&gt;
        int pos = ((1023 - val) * MAX_COL) / 1023;&lt;br /&gt;
&lt;br /&gt;
        // aktualizácia displeja len pri zmene pozície&lt;br /&gt;
        if (pos != last_pos)&lt;br /&gt;
        {&lt;br /&gt;
            lcd_clearline(1);   // vymazanie riadku&lt;br /&gt;
            _delay_ms(2);       // krátka pauza po vymazaní&lt;br /&gt;
            lcd_setCursor(1, pos); // nastavenie kurzora na novú pozíciu&lt;br /&gt;
            lcd_puts(TEXT);     // vypísanie textu&lt;br /&gt;
            last_pos = pos;     // uloženie aktuálnej pozície&lt;br /&gt;
        }&lt;br /&gt;
        _delay_ms(150);  // pauza pred ďalším cyklom&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define BAUD       9600&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/setbaud.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void uart_init( void ) &lt;br /&gt;
{&lt;br /&gt;
    UBRR0H = UBRRH_VALUE;&lt;br /&gt;
    UBRR0L = UBRRL_VALUE;&lt;br /&gt;
&lt;br /&gt;
#if USE_2X&lt;br /&gt;
    UCSR0A |= _BV(U2X0);&lt;br /&gt;
#else&lt;br /&gt;
    UCSR0A &amp;amp;= ~(_BV(U2X0));&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
    UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); &lt;br /&gt;
    UCSR0B = _BV(RXEN0) | _BV(TXEN0);   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_putc(char c) &lt;br /&gt;
{&lt;br /&gt;
   if (c == &#039;\n&#039;) &lt;br /&gt;
    {&lt;br /&gt;
       uart_putc(&#039;\r&#039;);&lt;br /&gt;
    }&lt;br /&gt;
   loop_until_bit_is_set(UCSR0A, UDRE0);  &lt;br /&gt;
   UDR0 = c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char *s)&lt;br /&gt;
{&lt;br /&gt;
 int i=0;&lt;br /&gt;
 for(i=0;s[i]!=&#039;\0&#039;;i++)&lt;br /&gt;
 uart_putc(s[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char uart_getc(void) {&lt;br /&gt;
    loop_until_bit_is_set(UCSR0A, RXC0); &lt;br /&gt;
    return UDR0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef UART_H_&lt;br /&gt;
#define UART_H_&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_init( void );&lt;br /&gt;
     &lt;br /&gt;
void uart_putc( char c );&lt;br /&gt;
void uart_puts( const char *s );&lt;br /&gt;
&lt;br /&gt;
char uart_getc( void );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#endif /* UART_H_ */&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;lcd.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* Primitívne funkcie, nepredpokladá sa ich využitie užívateľom */&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapíše jeden bajt po SPI zbernici do zariadenia */&lt;br /&gt;
void lcd_write( char data )&lt;br /&gt;
{&lt;br /&gt;
    signed char index = 8;&lt;br /&gt;
    char c_data;&lt;br /&gt;
&lt;br /&gt;
    DISPLAY_CSB_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_CSB_PIN);  // Chip-Select do log.0&lt;br /&gt;
    c_data = data;&lt;br /&gt;
&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        _delay_us(6);&lt;br /&gt;
        if ( c_data &amp;amp; 0x80 )         // najvyšší bit zamaskujeme&lt;br /&gt;
            PORTB |= (1&amp;lt;&amp;lt;3);         // a pošleme ho na zbernicu&lt;br /&gt;
        else&lt;br /&gt;
            PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;3);        // cez vodič MOSI&lt;br /&gt;
        _delay_us(5);                // vygenerujeme jeden hodinový pulz&lt;br /&gt;
        PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;5);            // na vývod CLK&lt;br /&gt;
        _delay_us(6);&lt;br /&gt;
        PORTB |= (1&amp;lt;&amp;lt;5);&lt;br /&gt;
&lt;br /&gt;
        c_data = c_data &amp;lt;&amp;lt; 1;        // na najvyššie miesto posunieme ďalší bit&lt;br /&gt;
        index--;&lt;br /&gt;
&lt;br /&gt;
    } while (index &amp;gt; 0);             // opakujeme 8-krát&lt;br /&gt;
&lt;br /&gt;
    _delay_ms( 2 );&lt;br /&gt;
    DISPLAY_CSB_PORT |= (1&amp;lt;&amp;lt;DISPLAY_CSB_PIN);   // zdvihneme /CS do log.1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapíše jeden bajt do riadiaceho (Control) registra */&lt;br /&gt;
void lcd_command( char instruction )&lt;br /&gt;
{&lt;br /&gt;
    DISPLAY_RS_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_RS_PIN);  // RS = 0 → príkaz&lt;br /&gt;
    _delay_us( 1 );&lt;br /&gt;
    lcd_write( instruction );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapíše jeden bajt do dátového (Data) registra */&lt;br /&gt;
void lcd_data( char data )&lt;br /&gt;
{&lt;br /&gt;
    DISPLAY_RS_PORT |= 1&amp;lt;&amp;lt;DISPLAY_RS_PIN;  // RS = 1 → dáta&lt;br /&gt;
    _delay_us( 7 );&lt;br /&gt;
    lcd_write( data );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Užívateľské funkcie */&lt;br /&gt;
&lt;br /&gt;
/* Inicializácia displeja podľa datasheetu pre radič ST7036 */&lt;br /&gt;
void lcd_init(void)&lt;br /&gt;
{&lt;br /&gt;
    DDRB |= (1&amp;lt;&amp;lt;PB3) | (1&amp;lt;&amp;lt;PB5);      // MOSI + SCK ako výstupy&lt;br /&gt;
    DISPLAY_RS_DDR  |= 1&amp;lt;&amp;lt;DISPLAY_RS_PIN;    // RS ako výstup&lt;br /&gt;
    DISPLAY_CSB_DDR |= 1&amp;lt;&amp;lt;DISPLAY_CSB_PIN;   // CSB ako výstup&lt;br /&gt;
    DISPLAY_BKLT_DDR|= 1&amp;lt;&amp;lt;DISPLAY_BKLT_PIN;  // podsvietenie ako výstup&lt;br /&gt;
&lt;br /&gt;
    PORTB |= (1&amp;lt;&amp;lt;PB5);                        // CLK do log.1&lt;br /&gt;
    DISPLAY_CSB_PORT |= (1&amp;lt;&amp;lt;DISPLAY_CSB_PIN); // CSB do log.1&lt;br /&gt;
    DISPLAY_RS_PORT  &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_RS_PIN); // RS do log.0&lt;br /&gt;
&lt;br /&gt;
    _delay_ms(50);       // čakáme viac ako 40ms na ustálenie napájacieho napätia&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x39 ); // nastavenie funkcie: 8-bit, 2 riadky, tabuľka inštrukcií 1&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x1d ); // nastavenie Bias: BS 1/5, 3-riadkový displej&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x50 ); // Booster vypnutý, nastavenie kontrastu C5, C4&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x6c ); // nastavenie napäťového sledovača a zosilnenia&lt;br /&gt;
    _delay_ms( 500 );    // čakáme viac ako 200ms&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x7c ); // nastavenie kontrastu C3, C2, C1&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x38 ); // zapnutie displeja&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x0c ); // displej zapnutý, kurzor vypnutý&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x01 ); // vymazanie displeja, kurzor na začiatok&lt;br /&gt;
    _delay_ms(400);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x06 ); // automatický posun kurzora doprava&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zobrazí na pozícii kurzora jeden znak */&lt;br /&gt;
void lcd_putc( char znak )&lt;br /&gt;
{&lt;br /&gt;
    lcd_data(znak);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia vypíše reťazec znakov na displej */&lt;br /&gt;
void lcd_puts(char *string)&lt;br /&gt;
{&lt;br /&gt;
    while (*string) {&lt;br /&gt;
        lcd_data(*string);  // posiela znaky jeden po druhom&lt;br /&gt;
        string++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia nastaví kurzor na pozíciu riadok, stĺpec */&lt;br /&gt;
void lcd_setCursor(char row, char col)&lt;br /&gt;
{&lt;br /&gt;
    // adresy riadkov pre 3-riadkový displej 16x3&lt;br /&gt;
    const char row_offsets[] = {0x00, 0x10, 0x20};&lt;br /&gt;
    lcd_command(0x80 | (row_offsets[row] + col));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia vymaže jeden riadok displeja */&lt;br /&gt;
void lcd_clearline( unsigned char riadok )&lt;br /&gt;
{&lt;br /&gt;
    unsigned char index;&lt;br /&gt;
    lcd_setCursor( riadok, 0 );&lt;br /&gt;
    for (index=1; index&amp;lt;20; index++) lcd_data( &#039; &#039; );  // vypĺňame medzerami&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia vymaže celý displej */&lt;br /&gt;
void lcd_clear( void )&lt;br /&gt;
{&lt;br /&gt;
    lcd_clearline( 0 );  // vymazanie 1. riadku&lt;br /&gt;
    lcd_clearline( 1 );  // vymazanie 2. riadku&lt;br /&gt;
    lcd_clearline( 2 );  // vymazanie 3. riadku&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapne alebo vypne podsvietenie displeja */&lt;br /&gt;
void lcd_bklt( char OnOff)&lt;br /&gt;
{&lt;br /&gt;
    if (OnOff)&lt;br /&gt;
        DISPLAY_BKLT_high;  // podsvietenie zapnuté&lt;br /&gt;
    else&lt;br /&gt;
        DISPLAY_BKLT_low;   // podsvietenie vypnuté&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia uloží užívateľom definovaný znak do CG RAM na adresu */&lt;br /&gt;
void def_znak(unsigned char *ZnakArray, unsigned char Address)&lt;br /&gt;
{&lt;br /&gt;
  lcd_command(0x40|(Address&amp;lt;&amp;lt;3));  //nastavenie adresy znaku v CGRAM&lt;br /&gt;
  for(unsigned char i = 0;i&amp;lt;8; i++) lcd_data( *(ZnakArray + i));&lt;br /&gt;
  lcd_command(0x80);               // zmena na DD RAM&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;lcd.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef LCD_H_&lt;br /&gt;
#define LCD_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdlib.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;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define CHARACTER_BUFFER_BASE_ADDRESS 0x80&lt;br /&gt;
#define CHARACTERS_PER_ROW 16&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_RS_PORT PORTD&lt;br /&gt;
#define DISPLAY_RS_DDR DDRD&lt;br /&gt;
#define DISPLAY_RS_PIN 2&lt;br /&gt;
#define DISPLAY_CSB_PORT PORTD&lt;br /&gt;
#define DISPLAY_CSB_DDR DDRD&lt;br /&gt;
#define DISPLAY_CSB_PIN 4&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_BKLT_PORT PORTD&lt;br /&gt;
#define DISPLAY_BKLT_DDR DDRD&lt;br /&gt;
#define DISPLAY_BKLT_PIN 6&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_RS_low   (DISPLAY_RS_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_RS_PIN))&lt;br /&gt;
#define DISPLAY_RS_high  (DISPLAY_RS_PORT |= (1&amp;lt;&amp;lt;DISPLAY_RS_PIN))&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_CSB_low  (DISPLAY_CSB_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_CSB_PIN))&lt;br /&gt;
#define DISPLAY_CSB_high (DISPLAY_CSB_PORT |= (1&amp;lt;&amp;lt;DISPLAY_CSB_PIN))&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_BKLT_low   (DISPLAY_BKLT_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_BKLT_PIN))&lt;br /&gt;
#define DISPLAY_BKLT_high  (DISPLAY_BKLT_PORT |= (1&amp;lt;&amp;lt;DISPLAY_BKLT_PIN))&lt;br /&gt;
&lt;br /&gt;
#define INSTRUCTION_CLEAR_DISPLAY        0b00000001&lt;br /&gt;
#define INSTRUCTION_FUNCTION_SET_INIT_0    0b00110011&lt;br /&gt;
#define INSTRUCTION_FUNCTION_SET_INIT_1    0b00110010&lt;br /&gt;
#define INSTRUCTION_FUNCTION_SET_INIT_2    0b00101001&lt;br /&gt;
#define INSTRUCTION_INSTRUCTION_SET_0      0b00101000&lt;br /&gt;
#define INSTRUCTION_INSTRUCTION_SET_1     0b00101001&lt;br /&gt;
#define INSTRUCTION_BIAS_SET        0b00010101&lt;br /&gt;
#define INSTRUCTION_POWER_CONTROL       0b01010011&lt;br /&gt;
#define INSTRUCTION_FOLLOWER_CONTROL    0b01101100&lt;br /&gt;
#define INSTRUCTION_CONTRAST_SET      0b01111111&lt;br /&gt;
#define INSTRUCTION_DISPLAY_ON        0b00001100&lt;br /&gt;
#define INSTRUCTION_ENTRY_MODE         0b00000110&lt;br /&gt;
&lt;br /&gt;
void lcd_init(void);&lt;br /&gt;
void lcd_write( char data );&lt;br /&gt;
void lcd_data( char data );     &lt;br /&gt;
void lcd_command( char instruction );&lt;br /&gt;
&lt;br /&gt;
void lcd_putc( char znak );&lt;br /&gt;
void lcd_puts( char *string );&lt;br /&gt;
&lt;br /&gt;
void lcd_clear( void );&lt;br /&gt;
void lcd_clearline( unsigned char zeile );&lt;br /&gt;
&lt;br /&gt;
void lcd_setCursor(char row, char col);&lt;br /&gt;
void lcd_bklt( char OnOff);&lt;br /&gt;
&lt;br /&gt;
void def_znak(unsigned char *ZnakArray, unsigned char Address);&lt;br /&gt;
&lt;br /&gt;
#endif /* LCD_H_ */&lt;br /&gt;
 &amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;adc.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void)&lt;br /&gt;
{&lt;br /&gt;
ADMUX = (1&amp;lt;&amp;lt;REFS0); &lt;br /&gt;
ADCSRA = (1&amp;lt;&amp;lt;ADEN)|(1&amp;lt;&amp;lt;ADPS2)|(1&amp;lt;&amp;lt;ADPS1)|(1&amp;lt;&amp;lt;ADPS0); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char channel)&lt;br /&gt;
{&lt;br /&gt;
channel &amp;amp;= 0x0F;&lt;br /&gt;
ADMUX = (ADMUX &amp;amp; 0xF0)|channel;&lt;br /&gt;
ADCSRA |= (1&amp;lt;&amp;lt;ADSC); &lt;br /&gt;
while(ADCSRA &amp;amp; (1&amp;lt;&amp;lt;ADSC))&lt;br /&gt;
{ /* wait */ } &lt;br /&gt;
return (ADC);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;adc.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                   &lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:Dordiai_Dariia_projekt.zip|Dordiai_Dariia_projekt.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Funkčnosť zariadenia bola overená manuálnym testovaním. Po zapnutí napájania sa na LCD displeji zobrazí text na predvolenej pozícii. Otočením potenciometra vľavo sa text posúva smerom doľava, otočením vpravo sa posúva doprava. Text sa aktualizuje plynule a bez blikania.&lt;br /&gt;
Overenie prebehlo úspešne — text sa zobrazuje správne na všetkých pozíciách v rozsahu 0–10 a zariadenie reaguje na zmenu polohy potenciometra bez oneskorenia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;https://youtu.be/8OyxNfwQ5Wk&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobila inak ==&lt;br /&gt;
&lt;br /&gt;
Do budúcna by som implementovala plynulejší pohyb textu pomocou prerušení namiesto oneskorení _delay_ms(). Použitie časovača s prerušením by umožnilo presnejšie časovanie a mikrokontrolér by mohol počas čakania vykonávať iné úlohy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Pohybliv%C3%BD_text&amp;diff=19339</id>
		<title>Pohyblivý text</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Pohybliv%C3%BD_text&amp;diff=19339"/>
		<updated>2026-06-07T09:57:52Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2026 - &amp;#039;&amp;#039;&amp;#039;Dariia Dordiai&amp;#039;&amp;#039;&amp;#039;   == Zadanie ==  Cieľom projektu je zobraziť text na LCD displeji EA-DOGM163, ktorý je pripojený k vývojovej doske ACROB s mikrokontrolérom ATmega328P. Text je možné posúvať vľavo a vpravo po riadku displeja pomocou potenciometra. Poloha potenciometra je snímaná analógovo-digitálnym prevodníkom (ADC) a prepočítaná na pozíciu kurzora na displeji. Program umožňuje zobraziť ľubo…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Dariia Dordiai&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Cieľom projektu je zobraziť text na LCD displeji EA-DOGM163, ktorý je pripojený k vývojovej doske ACROB s mikrokontrolérom ATmega328P. Text je možné posúvať vľavo a vpravo po riadku displeja pomocou potenciometra. Poloha potenciometra je snímaná analógovo-digitálnym prevodníkom (ADC) a prepočítaná na pozíciu kurzora na displeji. Program umožňuje zobraziť ľubovoľný text.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
* [http://www.humanbenchmark.com/tests/reactiontime/index.php Vyskúšajte si zmerať reakciu on-line]&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;
Systém sa skladá z dvoch hlavných častí: vývojovej dosky ACROB s mikrokontrolérom ATmega328P a rozširujúceho modulu s LCD displejom EA-DOGM163. Externe je pripojená ovládacia krabička s potenciometrom, ktorá je k doske prepojená páskowym káblom. Otočením potenciometra sa mení napätie na analógovom vstupe, ktoré mikrokontrolér prevedie na pozíciu textu a zobrazí ho na displeji.&lt;br /&gt;
[[Obrázok:photo_2026-06-06_19-41-34.jpg|400px|thumb|center|Zapojenie vývojovej dosky ACROB s LCD modulom a potenciometrom.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Použité komponenty===&lt;br /&gt;
Vývojová doska ACROB — doska postavená okolo mikrokontroléra ATmega328P.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
LCD modul EA-DOGM163 — rozširujúci modul pre dosku ACROB s displejom 3×16 znakov, oranžovým podsvietením, troma tlačidlami a jednou LED diódou. &lt;br /&gt;
&lt;br /&gt;
[[Obrázok:LCD_AppMod.jpg|400px|thumb|center|LCD modul EA-DOGM163.]]&lt;br /&gt;
&lt;br /&gt;
Potenciometer — externý otočný potenciometer umiestnený v krabičke so stupnicou 0–10. Slúži ako vstupné zariadenie pre nastavenie polohy textu. Prepojený s doskou páskowym káblom.&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Program je napísaný v jazyku C pre mikrokontrolér ATmega328P. Po inicializácii UART, LCD displeja a ADC vstupuje program do nekonečnej slučky.&lt;br /&gt;
V každom cykle sa načíta hodnota z potenciometra. Aby sa eliminoval šum, meranie sa opakuje päťkrát s prestávkou 5 ms a výsledok sa spriemeruje. Ak je výsledná hodnota väčšia ako 1000, automaticky sa zaokrúhli na 1023 — táto mŕtva zóna zabraňuje chveniu textu pri krajnej polohe potenciometra.&lt;br /&gt;
Hodnota ADC sa prepočíta na pozíciu kurzora v rozsahu 0–10 podľa vzorca:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pos = ((1023 - val) × MAX_COL) / 1023&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text sa prepíše na displej len vtedy, keď sa pozícia zmení oproti predchádzajúcemu cyklu. Tým sa predchádza zbytočnému blikaniu displeja. Riadok sa najprv vymaže funkciou lcd_clearline(), následne sa nastaví kurzor na novú pozíciu a vypíše sa text pomocou lcd_puts().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;main.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
#define TEXT &amp;quot;DARIIA&amp;quot;   // zobrazovaný text&lt;br /&gt;
#define TEXT_LEN 6      // dĺžka textu&lt;br /&gt;
#define MAX_COL 10      // maximálna pozícia kurzora&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();        // inicializácia UART&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
    lcd_init();         // inicializácia LCD displeja&lt;br /&gt;
    lcd_bklt(1);        // zapnutie podsvietenia&lt;br /&gt;
    adc_init();         // inicializácia ADC&lt;br /&gt;
    int last_pos = -1;  // posledná pozícia textu&lt;br /&gt;
&lt;br /&gt;
    while(1)&lt;br /&gt;
    {&lt;br /&gt;
        // načítanie hodnoty z potenciometra (priemer 5 meraní)&lt;br /&gt;
        unsigned int val = 0;&lt;br /&gt;
        for (uint8_t i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
            val += adc_read(4);  // čítanie ADC kanála 4&lt;br /&gt;
            _delay_ms(5);&lt;br /&gt;
        }&lt;br /&gt;
        val /= 5;  // výpočet priemeru&lt;br /&gt;
&lt;br /&gt;
        // mŕtva zóna — stabilizácia pri krajnej polohe&lt;br /&gt;
        if (val &amp;gt; 1000) val = 1023;&lt;br /&gt;
&lt;br /&gt;
        // prepočet hodnoty ADC na pozíciu kurzora (0 - 10)&lt;br /&gt;
        int pos = ((1023 - val) * MAX_COL) / 1023;&lt;br /&gt;
&lt;br /&gt;
        // aktualizácia displeja len pri zmene pozície&lt;br /&gt;
        if (pos != last_pos)&lt;br /&gt;
        {&lt;br /&gt;
            lcd_clearline(1);   // vymazanie riadku&lt;br /&gt;
            _delay_ms(2);       // krátka pauza po vymazaní&lt;br /&gt;
            lcd_setCursor(1, pos); // nastavenie kurzora na novú pozíciu&lt;br /&gt;
            lcd_puts(TEXT);     // vypísanie textu&lt;br /&gt;
            last_pos = pos;     // uloženie aktuálnej pozície&lt;br /&gt;
        }&lt;br /&gt;
        _delay_ms(150);  // pauza pred ďalším cyklom&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define BAUD       9600&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/setbaud.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void uart_init( void ) &lt;br /&gt;
{&lt;br /&gt;
    UBRR0H = UBRRH_VALUE;&lt;br /&gt;
    UBRR0L = UBRRL_VALUE;&lt;br /&gt;
&lt;br /&gt;
#if USE_2X&lt;br /&gt;
    UCSR0A |= _BV(U2X0);&lt;br /&gt;
#else&lt;br /&gt;
    UCSR0A &amp;amp;= ~(_BV(U2X0));&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
    UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); &lt;br /&gt;
    UCSR0B = _BV(RXEN0) | _BV(TXEN0);   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_putc(char c) &lt;br /&gt;
{&lt;br /&gt;
   if (c == &#039;\n&#039;) &lt;br /&gt;
    {&lt;br /&gt;
       uart_putc(&#039;\r&#039;);&lt;br /&gt;
    }&lt;br /&gt;
   loop_until_bit_is_set(UCSR0A, UDRE0);  &lt;br /&gt;
   UDR0 = c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char *s)&lt;br /&gt;
{&lt;br /&gt;
 int i=0;&lt;br /&gt;
 for(i=0;s[i]!=&#039;\0&#039;;i++)&lt;br /&gt;
 uart_putc(s[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char uart_getc(void) {&lt;br /&gt;
    loop_until_bit_is_set(UCSR0A, RXC0); &lt;br /&gt;
    return UDR0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef UART_H_&lt;br /&gt;
#define UART_H_&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void uart_init( void );&lt;br /&gt;
     &lt;br /&gt;
void uart_putc( char c );&lt;br /&gt;
void uart_puts( const char *s );&lt;br /&gt;
&lt;br /&gt;
char uart_getc( void );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#endif /* UART_H_ */&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;lcd.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* Primitívne funkcie, nepredpokladá sa ich využitie užívateľom */&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapíše jeden bajt po SPI zbernici do zariadenia */&lt;br /&gt;
void lcd_write( char data )&lt;br /&gt;
{&lt;br /&gt;
    signed char index = 8;&lt;br /&gt;
    char c_data;&lt;br /&gt;
&lt;br /&gt;
    DISPLAY_CSB_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_CSB_PIN);  // Chip-Select do log.0&lt;br /&gt;
    c_data = data;&lt;br /&gt;
&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        _delay_us(6);&lt;br /&gt;
        if ( c_data &amp;amp; 0x80 )         // najvyšší bit zamaskujeme&lt;br /&gt;
            PORTB |= (1&amp;lt;&amp;lt;3);         // a pošleme ho na zbernicu&lt;br /&gt;
        else&lt;br /&gt;
            PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;3);        // cez vodič MOSI&lt;br /&gt;
        _delay_us(5);                // vygenerujeme jeden hodinový pulz&lt;br /&gt;
        PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;5);            // na vývod CLK&lt;br /&gt;
        _delay_us(6);&lt;br /&gt;
        PORTB |= (1&amp;lt;&amp;lt;5);&lt;br /&gt;
&lt;br /&gt;
        c_data = c_data &amp;lt;&amp;lt; 1;        // na najvyššie miesto posunieme ďalší bit&lt;br /&gt;
        index--;&lt;br /&gt;
&lt;br /&gt;
    } while (index &amp;gt; 0);             // opakujeme 8-krát&lt;br /&gt;
&lt;br /&gt;
    _delay_ms( 2 );&lt;br /&gt;
    DISPLAY_CSB_PORT |= (1&amp;lt;&amp;lt;DISPLAY_CSB_PIN);   // zdvihneme /CS do log.1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapíše jeden bajt do riadiaceho (Control) registra */&lt;br /&gt;
void lcd_command( char instruction )&lt;br /&gt;
{&lt;br /&gt;
    DISPLAY_RS_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_RS_PIN);  // RS = 0 → príkaz&lt;br /&gt;
    _delay_us( 1 );&lt;br /&gt;
    lcd_write( instruction );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapíše jeden bajt do dátového (Data) registra */&lt;br /&gt;
void lcd_data( char data )&lt;br /&gt;
{&lt;br /&gt;
    DISPLAY_RS_PORT |= 1&amp;lt;&amp;lt;DISPLAY_RS_PIN;  // RS = 1 → dáta&lt;br /&gt;
    _delay_us( 7 );&lt;br /&gt;
    lcd_write( data );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Užívateľské funkcie */&lt;br /&gt;
&lt;br /&gt;
/* Inicializácia displeja podľa datasheetu pre radič ST7036 */&lt;br /&gt;
void lcd_init(void)&lt;br /&gt;
{&lt;br /&gt;
    DDRB |= (1&amp;lt;&amp;lt;PB3) | (1&amp;lt;&amp;lt;PB5);      // MOSI + SCK ako výstupy&lt;br /&gt;
    DISPLAY_RS_DDR  |= 1&amp;lt;&amp;lt;DISPLAY_RS_PIN;    // RS ako výstup&lt;br /&gt;
    DISPLAY_CSB_DDR |= 1&amp;lt;&amp;lt;DISPLAY_CSB_PIN;   // CSB ako výstup&lt;br /&gt;
    DISPLAY_BKLT_DDR|= 1&amp;lt;&amp;lt;DISPLAY_BKLT_PIN;  // podsvietenie ako výstup&lt;br /&gt;
&lt;br /&gt;
    PORTB |= (1&amp;lt;&amp;lt;PB5);                        // CLK do log.1&lt;br /&gt;
    DISPLAY_CSB_PORT |= (1&amp;lt;&amp;lt;DISPLAY_CSB_PIN); // CSB do log.1&lt;br /&gt;
    DISPLAY_RS_PORT  &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_RS_PIN); // RS do log.0&lt;br /&gt;
&lt;br /&gt;
    _delay_ms(50);       // čakáme viac ako 40ms na ustálenie napájacieho napätia&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x39 ); // nastavenie funkcie: 8-bit, 2 riadky, tabuľka inštrukcií 1&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x1d ); // nastavenie Bias: BS 1/5, 3-riadkový displej&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x50 ); // Booster vypnutý, nastavenie kontrastu C5, C4&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x6c ); // nastavenie napäťového sledovača a zosilnenia&lt;br /&gt;
    _delay_ms( 500 );    // čakáme viac ako 200ms&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x7c ); // nastavenie kontrastu C3, C2, C1&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x38 ); // zapnutie displeja&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x0c ); // displej zapnutý, kurzor vypnutý&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x01 ); // vymazanie displeja, kurzor na začiatok&lt;br /&gt;
    _delay_ms(400);&lt;br /&gt;
&lt;br /&gt;
    lcd_command( 0x06 ); // automatický posun kurzora doprava&lt;br /&gt;
    _delay_us(50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zobrazí na pozícii kurzora jeden znak */&lt;br /&gt;
void lcd_putc( char znak )&lt;br /&gt;
{&lt;br /&gt;
    lcd_data(znak);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia vypíše reťazec znakov na displej */&lt;br /&gt;
void lcd_puts(char *string)&lt;br /&gt;
{&lt;br /&gt;
    while (*string) {&lt;br /&gt;
        lcd_data(*string);  // posiela znaky jeden po druhom&lt;br /&gt;
        string++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia nastaví kurzor na pozíciu riadok, stĺpec */&lt;br /&gt;
void lcd_setCursor(char row, char col)&lt;br /&gt;
{&lt;br /&gt;
    // adresy riadkov pre 3-riadkový displej 16x3&lt;br /&gt;
    const char row_offsets[] = {0x00, 0x10, 0x20};&lt;br /&gt;
    lcd_command(0x80 | (row_offsets[row] + col));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia vymaže jeden riadok displeja */&lt;br /&gt;
void lcd_clearline( unsigned char riadok )&lt;br /&gt;
{&lt;br /&gt;
    unsigned char index;&lt;br /&gt;
    lcd_setCursor( riadok, 0 );&lt;br /&gt;
    for (index=1; index&amp;lt;20; index++) lcd_data( &#039; &#039; );  // vypĺňame medzerami&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia vymaže celý displej */&lt;br /&gt;
void lcd_clear( void )&lt;br /&gt;
{&lt;br /&gt;
    lcd_clearline( 0 );  // vymazanie 1. riadku&lt;br /&gt;
    lcd_clearline( 1 );  // vymazanie 2. riadku&lt;br /&gt;
    lcd_clearline( 2 );  // vymazanie 3. riadku&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia zapne alebo vypne podsvietenie displeja */&lt;br /&gt;
void lcd_bklt( char OnOff)&lt;br /&gt;
{&lt;br /&gt;
    if (OnOff)&lt;br /&gt;
        DISPLAY_BKLT_high;  // podsvietenie zapnuté&lt;br /&gt;
    else&lt;br /&gt;
        DISPLAY_BKLT_low;   // podsvietenie vypnuté&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Funkcia uloží užívateľom definovaný znak do CG RAM na adresu */&lt;br /&gt;
void def_znak(unsigned char *ZnakArray, unsigned char Address)&lt;br /&gt;
{&lt;br /&gt;
  lcd_command(0x40|(Address&amp;lt;&amp;lt;3));  //nastavenie adresy znaku v CGRAM&lt;br /&gt;
  for(unsigned char i = 0;i&amp;lt;8; i++) lcd_data( *(ZnakArray + i));&lt;br /&gt;
  lcd_command(0x80);               // zmena na DD RAM&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;lcd.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef LCD_H_&lt;br /&gt;
#define LCD_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdlib.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;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define CHARACTER_BUFFER_BASE_ADDRESS 0x80&lt;br /&gt;
#define CHARACTERS_PER_ROW 16&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_RS_PORT PORTD&lt;br /&gt;
#define DISPLAY_RS_DDR DDRD&lt;br /&gt;
#define DISPLAY_RS_PIN 2&lt;br /&gt;
#define DISPLAY_CSB_PORT PORTD&lt;br /&gt;
#define DISPLAY_CSB_DDR DDRD&lt;br /&gt;
#define DISPLAY_CSB_PIN 4&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_BKLT_PORT PORTD&lt;br /&gt;
#define DISPLAY_BKLT_DDR DDRD&lt;br /&gt;
#define DISPLAY_BKLT_PIN 6&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_RS_low   (DISPLAY_RS_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_RS_PIN))&lt;br /&gt;
#define DISPLAY_RS_high  (DISPLAY_RS_PORT |= (1&amp;lt;&amp;lt;DISPLAY_RS_PIN))&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_CSB_low  (DISPLAY_CSB_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_CSB_PIN))&lt;br /&gt;
#define DISPLAY_CSB_high (DISPLAY_CSB_PORT |= (1&amp;lt;&amp;lt;DISPLAY_CSB_PIN))&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_BKLT_low   (DISPLAY_BKLT_PORT &amp;amp;= ~(1&amp;lt;&amp;lt;DISPLAY_BKLT_PIN))&lt;br /&gt;
#define DISPLAY_BKLT_high  (DISPLAY_BKLT_PORT |= (1&amp;lt;&amp;lt;DISPLAY_BKLT_PIN))&lt;br /&gt;
&lt;br /&gt;
#define INSTRUCTION_CLEAR_DISPLAY        0b00000001&lt;br /&gt;
#define INSTRUCTION_FUNCTION_SET_INIT_0    0b00110011&lt;br /&gt;
#define INSTRUCTION_FUNCTION_SET_INIT_1    0b00110010&lt;br /&gt;
#define INSTRUCTION_FUNCTION_SET_INIT_2    0b00101001&lt;br /&gt;
#define INSTRUCTION_INSTRUCTION_SET_0      0b00101000&lt;br /&gt;
#define INSTRUCTION_INSTRUCTION_SET_1     0b00101001&lt;br /&gt;
#define INSTRUCTION_BIAS_SET        0b00010101&lt;br /&gt;
#define INSTRUCTION_POWER_CONTROL       0b01010011&lt;br /&gt;
#define INSTRUCTION_FOLLOWER_CONTROL    0b01101100&lt;br /&gt;
#define INSTRUCTION_CONTRAST_SET      0b01111111&lt;br /&gt;
#define INSTRUCTION_DISPLAY_ON        0b00001100&lt;br /&gt;
#define INSTRUCTION_ENTRY_MODE         0b00000110&lt;br /&gt;
&lt;br /&gt;
void lcd_init(void);&lt;br /&gt;
void lcd_write( char data );&lt;br /&gt;
void lcd_data( char data );     &lt;br /&gt;
void lcd_command( char instruction );&lt;br /&gt;
&lt;br /&gt;
void lcd_putc( char znak );&lt;br /&gt;
void lcd_puts( char *string );&lt;br /&gt;
&lt;br /&gt;
void lcd_clear( void );&lt;br /&gt;
void lcd_clearline( unsigned char zeile );&lt;br /&gt;
&lt;br /&gt;
void lcd_setCursor(char row, char col);&lt;br /&gt;
void lcd_bklt( char OnOff);&lt;br /&gt;
&lt;br /&gt;
void def_znak(unsigned char *ZnakArray, unsigned char Address);&lt;br /&gt;
&lt;br /&gt;
#endif /* LCD_H_ */&lt;br /&gt;
 &amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;adc.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void)&lt;br /&gt;
{&lt;br /&gt;
ADMUX = (1&amp;lt;&amp;lt;REFS0); &lt;br /&gt;
ADCSRA = (1&amp;lt;&amp;lt;ADEN)|(1&amp;lt;&amp;lt;ADPS2)|(1&amp;lt;&amp;lt;ADPS1)|(1&amp;lt;&amp;lt;ADPS0); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char channel)&lt;br /&gt;
{&lt;br /&gt;
channel &amp;amp;= 0x0F;&lt;br /&gt;
ADMUX = (ADMUX &amp;amp; 0xF0)|channel;&lt;br /&gt;
ADCSRA |= (1&amp;lt;&amp;lt;ADSC); &lt;br /&gt;
while(ADCSRA &amp;amp; (1&amp;lt;&amp;lt;ADSC))&lt;br /&gt;
{ /* wait */ } &lt;br /&gt;
return (ADC);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;adc.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                   &lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:Dordiai_Dariia_projekt.zip|Dordiai_Dariia_projekt.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Funkčnosť zariadenia bola overená manuálnym testovaním. Po zapnutí napájania sa na LCD displeji zobrazí text na predvolenej pozícii. Otočením potenciometra vľavo sa text posúva smerom doľava, otočením vpravo sa posúva doprava. Text sa aktualizuje plynule a bez blikania.&lt;br /&gt;
Overenie prebehlo úspešne — text sa zobrazuje správne na všetkých pozíciách v rozsahu 0–10 a zariadenie reaguje na zmenu polohy potenciometra bez oneskorenia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;https://youtu.be/8OyxNfwQ5Wk&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobila inak ==&lt;br /&gt;
&lt;br /&gt;
Do budúcna by som implementovala plynulejší pohyb textu pomocou prerušení namiesto oneskorení _delay_ms(). Použitie časovača s prerušením by umožnilo presnejšie časovanie a mikrokontrolér by mohol počas čakania vykonávať iné úlohy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Jednoduch%C3%BD_P_regul%C3%A1tor&amp;diff=19338</id>
		<title>Jednoduchý P regulátor</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Jednoduch%C3%BD_P_regul%C3%A1tor&amp;diff=19338"/>
		<updated>2026-06-07T09:57:33Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Obsah stránky nahradený textom „...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;...&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19337</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19337"/>
		<updated>2026-06-07T09:57:13Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Dordiai, Dariia: [[Pohyblivý text]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()]] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zbernica_SPI:_D/A_prevodn%C3%ADk_MCP4812&amp;diff=19236</id>
		<title>Zbernica SPI: D/A prevodník MCP4812</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zbernica_SPI:_D/A_prevodn%C3%ADk_MCP4812&amp;diff=19236"/>
		<updated>2026-06-06T10:55:15Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2026 - &amp;#039;&amp;#039;&amp;#039;Meno Priezvisko&amp;#039;&amp;#039;&amp;#039;   == Zadanie ==  Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červ…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Meno Priezvisko&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červená LED dióda.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|500px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
* [http://www.humanbenchmark.com/tests/reactiontime/index.php Vyskúšajte si zmerať reakciu on-line]&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;
Podrobne opíšte použité komponenty (okrem základnej dosky s ATmega328P procesorom), pridajte linky na datasheety alebo opis obvodu. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image3.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image2.jpg|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... &lt;br /&gt;
Výpis kódu je nižšie...&lt;br /&gt;
&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;syntaxhighlight  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;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  unsigned int measuredValue;&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
    /*  relax  */  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;filename.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                                   // A/D converter initialization&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku hotového zariadenia. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;D0UnqGm_miA&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#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>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19235</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19235"/>
		<updated>2026-06-06T10:54:57Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()]] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Milošev, Jakub: [[Zbernica SPI:  D/A prevodník MCP4812]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Mikropo%C4%8D%C3%ADta%C4%8Dov%C3%A9_syst%C3%A9my_(MIPS)&amp;diff=19234</id>
		<title>Mikropočítačové systémy (MIPS)</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Mikropo%C4%8D%C3%ADta%C4%8Dov%C3%A9_syst%C3%A9my_(MIPS)&amp;diff=19234"/>
		<updated>2026-06-06T10:51:54Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Učitelia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ročník:&#039;&#039;&#039; 2.Bc Mechatronika &amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Semester:&#039;&#039;&#039; letný 		      &amp;lt;BR&amp;gt;		&lt;br /&gt;
&#039;&#039;&#039;Rozsah:&#039;&#039;&#039; 2-2 (z,s)                     &amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Prednášateľ:&#039;&#039;&#039; doc. Ing. Richard Balogh, PhD.&amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Odkaz na AIS&#039;&#039;&#039;:  B_MIPS - [https://is.stuba.sk/katalog/syllabus.pl?predmet=353564 Distribuované vnorené počítačové systémy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Informácie a novinky ==&lt;br /&gt;
&lt;br /&gt;
* Na cvičeniach budeme používať komponenty v laboratóriu, ale ak chcete pracovať aj doma, v opise stavebnice [[MIPS Kit]] nájdete zoznam všetkých použitých komponentov. Ak ich nemáte, ale chcete pracovať aj doma, tak si ich môžete buď zapožičať od školy, alebo si môžete od firmy TechFun zakúpiť [https://techfun.sk/produkt/istrobot-kit-2023/ špeciálny kit], ktorý obsahuje všetky potrebné komponenty za cenu  32,-€ + poštovné.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prednášky ==&lt;br /&gt;
&lt;br /&gt;
V stredu o 8:00 &lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Úvod.&#039;&#039;&#039; Architektúry procesorov, rozdiel mikroprocesor - mikropočítač, vstupy a výstupy.&amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/01_prednaskaMIPS.pdf Slajdy z prednášky]&amp;lt;BR&amp;gt;Online: https://microchipdeveloper.com/8avr:ioports&lt;br /&gt;
# Pamäťové priestory. Dokončenie I/O. Digitálne vtupy. Ochrana. Klávesnica. &amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/02_prednaskaMIPS.pdf Slajdy z prednášky]&amp;lt;BR&amp;gt;On-line: https://microchipdeveloper.com/8avr:memory&lt;br /&gt;
# Sériové komunikačné rozhranie I. - USART.&amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/03_prednaskaMIPS.pdf Slajdy z prednášky]&amp;lt;BR&amp;gt;On-line: [https://developerhelp.microchip.com/xwiki/bin/view/products/mcu-mpu/8-bit-avr/structure/usart-intro/ Microchip Developer Help]&lt;br /&gt;
# Binárne vstupy. Prerušenia. &amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/04_prednaskaMIPS.pdf Slajdy z prednášky]&amp;lt;BR&amp;gt;On-line: [https://developerhelp.microchip.com/xwiki/bin/view/products/mcu-mpu/8-bit-avr/structure/interrupts/ Microchip Developer Help]&lt;br /&gt;
# Zabudované počítadlá (čítače) a časovače&amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/05_prednaskaMIPS.pdf Slajdy z prednášky] + [http://senzor.robotika.sk/mmp/2013/prednaska04.pdf Text]&lt;br /&gt;
# Meranie frekvencie. Počítadlá a časovače s prerušeniami.&amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/06_prednaskaMIPS-1.pdf Slajdy z prednášky I.] a [https://senzor.robotika.sk/mips/pdf/06_prednaskaMIPS-2.pdf Slajdy z prednášky II.]&lt;br /&gt;
# Číslicovo-analógový prevodník (DAC) a šírkovo modulovaný výstup (PWM).&amp;lt;BR&amp;gt;[https://senzor.robotika.sk/mips/pdf/07_prednaskaMIPS.pdf Slajdy z prednášky]&lt;br /&gt;
# Analógovo číslicový prevodník (ADC).&amp;lt;BR&amp;gt;[http://senzor.robotika.sk/mmp/prednaska10.pdf Slajdy z prednášky]&lt;br /&gt;
# Zabudované periférne obvody: I2C zbernica.&amp;lt;BR&amp;gt;[http://senzor.robotika.sk/mmp/2013/prednaska09.pdf Text], [http://senzor.robotika.sk/mmp/2013/prednaska09OBR.pdf Slajdy z prednášky]&lt;br /&gt;
# Pozvaná prednáška K. Rendek (On Semiconductor):&amp;lt;BR&amp;gt; [http://www.how2power.com/other/DC_Charger.php Návrh 25kW nabíjacieho modulu]&lt;br /&gt;
# Inteligentné periférie - LCD zobrazovač.  &amp;lt;BR&amp;gt;[http://senzor.robotika.sk/mips/pdf/11_prednaskaMIPS.pdf Slajdy z prednášky]&amp;lt;BR&amp;gt;------------------&amp;lt;BR&amp;gt;&lt;br /&gt;
# Návrh parametrov PWM signálu a spracovanie PWM signálu.&amp;lt;BR&amp;gt;[http://senzor.robotika.sk/mmp/2013/prednaska06.pdf Slajdy z prednášky], [http://senzor.robotika.sk/mmp/2013/prednaska06a.pdf + Článok], [http://senzor.robotika.sk/mmp/SMT160.pdf + SMT160 datasheet]&lt;br /&gt;
# Zabudované počítadlá (čítače) a časovače II - PWM, využitie ako D/A prevodník. &amp;lt;BR&amp;gt;[http://senzor.robotika.sk/mmp/2013/prednaska05OBR.pdf Slajdy z prednášky] + [http://senzor.robotika.sk/mmp/2013/prednaska05.pdf Text]&lt;br /&gt;
# Obvody pripojiteľné na I2C. &amp;lt;BR&amp;gt; [http://senzor.robotika.sk/mmp/2013/prednaska10.pdf Slajdy z prednášky], [http://senzor.robotika.sk/mmp/2013/prednaska10RTC.pdf RTC - hodiny reálneho času].&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;grey&amp;quot;&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cvičenia ==&lt;br /&gt;
&lt;br /&gt;
* [[MIPS Kit]] - opis komponentov na cvičenia&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# [[MIPS Úvodné cvičenie]]&lt;br /&gt;
# [[Programovanie AVR v jazyku C]] -- LEDky a tlačítka&lt;br /&gt;
# [[Vstupy a výstupy AVR]] -- oneskorenia a ošetrenie zákmitov&lt;br /&gt;
# [[Sériové komunikačné rozhranie]] + [[Sériové rozhranie a Processing|Bonus pre pokročilých]]&lt;br /&gt;
# &#039;&#039;&#039;Timer 1:&#039;&#039;&#039; [[Počítadlá a časovače AVR]],  &#039;&#039;&#039;Timer 0:&#039;&#039;&#039; [[Generovanie tónov]] &lt;br /&gt;
# [[Prerušenia]]&lt;br /&gt;
# [[Číslicovo-analógový prevodník (DAC)]] - Šírkovo modulovaný signál PWM&lt;br /&gt;
# [[A/D_prevodník|Analógovo-číslicový prevodník]] (ADC)&lt;br /&gt;
# [[LCD displej EA-DOGM 163]] - inteligentné periférie &amp;lt;FONT Color=&amp;quot;grey&amp;quot;&amp;gt;(staršie cvičenie [[LCD displej s radičom HD44780]]))&amp;lt;/FONT&amp;gt; &lt;br /&gt;
# [[Meranie dĺžky impulzu 2]] -- s prerusenim, bez neho, meranie jednej periody, meranie poctu impulzov&lt;br /&gt;
# [[Zbernica I2C]]&lt;br /&gt;
# [[Riadenie sústavy 1. rádu‎‎]] alebo [[RC filter]]&lt;br /&gt;
&lt;br /&gt;
== Semestrálny projekt ==&lt;br /&gt;
&lt;br /&gt;
*  &#039;&#039;&#039;[[MIPS Projekt]]&#039;&#039;&#039;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Podmienky  absolvovania ==&lt;br /&gt;
&lt;br /&gt;
# Znalosť odprezentovanej problematiky&lt;br /&gt;
# Získanie zápočtu z cvičení&lt;br /&gt;
#* aktívne absolvovanie všetkých cvičení (max. 1 ospravedlnená neúčasť)&lt;br /&gt;
#* vypracovanie  úloh z cvičení &lt;br /&gt;
#* vypracovanie projektu - programu a dokumentácie k nemu&lt;br /&gt;
# Získanie potrebného počtu bodov na skúške (min. 50% písomky)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Učitelia ==&lt;br /&gt;
&lt;br /&gt;
* doc. Ing. Richard Balogh, PhD. (richard.balogh @ stuba.sk)&lt;br /&gt;
* Ing. Ján Šefčík, PhD. ( jan.sefcik @ stuba.sk&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Ing. Matej Rábek, PhD. (matej.rabek @ stuba.sk)&lt;br /&gt;
* Ing. Štefan Chamraz,PhD. (stefan.chamraz @ stuba.sk)&lt;br /&gt;
* &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatúra a zdroje ==&lt;br /&gt;
&lt;br /&gt;
Katalógové listy použitých obvodov (dostupné na internete).&lt;br /&gt;
Okrem toho je literatúra vo forme odkazov pri každom cvičení.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knihy&#039;&#039;&#039;&lt;br /&gt;
* Elliot Williams: &#039;&#039;[https://www.oreilly.com/library/view/make-avr-programming/9781449356484/ Make: AVR Programming]&#039;&#039;. Learning to Write Software for Hardware. O&#039;Reilly Media, 250 pages, 2014.&lt;br /&gt;
* Friedrich Plötzeneder, Andreas Plötzeneder: &#039;&#039;[https://www.scribd.com/book/282872103/Powerprojekte-mit-Arduino-und-C-Schluss-mit-dem-frustrierenden-Ausprobieren-von-Code-Schnipseln Powerprojekte mit Arduino und C]&#039;&#039;. (German Edition) Franzis Verlag, 1. ed., 241 pages, 2013.&lt;br /&gt;
* Michael Margolis, Brian Jepson, Nicholas Robert Weldin: &#039;&#039;[https://www.oreilly.com/library/view/arduino-cookbook-3rd/9781491903513/ Arduino Cookbook]&#039;&#039;., 3rd Edition. O&#039;Reilly Media, Inc., 800 pages, 2020.&lt;br /&gt;
* Ondrej Závodský: &#039;&#039;[https://svetelektro.com/Download/avr_kniha.pdf Programujeme AVR v jazyku C].&#039;&#039; Vlastným nákladom. Dostupné online. 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ostatné&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Microchip on-line resources https://microchipdeveloper.com/8avr:start ku vsetkemu okolo AVR&lt;br /&gt;
* Arduino UNO pinout diagram (svg, teda sa dá zväčšovať) https://upload.wikimedia.org/wikipedia/commons/c/c9/Pinout_of_ARDUINO_Board_and_ATMega328PU.svg&lt;br /&gt;
* Arduino UNO V3 [http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.pdf Pinout diagram]&lt;br /&gt;
* Arduino UNO [https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf Schematic diagram]&lt;br /&gt;
* Arduino Nano http://marcusjenkins.com/wp-content/uploads/2014/06/nano.pdf&lt;br /&gt;
* Datasheet obvodu &amp;lt;S&amp;gt;Atmel&amp;lt;/S&amp;gt; Microchip [https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf ATmega328P]&lt;br /&gt;
* Yahya Tawil: &#039;&#039;[https://www.allaboutcircuits.com/technical-articles/understanding-arduino-uno-hardware-design/ Understanding Arduino UNO Hardware Design]&#039;&#039;. Technical Article, AllAboutCircuits.com. 2016&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jazyk C pre vnorené systémy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Michael Barr: [https://barrgroup.com/embedded-systems/books/programming-embedded-systems Programming Embedded Systems in C and C++]. O&#039;Reilly Media; 1999.&lt;br /&gt;
* Michael Barr: [https://barrgroup.com/sites/default/files/barr_c_coding_standard_2018.pdf Embedded C Coding Standard]. Barr Group Inc. 2018&lt;br /&gt;
* Jason Sachs: [https://www.embeddedrelated.com/showarticle/723.php Important Programming Concepts (Even on Embedded Systems) Part V: State Machines]. Embedded Related web, 2015.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O vnorených systémoch všeobecne&#039;&#039;&#039;&lt;br /&gt;
* Blogy na stránkach Byte-Lab, napr. [https://www.byte-lab.com/how-to-choose-a-microcontroller-for-your-next-project/  How to choose a microcontroller for your next project].&lt;br /&gt;
&lt;br /&gt;
=== Utilitky a užitočnosti ===&lt;br /&gt;
&lt;br /&gt;
* AVR Calculator by Kevin Rosenberg http://radio-hobby.org/modules/tdmdownloads/singlefile.php?cid=8&amp;amp;lid=97 alebo http://web.archive.org/web/20130713104554/http://www.b9.com/elect/avr/kavrcalc/index.html&lt;br /&gt;
* AVR Calc by Brandon Roberts https://sourceforge.net/projects/avrcalc/&lt;br /&gt;
* AVRCalc by Jack Tidwell https://www.avrfreaks.net/forum/avrcalc-update&lt;br /&gt;
* Obrázky by Alberto Piganti (phigixxx) https://github.com/bqlabs/ABC/tree/master/Images&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Obsadenie pinov Arduino UNO ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#96fffb;&amp;quot; | Port B&lt;br /&gt;
! style=&amp;quot;font-weight:normal; text-align:left;&amp;quot; | &lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#fcff2f;&amp;quot; | Port C&lt;br /&gt;
! style=&amp;quot;font-weight:normal; text-align:left;&amp;quot; | &lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#D58CE0;&amp;quot; | Port D&lt;br /&gt;
|- style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#CFF;&amp;quot; | D8&lt;br /&gt;
| style=&amp;quot;font-weight:bold; background-color:#96fffb;&amp;quot; | PB0&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | ICP1 / CLK0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#fafad3;&amp;quot; | D14&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#fffe65;&amp;quot; | PC0&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | A0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#ffccff;&amp;quot; | D0&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; background-color:#d58ce0;&amp;quot; | PD0&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | RxD&lt;br /&gt;
|- style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#CFF;&amp;quot; | D9&lt;br /&gt;
| style=&amp;quot;font-weight:bold; background-color:#96fffb;&amp;quot; | PB1&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | lcd D0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#fafad3;&amp;quot; | D15&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#fffe65;&amp;quot; | PC1&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | A1&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#ffccff;&amp;quot; | D1&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; background-color:#d58ce0;&amp;quot; | PD1&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | TxD&lt;br /&gt;
|- style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#CFF;&amp;quot; | D10&lt;br /&gt;
| style=&amp;quot;font-weight:bold; background-color:#96fffb;&amp;quot; | PB2&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | lcd D1&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#fafad3;&amp;quot; | D16&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#fffe65;&amp;quot; | PC2&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | sw03&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#ffccff;&amp;quot; | D2&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; background-color:#d58ce0;&amp;quot; | PD2&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | lcd RS&lt;br /&gt;
|- style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#CFF;&amp;quot; | D11&lt;br /&gt;
| style=&amp;quot;font-weight:bold; background-color:#96fffb;&amp;quot; | PB3&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | lcd D2&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#fafad3;&amp;quot; | D17&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#fffe65;&amp;quot; | PC3&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | led02&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#ffccff;&amp;quot; | D3&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; background-color:#d58ce0;&amp;quot; | PD3&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | lcd R/W (?)&lt;br /&gt;
|- style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#CFF;&amp;quot; | D12&lt;br /&gt;
| style=&amp;quot;font-weight:bold; background-color:#96fffb;&amp;quot; | PB4&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | lcd D3&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#fafad3;&amp;quot; | D18&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#fffe65;&amp;quot; | PC4&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | SDA&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#ffccff;&amp;quot; | D4&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; background-color:#d58ce0;&amp;quot; | PD4&lt;br /&gt;
| style=&amp;quot;font-style:italic;&amp;quot; | lcd E&lt;br /&gt;
|- style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#CFF;&amp;quot; | D13&lt;br /&gt;
| style=&amp;quot;font-weight:bold; background-color:#96fffb;&amp;quot; | PB5&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | LED&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#fafad3;&amp;quot; | D19&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#fffe65;&amp;quot; | PC5&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | SCL&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#ffccff;&amp;quot; | D5&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; background-color:#d58ce0;&amp;quot; | PD5&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; | T1 / PWM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;; background-color:#ffccff;&amp;quot; | D6&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; font-family:Arial, Helvetica, sans-serif !important;; background-color:#d58ce0;&amp;quot; | PD6&lt;br /&gt;
| style=&amp;quot;font-style:italic; font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | sw01&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;font-family:Arial, Helvetica, sans-serif !important;; background-color:#ffccff;&amp;quot; | D7&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; font-weight:bold; font-family:Arial, Helvetica, sans-serif !important;; background-color:#d58ce0;&amp;quot; | PD7&lt;br /&gt;
| style=&amp;quot;font-style:italic; font-family:Arial, Helvetica, sans-serif !important;;&amp;quot; | sw02&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Predchodcovia predmetu ===&lt;br /&gt;
&lt;br /&gt;
* MMP [[Monolitické mikropočítače]] (1998-2010) pozri všetky stránky k predmetu [[:Category: MMP]]&lt;br /&gt;
* DVPS - [[Distribuované vnorené počítačové systémy]] (2010-2014) pozri  všetky stránky k predmetu [[:Category: DVPS]]&lt;br /&gt;
* Všetky nové stránky k predmetu [[:Category: MIPS]]&lt;br /&gt;
&lt;br /&gt;
=== Poznamky a ToDo&#039;s ===&lt;br /&gt;
&lt;br /&gt;
* Ako funguje napájanie Arduina: https://www.programmingelectronics.com/power-arduino/&lt;br /&gt;
* Podrobnosti o AD prevodniku a jeho testovanie &lt;br /&gt;
** http://www.gammon.com.au/adc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AVR]][[Category: MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Simul%C3%A1tor_s%C3%BAstavy_1._r%C3%A1du&amp;diff=19101</id>
		<title>Simulátor sústavy 1. rádu</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Simul%C3%A1tor_s%C3%BAstavy_1._r%C3%A1du&amp;diff=19101"/>
		<updated>2026-06-05T12:48:00Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2026 - &amp;#039;&amp;#039;&amp;#039;Meno Priezvisko&amp;#039;&amp;#039;&amp;#039;   == Zadanie ==  Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červ…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Meno Priezvisko&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červená LED dióda.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|500px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
* [http://www.humanbenchmark.com/tests/reactiontime/index.php Vyskúšajte si zmerať reakciu on-line]&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;
Podrobne opíšte použité komponenty (okrem základnej dosky s ATmega328P procesorom), pridajte linky na datasheety alebo opis obvodu. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image3.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image2.jpg|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... &lt;br /&gt;
Výpis kódu je nižšie...&lt;br /&gt;
&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;syntaxhighlight  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;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  unsigned int measuredValue;&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
    /*  relax  */  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;filename.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                                   // A/D converter initialization&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku hotového zariadenia. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;D0UnqGm_miA&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#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>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19100</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19100"/>
		<updated>2026-06-05T12:47:43Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Voľné projekty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()]] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Prokop, Matúš: [[Simulátor sústavy 1. rádu]] Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Implement%C3%A1cia_funkcie_map()&amp;diff=19081</id>
		<title>Implementácia funkcie map()</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Implement%C3%A1cia_funkcie_map()&amp;diff=19081"/>
		<updated>2026-06-05T09:59:33Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2026 - &amp;#039;&amp;#039;&amp;#039;Meno Priezvisko&amp;#039;&amp;#039;&amp;#039;   == Zadanie ==  Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červ…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Meno Priezvisko&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červená LED dióda.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:ard.jpg|500px|thumb|center|Vývojová doska ACROB.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
* [http://www.humanbenchmark.com/tests/reactiontime/index.php Vyskúšajte si zmerať reakciu on-line]&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;
Podrobne opíšte použité komponenty (okrem základnej dosky s ATmega328P procesorom), pridajte linky na datasheety alebo opis obvodu. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image3.jpg|400px|thumb|center|Celkový pohľad na zariadenie.]]&lt;br /&gt;
&lt;br /&gt;
Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image2.jpg|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... &lt;br /&gt;
Výpis kódu je nižšie...&lt;br /&gt;
&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;syntaxhighlight  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;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  unsigned int measuredValue;&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
    /*  relax  */  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;filename.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;
&lt;br /&gt;
void adc_init(void);                                   // A/D converter initialization&lt;br /&gt;
&lt;br /&gt;
unsigned int adc_read(char a_pin);&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku hotového zariadenia. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;D0UnqGm_miA&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#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>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19080</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19080"/>
		<updated>2026-06-05T09:59:28Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()]] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Gener%C3%A1tor_harmonick%C3%A9ho_sign%C3%A1lu&amp;diff=19026</id>
		<title>Generátor harmonického signálu</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Gener%C3%A1tor_harmonick%C3%A9ho_sign%C3%A1lu&amp;diff=19026"/>
		<updated>2026-06-03T18:51:47Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - Oleksandr Mykyta&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Na generovanie harmonického signálu nepoužite funkcie sin(), resp. cos(), ale vytvorte oscilátor (v reálnom čase) ako prenosovú funkciu 1/((s*T)^2 + 1). Úlohou je zmerať  jeden bod frekvenčnej  charakteristiky systému 1/(s*T_osc+1) na frekvencii omega = 1/T. T = 0,5 sek.  Výstupom je signál s parametrami: A_0 + A_1*sin(omega*t + fi), kde A_0 = 128 a A_1 = 100.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Úlohou bolo generovať harmonický signal bez použitia funkcií sin() alebo cos().  &lt;br /&gt;
Na tento účel bol použitý oscilátor realizovaný ako prenosová funkcia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
H(s) = 1 / ((s · T)^2 + 1)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zároveň bolo potrebné zmerať jeden bod frekvenčnej charakteristiky systému:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
H(s) = 1 / (s · T + 1)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pre frekvenciu:&lt;br /&gt;
&amp;lt;code&amp;gt;ω = 1 / T&amp;lt;/code&amp;gt;,&lt;br /&gt;
kde&lt;br /&gt;
&amp;lt;code&amp;gt;T = 0.5 s&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Výstupný signal má mať tvar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
A₀ + A₁ · sin(ωt + φ)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde:&lt;br /&gt;
&amp;lt;code&amp;gt;A₀ = 128&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;A₁ = 100&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#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://en.wikipedia.org/wiki/Harmonic_oscillator Harmonic oscillator]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Transfer_function Transfer function]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Euler_method Euler method]&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;
Cieľom riešenia je vytvoriť sinusový signal bez použitia matematických funkcií sin() alebo cos(). Tento problém sa rieši pomocou diskretneho oscilátora, ktorý vychádza z diferenciálnej rovnice harmonického kmitania.&lt;br /&gt;
&lt;br /&gt;
Základom je rovnica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y&#039;&#039; + ω²y = 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Táto rovnica popisuje harmonické kmity a jej riešením sú funkcie &amp;lt;code&amp;gt;sin()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;cos()&amp;lt;/code&amp;gt;. To znamená, že ak vieme túto rovnicu numericky riešiť, vieme generovať sinus.&lt;br /&gt;
&lt;br /&gt;
=== Teoretický základ a odvodenia ===&lt;br /&gt;
&lt;br /&gt;
==== Laplaceova transformacia ====&lt;br /&gt;
&lt;br /&gt;
Vychadzajme z prenosovej funkcie systému:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
H(s) = Y(s) / X(s) = 1 / (T · s + 1)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po úprave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Y(s) · (T · s + 1) = X(s)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
T · s · Y(s) + Y(s) = X(s)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Použitím inverznej Laplaceovej transformacie (kde s predstavuje deriváciu) dostaneme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
T · dy(t)/dt + y(t) = x(t)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Týmto získame diferenciálnu rovnicu systému v časovej oblasti.&lt;br /&gt;
&lt;br /&gt;
==== Diskretizacia ====&lt;br /&gt;
&lt;br /&gt;
Mikrokontrolér pracuje v diskretnom čase, preto je potrebné nahradiť derivácie rozdielmi medzi vzorkami.&lt;br /&gt;
&lt;br /&gt;
Pre druhú deriváciu použijeme aproximáciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y&#039;&#039; ≈ (y[n] − 2y[n−1] + y[n−2]) / T_s²&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po dosadení do &amp;lt;code&amp;gt;y&#039;&#039; + ω²y = 0&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] = (2 / (1 + ω²T_s²)) · y[n−1] − (1 / (1 + ω²T_s²)) · y[n−2]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Táto rovnica predstavuje numerickú aproximáciu oscilátora, ale nie je ideálna z hľadiska stability amplitúdy.&lt;br /&gt;
&lt;br /&gt;
==== Diskretny oscilátor (presný model) ====&lt;br /&gt;
&lt;br /&gt;
Presnejší prístup vychádza z trigonometrických identít:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sin(A + B) = sin(A)cos(B) + cos(A)sin(B)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sin(A − B) = sin(A)cos(B) − cos(A)sin(B)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po sčítaní:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sin(A + B) + sin(A − B) = 2 · sin(A) · cos(B)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dosadením:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;A = (n−1)θ&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;B = θ&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dostaneme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sin(nθ) + sin((n−2)θ) = 2 · cos(θ) · sin((n−1)θ)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Označením:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;y[n] = sin(nθ)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vznikne rekurentný vzťah:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] = 2 · cos(θ) · y[n−1] − y[n−2]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento vzťah generuje stabilný sinusový signal bez zmeny amplitúdy.&lt;br /&gt;
&lt;br /&gt;
==== Výpočet parametrov ====&lt;br /&gt;
&lt;br /&gt;
Platí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
θ = ω · T_s&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde:&lt;br /&gt;
&amp;lt;code&amp;gt;T = 0.5 s&amp;lt;/code&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;ω = 1 / T = 2 rad/s&amp;lt;/code&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;SAMPLE_RATE = 1000 Hz&amp;lt;/code&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;T_s = 0.001 s&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;θ = 0.002&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aproximacia cos() ====&lt;br /&gt;
&lt;br /&gt;
Keďže nie je dovolené použiť funkciu cos(), použije sa Taylorov rozvoj:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cos(θ) ≈ 1 − θ²/2&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Z toho:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2cos(θ) ≈ 2 · (1 − θ²/2)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicializácia oscilátora ====&lt;br /&gt;
&lt;br /&gt;
Pre správnu činnosť oscilátora sú potrebné počiatočné hodnoty:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;y1 = 1&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;y2 = 1 − θ²/2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Generovanie signalu ====&lt;br /&gt;
&lt;br /&gt;
Oscilátor generuje hodnoty v rozsahu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[-1, 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadovaný výstup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
x = A0 + A1 · y&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;A0 = 128&amp;lt;/code&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;A1 = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Diskretizacia systému &amp;lt;code&amp;gt;1 / (sT + 1)&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Zo spojitej rovnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
T · dy/dt + y = x&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Použitím Eulerovej metódy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
dy/dt ≈ (y[n] − y[n−1]) / T_s&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po úprave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] = x − (T / T_s) · y[n] − (T / T_s) · y[n−1]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] · (1 + (T / T_s)) = x − (T / T_s) · y[n−1]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] = (T_s / (T + T_s)) · x + (T / (T + T_s)) · y[n−1]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po zavedení:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;α = T_s / (T + T_s)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dostaneme praktický tvar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] = α · x + (1 − α) · y[n−1]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
y[n] = y[n−1] + α · (x − y[n−1])&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Algoritmus programu využíva diskretny oscilátor a numericku aproximáciu systému &amp;lt;code&amp;gt;1 / (sT + 1)&amp;lt;/code&amp;gt;. Základné výpočty prebiehajú v prerušení Timer1 s frekvenciou 1 kHz:&lt;br /&gt;
&lt;br /&gt;
* výpočet oscilátora&lt;br /&gt;
* generovanie vstupu x&lt;br /&gt;
* výpočet výstupu systému&lt;br /&gt;
* výstup cez PWM&lt;br /&gt;
* odosielanie dát cez UART&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;main.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000 UL&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define SAMPLE_RATE 1000.0&lt;br /&gt;
#define T 0.5&lt;br /&gt;
&lt;br /&gt;
#define A0 128&lt;br /&gt;
#define A1 100&lt;br /&gt;
&lt;br /&gt;
float OSC_COEFF;&lt;br /&gt;
&lt;br /&gt;
volatile float y = 0;&lt;br /&gt;
volatile float y1 = 0;&lt;br /&gt;
volatile float y2 = 0;&lt;br /&gt;
&lt;br /&gt;
volatile float y_sys = 0;&lt;br /&gt;
&lt;br /&gt;
float alpha;&lt;br /&gt;
&lt;br /&gt;
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER1_COMPA_vect) {&lt;br /&gt;
    y = OSC_COEFF * y1 - y2;&lt;br /&gt;
&lt;br /&gt;
    y2 = y1;&lt;br /&gt;
    y1 = y;&lt;br /&gt;
&lt;br /&gt;
    float x = A0 + A1 * y;&lt;br /&gt;
&lt;br /&gt;
    y_sys = y_sys + alpha * (x - y_sys);&lt;br /&gt;
&lt;br /&gt;
    OCR0A = (uint8_t)(y_sys);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;%d,%d\n&amp;quot;, (int) x, (int) y_sys);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void timer1_init() {&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; WGM12);&lt;br /&gt;
&lt;br /&gt;
    OCR1A = 15999;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS10);&lt;br /&gt;
&lt;br /&gt;
    TIMSK1 |= (1 &amp;lt;&amp;lt; OCIE1A);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void pwm_init() {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD6);&lt;br /&gt;
&lt;br /&gt;
    TCCR0A |= (1 &amp;lt;&amp;lt; COM0A1) | (1 &amp;lt;&amp;lt; WGM01) | (1 &amp;lt;&amp;lt; WGM00);&lt;br /&gt;
    TCCR0B |= (1 &amp;lt;&amp;lt; CS01);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    uart_init();&lt;br /&gt;
    stdout = &amp;amp; mystdout;&lt;br /&gt;
&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    timer1_init();&lt;br /&gt;
&lt;br /&gt;
    float Ts = 1.0 / SAMPLE_RATE;&lt;br /&gt;
&lt;br /&gt;
    alpha = Ts / (T + Ts);&lt;br /&gt;
&lt;br /&gt;
    float theta = (1.0 / T) * (1.0 / SAMPLE_RATE);&lt;br /&gt;
&lt;br /&gt;
    y1 = 1.0;&lt;br /&gt;
    y2 = 1.0 - (theta * theta) / 2.0;&lt;br /&gt;
&lt;br /&gt;
    OSC_COEFF = 2.0 * (1.0 - (theta * theta) / 2.0);&lt;br /&gt;
&lt;br /&gt;
    sei();&lt;br /&gt;
&lt;br /&gt;
    while (1) {}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/tab&amp;gt; &lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define set_bit(ADDRESS, BIT)(ADDRESS |= (1 &amp;lt;&amp;lt; BIT))&lt;br /&gt;
#define clear_bit(ADDRESS, BIT)(ADDRESS &amp;amp;= ~(1 &amp;lt;&amp;lt; BIT))&lt;br /&gt;
&lt;br /&gt;
#ifndef UART_H_&lt;br /&gt;
#define UART_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define BAUD_PRESCALE(((F_CPU / (BAUDRATE * 16 UL))) - 1)&lt;br /&gt;
&lt;br /&gt;
void uart_init(void);&lt;br /&gt;
int uart_putc(char c, FILE * stream);&lt;br /&gt;
void uart_puts(const char * s);&lt;br /&gt;
char uart_getc(void);&lt;br /&gt;
void delay(int delay);&lt;br /&gt;
&lt;br /&gt;
#endif /* UART_H_ */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight 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;
&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void uart_init(void) {&lt;br /&gt;
    #include &amp;lt;util/setbaud.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    UBRR0H = UBRRH_VALUE;&lt;br /&gt;
    UBRR0L = UBRRL_VALUE;&lt;br /&gt;
    #if USE_2X&lt;br /&gt;
    UCSR0A |= (1 &amp;lt;&amp;lt; U2X0);&lt;br /&gt;
    #else&lt;br /&gt;
    UCSR0A &amp;amp;= ~(1 &amp;lt;&amp;lt; U2X0);&lt;br /&gt;
    #endif&lt;br /&gt;
&lt;br /&gt;
    UCSR0C = _BV(UCSZ01) | _BV(UCSZ00);&lt;br /&gt;
    UCSR0B = _BV(RXEN0) | _BV(TXEN0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int uart_putc(char c, FILE * stream) {&lt;br /&gt;
    if (c == &#039;\n&#039;) {&lt;br /&gt;
        loop_until_bit_is_set(UCSR0A, UDRE0);&lt;br /&gt;
        UDR0 = &#039;\r&#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    loop_until_bit_is_set(UCSR0A, UDRE0);&lt;br /&gt;
    UDR0 = c;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char * s) {}&lt;br /&gt;
&lt;br /&gt;
char uart_getc(void) {&lt;br /&gt;
    loop_until_bit_is_set(UCSR0A, RXC0);&lt;br /&gt;
    return UDR0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delay(int delay) {&lt;br /&gt;
    for (int i = 1; i &amp;lt;= delay; i++)&lt;br /&gt;
        _delay_ms(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/tab&amp;gt; &lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:MykytaOleksandr_sources.zip|MykytaOleksandr_sources.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Funkcia systému bola overená pomocou výpisu dát cez UART. Do sériového portu sa posielajú dvojice hodnôt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;x, y_sys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tieto hodnoty je možné zobraziť napríklad pomocou &#039;&#039;&#039;SerialPlot&#039;&#039;&#039;, kde je viditeľný vstupný sinusový signal a výstup systému.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Namerené priebehy vstupu a výstupu zo Serial Plot&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;150&amp;quot; mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Súbor:x_high.png|&amp;lt;code&amp;gt;x_max = 227&amp;lt;/code&amp;gt;&lt;br /&gt;
Súbor:x_low.png|&amp;lt;code&amp;gt;x_min = 28&amp;lt;/code&amp;gt;&lt;br /&gt;
Súbor:y_high.png|&amp;lt;code&amp;gt;y_max = 198&amp;lt;/code&amp;gt;&lt;br /&gt;
Súbor:y_low.png|&amp;lt;code&amp;gt;y_min = 57&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri overovaní bolo sledované, či:&lt;br /&gt;
&lt;br /&gt;
* amplitúda výstupu zodpovedá očakávaniu&lt;br /&gt;
* systém vykazuje fázový posun&lt;br /&gt;
* priebeh signalu je stabilný bez driftu&lt;br /&gt;
* výstup reaguje správne na vstupný sinus&lt;br /&gt;
&lt;br /&gt;
Zo signalov je možné pozorovať zmenu amplitúdy a fázový posun, čo predstavuje bod frekvenčnej charakteristiky systému.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;MkgRE0QNgtk&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Video demonštruje reálne správanie systému. Je na ňom viditeľné generovanie sinusového signalu, jeho spracovanie systémom a výstupné dáta zobrazené v &#039;&#039;&#039;SerialPlot&#039;&#039;&#039;. Video slúži na overenie, že implementácia funguje podľa očakávania.&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
Na ďalšíkrát by som si lepšie rozmyslel, ako presne riešiť diskretizáciu, lebo ten jednoduchý prístup funguje, ale nie je úplne ideálny.&lt;br /&gt;
&lt;br /&gt;
A ešte by som si skôr urobil priamo meranie aj na mikrokontroléri v kode, aby som nemusel všetko riešiť cez SerialPlot.&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19025</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19025"/>
		<updated>2026-06-03T18:51:21Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čavojský, Michal: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Fursov, Rostyslav: [[SOS maják]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Grúň, Matúš: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hegedúš, Lukáš: [[Zámok na kód II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Hreha, Filip: [[Alarm s PIR detektorom pohybu]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Chuiko, Oleh: [[Dekodér morzeovky]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Kilian, Karol: [[UART Metronóm]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Klein, Miroslav: [[Prehrávač melódie s ovládaním]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Koža, Andrej: [[Zbernica i2c: RTC Hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Mykyta, Oleksandr: [[Generátor harmonického signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Szabó Bartko, Áron: [[Binárne hodiny]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Zadorozhnii, Anton: [[Generátor signálov s mikroprocesorom]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19024</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=19024"/>
		<updated>2026-06-03T18:45:22Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ (*) Fursov, Rostyslav: [[SOS maják]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ (*) Hreha, Filip: [[Alarm s PIR detektorom pohybu]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ (*) Szabó Bartko, Áron: [[Binárne hodiny]]&lt;br /&gt;
 &amp;lt;li&amp;gt; ✔️ Čulák, Adam: [[Zámok na kód I.]]&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;li value=&amp;quot;13b&amp;quot;&amp;gt; ✔️  Lukáš Hegedúš: [[Zámok na kód II.]]: Študent musí v správnom poradí stlačiť 4 tlačidlá, aby „odomkol“ (rozsvietil zelenú LED).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt;  ✔️ Karol Kilian: [[UART Metronóm]]: Používateľ cez UART zadá BPM (údery za minútu) a bzučiak začne rytmicky pípať.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt;  ✔️ Miroslav Klein: [[Prehrávač melódie s ovládaním]]: Prehráva melódiu z poľa, tlačidlá slúžia ako Play/Stop/Next.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt;  ✔️  Anton Zadorozhnii [[Generátor signálov s mikroprocesorom]]: obdlžnik, trojuholník, sinus. Parametre amplituda, frekvencia, posunutie, .. a vykresliť na plotter. Ak je to zložite, možno rozdeliť na časti. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt;  ✔️  Oleh Chuiko: [[Dekodér morzeovky]]: Mikropočítač prijíma „pípanie“ z tlačidla (meranie dĺžky stisku) a vypisuje písmená na UART.&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt;  ✔️ Andrej Koža: [[Zbernica i2c: RTC Hodiny]]: Vyčítanie reálneho času z modulu DS1307 a jeho výpis na UART.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;31&amp;quot;&amp;gt; ✔️  Mykyta Oleksandr: [[Generátor harmonického signálu]] Na generovanie harmonického signálu nepoužite funkcie sin(), resp. cos(), ale vytvorte oscilátor (v reálnom čase) ako prenosovú funkciu 1/((s*T)^2 + 1). Úlohou je zmerať  jeden bod frekvenčnej  charakteristiky systému 1/(s*T_osc+1) na frekvencii omega = 1/T. T = 0,5 sek.  Výstupom je signál s parametrami: A_0 + A_1*sin(omega*t + fi), kde A_0 = 128 a A_1 = 100.  &lt;br /&gt;
 &amp;lt;li value=&amp;quot;35&amp;quot;&amp;gt; ✔️   Matúš Grúň: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt;  ✔️  Michal Čavojský: [[Interaktívna lampička II]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Z%C3%A1mok_na_k%C3%B3d_II.&amp;diff=18822</id>
		<title>Zámok na kód II.</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Z%C3%A1mok_na_k%C3%B3d_II.&amp;diff=18822"/>
		<updated>2026-05-24T11:19:52Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Lukáš Hegedúš&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ZADANIE ==&lt;br /&gt;
&lt;br /&gt;
Mojou úlohou bolo pracovať so vstupmi vo forme tlačidiel a na základe ich postupného stláčania vytvoriť sekvenciu, ktorú systém vyhodnocuje. Program sleduje poradie stlačených tlačidiel a po zadaní celej sekvencie ho porovná s vopred definovaným správnym kódom. V prípade správneho zadania sa rozsvieti žltá LED dióda, pri nesprávnom zadaní sa rozsvieti červená LED dióda.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Arduinoko.jpg|500px|thumb|center|Mapovanie pinov mikrokontroléra ATmega328P na vývojovej doske Arduino Uno]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf Datasheet k Arduino UNO]&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;
Moje riešenie bolo zamerané na spracovanie vstupov z tlačidiel a vyhodnotenie ich postupného stláčania vo forme sekvencie. Použité boli štyri tlačidlá pripojené na digitálne piny D12, D8, D5 a D2. Program zaznamenáva poradie stlačení a po zadaní štyroch hodnôt ho porovnáva s vopred definovanou sekvenciou.&lt;br /&gt;
&lt;br /&gt;
Na signalizáciu výsledku boli použité dve LED diódy. Žltá LED sa rozsvieti pri správnom zadaní, zatiaľ čo červená LED krátko zabliká pri nesprávnom zadaní. Tlačidlá sú nastavené ako vstupy s internými pull-up rezistormi.&lt;br /&gt;
Program obsahuje aj jednoduchú UART komunikáciu, ktorá po vyhodnotení vypíše &amp;quot;spravny kod&amp;quot; alebo &amp;quot;nespravny kod&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Použité súčiastky:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tlačidlá&lt;br /&gt;
[[Súbor:Tlacidla.jpg|400px|thumb|center|4x Tlačidlá]]&lt;br /&gt;
&lt;br /&gt;
LED Diódy&lt;br /&gt;
[[Súbor:Ledkys.jpg|400px|thumb|center|LED diódy červená a žltá]]&lt;br /&gt;
&lt;br /&gt;
Rezistor 220Ω&lt;br /&gt;
[[Súbor:Odpor.jpg|400px|thumb|center|6x Rezistor 220Ω]]&lt;br /&gt;
&lt;br /&gt;
== Opis schémy ==&lt;br /&gt;
&lt;br /&gt;
Základom obvodu je Arduino Uno. &lt;br /&gt;
V zapojení sa nachádzajú aj dve LED diódy. Každá LED dióda má v sérii zapojený rezistor s odporom 220 Ω. Tieto rezistory slúžia na obmedzenie elektrického prúdu, aby nedošlo k vypáleniu diód alebo poškodeniu pinov Arduina. LED diódy Slúžia nám ako výstupy.&lt;br /&gt;
&lt;br /&gt;
V obvode sú štyri tlačidlá (Tlačidlo 1 až 4), ktoré slúžia ako používateľský vstup. Sú pripojené k digitálnym pinom D12, D8, D5 a D2. Pri každom tlačidle vidíme rezistor s odporom 220 Ω pripojený k napájaniu. Toto zapojenie zabezpečuje definovanú logickú úroveň na pine Arduina (logickú 1), kým nie je tlačidlo stlačené. Po stlačení sa pin prepojí so zemou (GND) a hodnota sa zmení na logickú 0.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Schematics.jpg|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Súbor main.c obsahuje hlavnú logiku programu, teda nastavenie vstupov a výstupov, čítanie tlačidiel, ukladanie zadanej sekvencie a jej vyhodnotenie. Program využíva funkciu read_button(), ktorá zisťuje, ktoré tlačidlo bolo stlačené, a funkciu wait_release(), ktorá zabezpečí, aby sa jedno stlačenie nezapočítalo viackrát.&lt;br /&gt;
&lt;br /&gt;
Súbory uart.h a uart.c tvoria jednoduchú knižnicu pre sériovú komunikáciu. V hlavičkovom súbore uart.h sú deklarované funkcie pre UART komunikáciu. Ich samotná implementácia sa nachádza v súbore uart.c. Funkcia uart_init() nastavuje UART komunikáciu na rýchlosť 9600 baud, funkcia uart_putc() odosiela jeden znak a funkcia uart_puts() odosiela celý textový reťazec.&lt;br /&gt;
&lt;br /&gt;
V hlavnom programe sa po zadaní štyroch stlačení porovná zadaná sekvencia so správnym poradím. Ak sa sekvencie zhodujú, rozsvieti sa žltá LED dióda na 4 sekundy a cez UART sa vypíše text správny kód. Ak je sekvencia nesprávna, krátko zabliká červená LED dióda a vypíše sa text nesprávny kód.&lt;br /&gt;
Výpis kódu je nižšie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Hlavný kód&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&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;quot;uart_P.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// tlačidlá&lt;br /&gt;
#define BTN_D12 PB4&lt;br /&gt;
#define BTN_D8  PB0&lt;br /&gt;
#define BTN_D5  PD5&lt;br /&gt;
#define BTN_D2  PD2&lt;br /&gt;
&lt;br /&gt;
// LED&lt;br /&gt;
#define LED_YELLOW PB5   // D13&lt;br /&gt;
#define LED_RED    PB3   // D11&lt;br /&gt;
&lt;br /&gt;
int read_button(void)&lt;br /&gt;
{&lt;br /&gt;
    if (!(PINB &amp;amp; (1 &amp;lt;&amp;lt; BTN_D12))) return 12;&lt;br /&gt;
    if (!(PIND &amp;amp; (1 &amp;lt;&amp;lt; BTN_D5)))  return 5;&lt;br /&gt;
    if (!(PIND &amp;amp; (1 &amp;lt;&amp;lt; BTN_D2)))  return 2;&lt;br /&gt;
    if (!(PINB &amp;amp; (1 &amp;lt;&amp;lt; BTN_D8)))  return 8;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void wait_release(void)&lt;br /&gt;
{&lt;br /&gt;
    while (read_button() != 0);&lt;br /&gt;
    _delay_ms(150);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    uart_init();&lt;br /&gt;
&lt;br /&gt;
    int correct[4] = {12, 5, 2, 8};  //správny kód&lt;br /&gt;
    int entered[4];&lt;br /&gt;
    int index = 0;&lt;br /&gt;
    int button;&lt;br /&gt;
    int i;&lt;br /&gt;
    int ok;&lt;br /&gt;
&lt;br /&gt;
    // LED výstupy&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; LED_YELLOW);&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; LED_RED);&lt;br /&gt;
&lt;br /&gt;
    // tlačidlá vstupy&lt;br /&gt;
    DDRB &amp;amp;= ~(1 &amp;lt;&amp;lt; BTN_D12);&lt;br /&gt;
    DDRB &amp;amp;= ~(1 &amp;lt;&amp;lt; BTN_D8);&lt;br /&gt;
    DDRD &amp;amp;= ~(1 &amp;lt;&amp;lt; BTN_D5);&lt;br /&gt;
    DDRD &amp;amp;= ~(1 &amp;lt;&amp;lt; BTN_D2);&lt;br /&gt;
&lt;br /&gt;
    // pull-up rezistory&lt;br /&gt;
    PORTB |= (1 &amp;lt;&amp;lt; BTN_D12);&lt;br /&gt;
    PORTB |= (1 &amp;lt;&amp;lt; BTN_D8);&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; BTN_D5);&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; BTN_D2);&lt;br /&gt;
&lt;br /&gt;
    // LED vypnúť&lt;br /&gt;
    PORTB &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_YELLOW);&lt;br /&gt;
    PORTB &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_RED);&lt;br /&gt;
&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
        button = read_button();&lt;br /&gt;
&lt;br /&gt;
        if (button != 0)&lt;br /&gt;
        {&lt;br /&gt;
            _delay_ms(80); // odstránenie zákmitov&lt;br /&gt;
&lt;br /&gt;
            if (read_button() == button)&lt;br /&gt;
            {&lt;br /&gt;
                entered[index] = button;&lt;br /&gt;
                index++;&lt;br /&gt;
&lt;br /&gt;
                wait_release();&lt;br /&gt;
&lt;br /&gt;
                if (index == 4) //vyhodnotenie až po 4 stlačeniach&lt;br /&gt;
                {&lt;br /&gt;
                    ok = 1;&lt;br /&gt;
&lt;br /&gt;
                    for (i = 0; i &amp;lt; 4; i++)&lt;br /&gt;
                    {&lt;br /&gt;
                        if (entered[i] != correct[i])&lt;br /&gt;
                        {&lt;br /&gt;
                            ok = 0;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (ok == 1)&lt;br /&gt;
                    {&lt;br /&gt;
                        uart_puts(&amp;quot;spravny kod\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                        PORTB |= (1 &amp;lt;&amp;lt; LED_YELLOW);&lt;br /&gt;
                        _delay_ms(4000);&lt;br /&gt;
                        PORTB &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_YELLOW);&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        uart_puts(&amp;quot;nespravny kod\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                        PORTB |= (1 &amp;lt;&amp;lt; LED_RED);&lt;br /&gt;
                        _delay_ms(700);&lt;br /&gt;
                        PORTB &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_RED);&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    index = 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart_P.c&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  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;quot;uart_P.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void uart_init(void)&lt;br /&gt;
{&lt;br /&gt;
    &lt;br /&gt;
    UBRR0H = 0;&lt;br /&gt;
    UBRR0L = 103;&lt;br /&gt;
&lt;br /&gt;
    UCSR0B = (1 &amp;lt;&amp;lt; RXEN0) | (1 &amp;lt;&amp;lt; TXEN0); // povolene RX TX&lt;br /&gt;
    UCSR0C = (1 &amp;lt;&amp;lt; UCSZ01) | (1 &amp;lt;&amp;lt; UCSZ00); // 8-bit data&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void uart_putc(char c)  //sluzy na vypis spravny/nespravny&lt;br /&gt;
{&lt;br /&gt;
    while (!(UCSR0A &amp;amp; (1 &amp;lt;&amp;lt; UDRE0)));&lt;br /&gt;
    UDR0 = c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void uart_puts(const char *s)  //nepouzivam v main&lt;br /&gt;
{&lt;br /&gt;
    while (*s)&lt;br /&gt;
    {&lt;br /&gt;
        uart_putc(*s);&lt;br /&gt;
        s++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;uart_P.h&amp;quot;&amp;gt;&amp;lt;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef UART_H_&lt;br /&gt;
#define UART_H_&lt;br /&gt;
&lt;br /&gt;
#define F_CPU 16000000UL&lt;br /&gt;
#define BAUD 9600&lt;br /&gt;
&lt;br /&gt;
void uart_init(void);&lt;br /&gt;
void uart_putc(char c);  //vypis spravny/nespravny kod&lt;br /&gt;
void uart_puts(const char *s); // chcel som pridať este  ak kliknem D12 tak mi vypise ake tlacidlo som stlacil ale v main kode som to nepouzil&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:LukasHegedus_zamok_na_kod.zip|LukasHegedus_zamok_na_kod.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Funkciu riešenia som overil dvomi spôsobmi. &lt;br /&gt;
&lt;br /&gt;
1. Najskôr som zadal správny kód a pozeral na žltú LED diódu ako sa rozsvieti na 4 sekundy a pozoroval som terminál či vypisuje &amp;quot;spravny kod&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. V druhom kroku som zadal nesprávny kód a sledoval blikanie červenej LED diódy a pozoroval výpis terminálu &amp;quot;nespravny kod&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Zapojenieeeee.jpg|400px|thumb|center|Zapojenie na doske Arduino UNO]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;https://youtu.be/aHdixdCj9_c&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=18821</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=18821"/>
		<updated>2026-05-24T11:17:14Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Projekty MIPS 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; ✔️ (*) Rostyslav Fursov: [[SOS maják]]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; (*) Filip Hreha: [[Alarm s PIR detektorom pohybu]] https://www.parallax.com/product/pir-mini-sensor/&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;4&amp;quot;&amp;gt; (*) Áron Szabó Bartko: [[Binárne hodiny]]: Zobrazenie plynutia sekúnd (0-63) v binárnej sústave na 6 LED diódach.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;13a&amp;quot;&amp;gt; Adam Čulák: [[Zámok na kód I.]]: Zámok na kód: Študent musí v správnom poradí stlačiť na matici správne poradie tlačidiel aby „odomkol“ (rozsvietil zelenú LED). Ak je kombinácia nesprávna, rozsvieti sa červená dióda.&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;li value=&amp;quot;13b&amp;quot;&amp;gt; Lukáš Hegedúš: [[Zámok na kód II.]]: Študent musí v správnom poradí stlačiť 4 tlačidlá, aby „odomkol“ (rozsvietil zelenú LED).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Karol Kilian: [[UART Metronóm]]: Používateľ cez UART zadá BPM (údery za minútu) a bzučiak začne rytmicky pípať.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Miroslav Klein: [[Prehrávač melódie s ovládaním]]: Prehráva melódiu z poľa, tlačidlá slúžia ako Play/Stop/Next.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt;  Anton Zadorozhnii [[Generátor signálov s mikroprocesorom]]: obdlžnik, trojuholník, sinus. Parametre amplituda, frekvencia, posunutie, .. a vykresliť na plotter. Ak je to zložite, možno rozdeliť na časti. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt;  Oleh Chuiko: [[Dekodér morzeovky]]: Mikropočítač prijíma „pípanie“ z tlačidla (meranie dĺžky stisku) a vypisuje písmená na UART.&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt;Andrej Koža: [[Zbernica i2c: RTC Hodiny]]: Vyčítanie reálneho času z modulu DS1307 a jeho výpis na UART.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;31&amp;quot;&amp;gt; Mykyta Oleksandr: [[Generátor harmonického signálu]] Na generovanie harmonického signálu nepoužite funkcie sin(), resp. cos(), ale vytvorte oscilátor (v reálnom čase) ako prenosovú funkciu 1/((s*T)^2 + 1). Úlohou je zmerať  jeden bod frekvenčnej  charakteristiky systému 1/(s*T_osc+1) na frekvencii omega = 1/T. T = 0,5 sek.  Výstupom je signál s parametrami: A_0 + A_1*sin(omega*t + fi), kde A_0 = 128 a A_1 = 100.  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;35&amp;quot;&amp;gt;  Matúš Grúň: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt;  Michal Čavojský: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=18820</id>
		<title>MIPS Projekt</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=MIPS_Projekt&amp;diff=18820"/>
		<updated>2026-05-24T11:16:46Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cieľom semestrálneho projektu je ukázať, že ste sa na našom predmete skutočne niečo naučili a že ste schopní samostatne vyriešiť a naprogramovať jednoduchšiu úlohu s mikropočítačom. &lt;br /&gt;
&lt;br /&gt;
Do termínu skúšky treba riešenie predviesť a potom odovzať dokumentáciu sem do wiki:&lt;br /&gt;
* Stručný opis riešenia, akýsi návod na použitie, čo ste vlastne spravili a ako to funguje.&lt;br /&gt;
* Zdrojový kód (prípadne aj použité knižnice ak sú iné ako štandartne použité lcd.h, uart.h a i2c.h) aj s bohatými vlastnými komentármi&lt;br /&gt;
* Video, malo by obsahovať aj nejaký komentár, kde bude opisovať čo vidíme, čo sa deje a prečo sa to tam deje. Malo by zdokumentovať všetky funkcie, ktoré ste naprogramovali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{cbox|text=&#039;&#039;&#039;Upozornenie:&#039;&#039;&#039; programy vypracujete v avr-gcc, &#039;&#039;&#039;nie&#039;&#039;&#039; v Arduino IDE prostredí.&amp;lt;BR&amp;gt; Nie je dovolené používať žiadne cudzie knižnice s výnimkou štandartných a tých, ktoré sme používali na cvičeniach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT Color=&amp;quot;red&amp;quot; Size=&amp;quot;+1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vlastné:&#039;&#039;&#039;&lt;br /&gt;
* Ak máte vlastný nápad, napríklad si chcete k svojej Arduino doske niečo pripojiť, naprogramovať, ozvite sa, dohoda je možná.&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mnoho inšpirácie na vlastné projekty nájdete napr. tu https://www.engineersgarage.com/?s=arduino&amp;amp;page=1 alebo tu https://circuitdigest.com/microcontroller-projects/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voľné projekty ==&lt;br /&gt;
&lt;br /&gt;
Poznámka: zadania označené (*) sú jednoduchšie a nie sú vhodné pre študentov, ktorí chcú mať známku A alebo B. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;8&amp;quot;&amp;gt;   Zbernica i2c: PCF8582E - 256x8-bit EEPROM i2c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;10&amp;quot;&amp;gt;  Zbernica SPI: MCP41050 E/P  číslicový potenciometer 50k, 8-bit, SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;11&amp;quot;&amp;gt;  Zbernica SPI: MCP4811 -E/P  číslicový D/A prevodník 10 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;12&amp;quot;&amp;gt;  Zbernica SPI: 25LC010A - EEPROM pamäť 128x8 bit SPI&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Jednoduchý multitasking s FreeRTOS https://github.com/johncobb/avr_328p_freertos&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt; Vytvorte program pracujúci v reálnom čase simulujúci systém Y(s)/U(s)=K/(s*T+1), K=1 [-] a T = 0,5 [sek].  Na vykreslenie priebehu použite SerialPlot. Rozsahy u(t) a y(t)  sú 0 až 5V. Rozlíšenie 0.01V. Vykreslite prechodovú charakteristiku odpovedajúcu vstupnej hodnote 2.00V.  Použite celočíselnú aritmetiku.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;34&amp;quot;&amp;gt; Ak použijeme funkciu printf(...) čas potrebný na k vykonaniu tejto operácie je úmerný prenosovej rýchlosti a počtu prenášaných B-tov. Jeden zo spôsobov skrátenia času potrebného na vykonanie tejto funkcie je použiť prerušovací podsystém. Na meranie času použite buď niektorý T/C, alebo osciloskop. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Študent musí vypočítať z T systému T oscilátora. Dokážete namerať toľko bodov,  ALF a FLF charakteristiky, aby ste vedeli dokresliť asymptoty?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Niečo z predošlých zadaní v kombinácii Matlab/Simulink a generovaným kódom.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; [[Zbernica i2c: hodiny reálneho času s PCF8583P]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2026 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; ✔️ (*) Rostyslav Fursov: [[SOS maják]]: Cyklické vyblikávanie signálu SOS v morzeovke na jednej LED.&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; (*) Filip Hreha: [[Alarm s PIR detektorom pohybu]] https://www.parallax.com/product/pir-mini-sensor/&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; (*) Sofia Nevzorova: [[Vstupná jednotka s palcovým prepínačom TS211]] - https://www.bucek.name/pdf/ts21xxxxx.pdf&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; (*) Dávid Vríčan: [[Automatické zavlažovanie]] so snímačom vlhkosti pôdy a pumpičkou&lt;br /&gt;
 &amp;lt;li value=&amp;quot;4&amp;quot;&amp;gt; (*) Áron Szabó Bartko: [[Binárne hodiny]]: Zobrazenie plynutia sekúnd (0-63) v binárnej sústave na 6 LED diódach.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; (*) Oliver Szabo: [[Generátor tónov]]: Potenciometrom riadený zvuk: ADC hodnota z potenciometra mení frekvenciu tónu na bzučiaku v reálnom čase.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; (*) Samuel Igaz: [[Monitor kapacity batérie]]: Meranie napätia (simulované potenciometrom) a zobrazenie stavu (Full/Mid/Low) na 3 LED.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;9&amp;quot;&amp;gt; Broňa Dzivjaková: [[UART Kalkulačka]]: Študent pošle cez terminál príklad (napr. 5+3) a mikropočítač vráti výsledok. Operácie aspoň +,-,*,/.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;13a&amp;quot;&amp;gt; Adam Čulák: [[Zámok na kód I.]]: Zámok na kód: Študent musí v správnom poradí stlačiť na matici správne poradie tlačidiel aby „odomkol“ (rozsvietil zelenú LED). Ak je kombinácia nesprávna, rozsvieti sa červená dióda.&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;li value=&amp;quot;13b&amp;quot;&amp;gt; Lukáš Hegedúš: [[Zámok na kód II.]]: Študent musí v správnom poradí stlačiť 4 tlačidlá, aby „odomkol“ (rozsvietil zelenú LED).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Karol Kilian: [[UART Metronóm]]: Používateľ cez UART zadá BPM (údery za minútu) a bzučiak začne rytmicky pípať.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Miroslav Klein: [[Prehrávač melódie s ovládaním]]: Prehráva melódiu z poľa, tlačidlá slúžia ako Play/Stop/Next.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;16&amp;quot;&amp;gt;  Egor Bukhtiiarov: [[Zbernica i2c: EEPROM Terminál]]: Zápis a čítanie textových reťazcov do externej pamäte cez UART príkazy .&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt;  Anton Zadorozhnii [[Generátor signálov s mikroprocesorom]]: obdlžnik, trojuholník, sinus. Parametre amplituda, frekvencia, posunutie, .. a vykresliť na plotter. Ak je to zložite, možno rozdeliť na časti. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19a&amp;quot;&amp;gt;  Werner Federmayer: [[Ultrazvukový radar s HC-SR04]]: Meranie vzdialenosti (HC-SR04) a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19b&amp;quot;&amp;gt; Mihály Bertalan Vasas: [[Ultrazvukový radar so senzorom Ping)))]]: Meranie vzdialenosti a zobrazenie na LCD alebo sériovú linku v centimetroch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt;  Dmytro Domchuk: [[Integrátor s mikroprocesorom]]. Potenciometer zadá veľkosť vstupu integrátora. Vytvorí sa zdroj reálneho času, prírastku času, napr. 5ms. A s nastavenou integračnou časovou konštantou sa bude meniť v reálnom čase, výstup, ktorý sa bude zobrazovať na serial, plot. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Dariia Dordiai: [[Jednoduchý P regulátor]]. (Nepotrebuje periódu vzorkovania). Bude daná  rýchlosťou merania napätia na potenciometre. Keďže je daný 10b prevodník, je daný aj rozsah w (želaná hodnota), y (meraná hodnota) a e (regulačná odchýlka). E sa prenásobí zosilnením, napr. pevná rádová čiarka a pošle sa von na PWM výstup napr. 8b. Treba len vhodne nastaviť periódu opakovania. Opäť možno zobrazovať na serial plot. meranú hodnotu a tomu odpovedajúce plnenie ako funkcia w., atď. &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt;  Oleh Chuiko: [[Dekodér morzeovky]]: Mikropočítač prijíma „pípanie“ z tlačidla (meranie dĺžky stisku) a vypisuje písmená na UART.&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt;Andrej Koža: [[Zbernica i2c: RTC Hodiny]]: Vyčítanie reálneho času z modulu DS1307 a jeho výpis na UART.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;26&amp;quot;&amp;gt;  Yaroslav Buryk: [[Digitálny potenciometer]]. Navrhnite program na načítavanie počtu impulzov tak, aby ste pri opakovanom pohybe (aj pri zmene smeru) hriadeľa nestratili ani jeden krok. Ide o ošetrenie voči zákmitom.   &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;27&amp;quot;&amp;gt; Gordij Čornyj: [[Úsporné režimy procesora]] - Power down úsporné režimy https://www.engineersgarage.com/reducing-arduino-power-consumption-sleep-modes/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;31&amp;quot;&amp;gt; Mykyta Oleksandr: [[Generátor harmonického signálu]] Na generovanie harmonického signálu nepoužite funkcie sin(), resp. cos(), ale vytvorte oscilátor (v reálnom čase) ako prenosovú funkciu 1/((s*T)^2 + 1). Úlohou je zmerať  jeden bod frekvenčnej  charakteristiky systému 1/(s*T_osc+1) na frekvencii omega = 1/T. T = 0,5 sek.  Výstupom je signál s parametrami: A_0 + A_1*sin(omega*t + fi), kde A_0 = 128 a A_1 = 100.  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;32&amp;quot;&amp;gt;  (*) Kristian Rostupytskyi: [[Pripojenie viacero tlačidiel cez A/D prevodník‎]] - Pripojenie 5 tlačidiel na 1 vstup mikroprocesora s využitím A/D prevodníka.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;33&amp;quot;&amp;gt; Dariia Svystak: [[Implementácia funkcie map()] V prostredí ArduinoIde máme možnosť použiť funkciu map(...). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku.  Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li value=&amp;quot;35&amp;quot;&amp;gt;  Matúš Grúň: [[Interaktívna lampička I]]&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt;  Michal Čavojský: [[Interaktívna lampička II]]&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt;  Mia Dudášová: [[Zámok na kód s IR ovládaním]] - vlastný projekt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt;  Marek Kesckés: [[Ovládanie servomotorčekov na manipulátore joystickmi]] - vlastný projekt&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- nove pridavaj uz sem, lebo cislovanie --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archív projektov z predošlých rokov == &lt;br /&gt;
&lt;br /&gt;
* Balogh: &#039;&#039;[[MIPS Template|Vzorová šablóna na projekty.]]&#039;&#039; 2023-6.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2025 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Dominik Andraščík: [[Ovládanie elektrického zámku z cloudu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Andrej Bariš: [[Bežiace svetlo s obvodom 74HC595]]&lt;br /&gt;
 &amp;lt;li&amp;gt;?? Ilona Baihildina: [[Hracia kocka s LED]] (*)&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Oliver Beko: [[Čítačka RFID kariet RC522]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Biacovský: [[Jednoduchá kuchynská váha do 1kg]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Boco: [[Zbernica i2c: hodiny reálneho času s DS1388]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Bungyi: [[Diaľkové ovládanie zosilňovača]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Lukáš Čapla: [[Snímanie polohy optickým enkodérom]] IRC a jeho vyhodnotenie pre snímanie polohy&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Samuel Gálik: [[Ovládanie rýchlosti jednosmerného motora cez bluetooth]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Hanišák: &#039;&#039;[[Zbernica i2c: PCF8574]] - IO expandér.&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Ľuboš Hreňo: [[Ovládanie  robotického ramienka joystickom II.]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Hubocký: [[Kombinovaný snímač teploty a vlhkosti DHT22]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Dávid Jamarik: [[Hra Máš pevnú ruku?]] (*) &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Miloslav Kráľ:  [[Tester Arduina]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Kráľ: [[Automatické nastavenie prenosovej rýchlosti]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Juraj Krasnovský: [[Ovládanie  robotického ramienka joystickom]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Martin Lenarth: [[Ovládanie vyklápacích svetiel]]. &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Németh: [[Ovládanie rýchlosti jednosmerného motora z BT aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Tymur Omelianenko: [[Generátor trojuholníkového signálu s R-2R prevodníkom]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Filip Pinďar: [[Ovládanie elektrického zámku z mobilnej aplikácie]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Kamil Raplík: [[Infračervený vypínač s ATtiny45]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ René Roger: [[Metódy zvýšenie presnosti A/D prevodu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Aleh Sobaleu: [[Kombinovaný snímač teploty a vlhkosti DHT11]] &lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Marek Šoltés: [[Diaľkové ovládanie spotrebiča pomocou infračerveného signálu]]&lt;br /&gt;
 &amp;lt;li&amp;gt;✔️ Matúš Zakuťanský: [[Generovanie kódu z prostredia Matlaba/Simulink]] &lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2024 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bobocký, Daniel Samuel: &#039;&#039;[[Klávesnica s radičom MH1KK1 -]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Bugár, Martin:         &#039;&#039;[[Reglátor chladenia so snímačom teploty]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Buzko, Kateryna:       &#039;&#039;[[Jednoduchý prijímač diaľkového IR ovládania]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Csabi, Jozef:          &#039;&#039;[[Meranie vzdialenosti ultrazvukovým snímačom HC-SR04]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Fedor, Peter:          &#039;&#039;[[Riadenie polohy klapky klimatizácie]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Guľak, Peter:          &#039;&#039;[[Piškvorky (Tic-Tac-Toe)]] na 8x8 maticovom displeji&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Hano, Adam:            &#039;&#039;[[Hodinový modul DS1302]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Illés, Dominik:        &#039;&#039;[[Ovládanie RGB LED pásika]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kramla, Oliver:        &#039;&#039;[[Svetelný efekt s obvodom 74595]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kudláč, Lukáš:         &#039;&#039;[[Riadenie križovatky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Kuňáková, Andrea:      &#039;&#039;[[Autíčko na sledovanie čiary]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ledecký, Matej:        &#039;&#039;[[Ovladanie krokoveho motora joystickom + uvod displej]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Macák, Jakub:          &#039;&#039;[[Tester obvodu 7400]] (4xNAND)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Majba, David:          &#039;&#039;[[Vysielač morzeovky]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Ladislav:        &#039;&#039;[[Maticový displej 8x8 s driverom MAX7219]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Nagy, Gabriel:         &#039;&#039;[[Tester obvodu 7493]] (4-bitové počítadlo)&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ondrejková, Lea Lenka: &#039;&#039;[[14-segmentový LED displej]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Pauliny, Kristián:     &#039;&#039;[[Akordy s procesorom AVR]]&#039;&#039; &lt;br /&gt;
 &amp;lt;li&amp;gt; Reismüller, Tomáš:     &#039;&#039;[[Inteligentný šatník]]&#039;&#039; (model)&lt;br /&gt;
 &amp;lt;li&amp;gt; Sušina, Marián:        &#039;&#039;[[Senzor teploty a vlhkosti SHT31]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Szovics, Peter:        &#039;&#039;[[Elektronická škrtiaca klapka]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Tarcal, Ondrej:        &#039;&#039;[[Simon&#039;s Game]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Ulej, Ján:             &#039;&#039;[[Kuchynské minutky]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Viest, Filip:          &#039;&#039;[[Klávesnica 2x3]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Vretenička, Šimon:     &#039;&#039;[[Ovládanie RGB LED cez Processing]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Žula, Daniel:          &#039;&#039;[[7-segmentový displej na futbal]] &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;li&amp;gt; Brosz, Peter  a Diossy, Daniel: &#039;&#039;[[Automatické autíčko]]&#039;&#039;&lt;br /&gt;
 &amp;lt;li&amp;gt; Matsibora, Viačeslav a Fietisov, Dmytro: &#039;&#039;[[Dvojosová kolíska na kameru ovládaná joystickom]]&#039;&#039; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;65&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Tomáš Štibrányi: Klávesnica 4x4 s radičom MH1KK1&#039;&#039; &amp;lt;/S&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;61&amp;quot;&amp;gt;&amp;lt;S&amp;gt; Jakub Briežnik: Jednoduché menu s rotačným enkodérom&#039;&#039; a s výberom možností &amp;lt;/S&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2023 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Tomáš Bečvarov:   &#039;&#039;[[Senzor farieb TCS230]].&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Martin Cíbik:     &#039;&#039;[[Riadenie krokového motorčeka I.]]&#039;&#039;  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Viktor Fos*:      &#039;&#039;[[Rotačný enkodér]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Kristián Greif:   &#039;&#039;[[Zbernica i2c: MCP4725]] - DAC prevodník s EEPROM.&#039;&#039; Jednoduchý driver a knižnica pre tento obvod.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Hílek:       &#039;&#039;[[Postrehová hra]]&#039;&#039;  &lt;br /&gt;
 &amp;lt;li&amp;gt;Ivan Jagoš:       &#039;&#039;[[Dekodér infračerveného ovládača]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Mykyta Sabadash:  &#039;&#039;[[Hlukomer]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;lI&amp;gt;Lukáš Savčak:     &#039;&#039;[[Snímač teploty TMP36]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Juraj Štefánik:   &#039;&#039;[[Segmentový display TM1637]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Samuel Tomáš:     &#039;&#039;[[Miniatúrny analógový joystick]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Hortenzia Wollentová: &#039;&#039;[[Ovládač maticovej klávesnice]]&#039;&#039;.  2023&lt;br /&gt;
 &amp;lt;li&amp;gt;Jozef Záhora:      &#039;&#039;[[Jednoduchá terminálová kalkulačka]]&#039;&#039;. 2023&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projekty MIPS 2022 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;1&amp;quot;&amp;gt; Martin Drgala: &amp;lt;!-- Lipták, Kristián: --&amp;gt; Stopky - spustenie, aspoň jeden medzičas, nulovanie. 3x tlačítko + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;2&amp;quot;&amp;gt; Veronika Remeňová: &amp;lt;!-- Turčan, Maroš: --&amp;gt;    Kuchynské minútky - nastavenie, spustenie, alarm. Tlačítko, potenciometer (nastavenie času) + LCD displej&lt;br /&gt;
 &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; František Kapsz:  &amp;lt;!-- Buday, Bálint: --&amp;gt;    Vizualizácia polohy potenciometra na displeji - vyfarbovanie polí na displeji (ako ovládač hlasitosti)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt; Roderik Bako: &amp;lt;!-- Belokostolský, Alex Kristóf --&amp;gt; [https://www.mathsisfun.com/games/simon-says.html Simon&#039;s Game] 4x LED, 1x tlačítko, LCD displej na skore&lt;br /&gt;
 &amp;lt;li value=&amp;quot;6&amp;quot;&amp;gt; Mário Babinský:  Hra - vyhýbanie sa prekážkam na LCD displeji, ovládanie jedným tlačidlom, hráč (auto) ide vpred a prepína jazdné pruhy (riadky displeja)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Maté Tóth: Simulátor hollywood pyrotechnika - displej odrátava čas a študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Dávid Červenka: Modifikovaný simulátor hollywood pyrotechnika - displej odrátava čas ako stĺpcový diagram a pípanei sa zrýchluje, pričom študent má na výber dva káble ktoré môže &amp;quot;prestrihnúť&amp;quot; (odpojiť), náhodne sa zvolí jeden ktorý preruší časovať a jeden čo &amp;quot;vybuchne&amp;quot; bombu&lt;br /&gt;
 &amp;lt;li value=&amp;quot;14&amp;quot;&amp;gt; Alexander Lazorík:  &amp;lt;!-- Goljer, Ivan: --&amp;gt; Hudobný nástroj ovládaný cez klávesnicu, sériovou linkou posiela tóny a Arduino ich hrá. Zapamätá si melódiu a vie ju zopakovať&lt;br /&gt;
 &amp;lt;li value=&amp;quot;15&amp;quot;&amp;gt; Pavel Bucha: Ovládanie RGB LED cez Processing pomocou troch posuvníkov ([[Meranie odporov|príklad na posuvník je tu]]).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;17&amp;quot;&amp;gt; Marek Porubský: &amp;lt;!-- Berta, Kristof: --&amp;gt; &#039;&#039;Meranie teploty pomocou interného snímača procesora.&#039;&#039; (podľa [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf AVR AppNote 122])&lt;br /&gt;
 &amp;lt;li value=&amp;quot;18&amp;quot;&amp;gt; Andrii Sikomas: &amp;lt;!-- Bilčík, Martin: --&amp;gt; &#039;&#039;Ultrazvukový senzor HC-SR04 a meranie vzdialenosti (parkovací senzor).&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;19&amp;quot;&amp;gt; Adam Sližka: &amp;lt;!-- Oboril, Oliver:--&amp;gt; LED ako senzor intenzity svetla&lt;br /&gt;
 &amp;lt;li value=&amp;quot;20&amp;quot;&amp;gt; Tomáš Truben: Servomotorček ako indikátor nejakej inej veličiny - ručičku a stupnicu vyrobíte sami.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;21&amp;quot;&amp;gt; Jakub Červenka: &amp;lt;!-- Skachová, Zuzana:--&amp;gt; Semafor s akustickou signalizáciou pre nevidiacich a slabozrakých (frekvencie vid: https://sk.wikipedia.org/wiki/Akustick%C3%BD_maj%C3%A1k)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;22&amp;quot;&amp;gt; Sabina Ovčiariková: &amp;lt;!-- Görözdös, Gergely: --&amp;gt; Binárne hodiny/stopky alebo počítadlo, rozsvietená LED-ky by ukazovali počet sekúnd/počet kliknutí tlačidla, mohlo by to byť sprevádzané pípnutím každých 10 stlačení alebo každú minútu.&lt;br /&gt;
 &amp;lt;li value=&amp;quot;23&amp;quot;&amp;gt; Oleksandr Shyp: &amp;lt;!-- Hajda, Jaroslav: --&amp;gt; &#039;&#039;Posúvanie bodky na 8x8 led displayi pomocou joysticku.&#039;&#039;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;29&amp;quot;&amp;gt; Martin Vdovják: &amp;lt;!-- Mosej, Samuel: --&amp;gt;Digitálny alarm - treba zadať správnu sekvenciu tlačidiel, keď sa vloží správna sekvencia rozsvieti sa tlačidlo, nesprávna sekvencia zabzučí alarm (možno aj pridať možnosť vkladať nové kódy)&lt;br /&gt;
 &amp;lt;li value=&amp;quot;36&amp;quot;&amp;gt; Attila Hriňa: &amp;lt;!--  Papcun, Miroslav: --&amp;gt; Hra na trénovanie hudobného sluchu - reproduktor zahrá 2 (náhodné) tóny a hráč musí povedať, či bol vyšší prvá alebo druhý (dve tlačidlá).&lt;br /&gt;
 &amp;lt;li value=&amp;quot;37&amp;quot;&amp;gt; Korytova, Taisiia: Svetelná križovatka s nočným režimom. &amp;lt;!-- Fabian, Maroš --&amp;gt;&lt;br /&gt;
 &amp;lt;li value=&amp;quot;38&amp;quot;&amp;gt; Ákos Keszegh: Reaction Timer&lt;br /&gt;
 &amp;lt;li value=&amp;quot;39&amp;quot;&amp;gt; Marek Trúchly: Atmel2586 s MEMS akcelerometerom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;40&amp;quot;&amp;gt; Oskar Bálint: Automatické otváranie dverí s PIR senzorom&lt;br /&gt;
 &amp;lt;li value=&amp;quot;41&amp;quot;&amp;gt; Adam Kašička:  Model a signalizácia sekvenčnej prevodovky&lt;br /&gt;
 &amp;lt;li value=&amp;quot;42&amp;quot;&amp;gt; Ing. Ján Šefčík: Riadenie modelu Ball&amp;amp;Beam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zadania semestrálnych projektov v minulosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Toto bolo v minulosti, ale na dištančnú formu je to nevhodné. V roku 2021 nebudú pracovať vo dvojiciach, ale individuálne. &lt;br /&gt;
&lt;br /&gt;
Zadanie pozostáva z dvoch častí:&lt;br /&gt;
&lt;br /&gt;
1. teoretická časť - v tejto časti máte popísať v rozsahu max. 10 strán čo a ako ste použili. Typicky tu býva uvedený popis periférnych obvodov, ktoré ste pripojili k mikroprocesoru, použité periférie mikropočítača dôležité registre s popisom jednotlivých bitov atď. (max. 20b.)&lt;br /&gt;
Dokumentáciu budete písať do tejto wiki-stránky, prihlasovacie meno a heslo sa dozviete na cvičení. &lt;br /&gt;
Na prvé zoznámenie so systémom môžete použiť [[Testing Page|testovaciu stránku]] a [[Projekt: vzorová šablóna|vzorový projekt - šablónu]].&lt;br /&gt;
&lt;br /&gt;
2. program - okrem predvedenia programu cvičiacemu je poterbné napísať k nemu tiež krátky popis, alebo vývojový diagram. Môže byť súčasťou prvej časti zadania. (max. 20 b.)&lt;br /&gt;
&lt;br /&gt;
Termín na odovzdanie je na dohode s cvičiacim, najneskôr do skúšky. Na zadaní môžete pracovať priebežne, alebo sa dohodnite s cvičiacim na súvislej práci v laboratóriu (napr. jeden celý deň). POZOR: niektoré zadania vyžadujú prípravu aj od cvičiaceho, nečakajte preto, že prídete a budete mať všetko na prácu nachystané -- treba sa vopred dohodnúť.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2014&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Lechvár, Slaminka: &#039;&#039;[[Meranie pulzovej frekvencie.]]&#039;&#039; 2014.&lt;br /&gt;
* Jankovič, Lukáč: &#039;&#039;[[Zbernica i2c: hodiny RTC.]]&#039;&#039; 2014.&lt;br /&gt;
* Bača, Galovič: &#039;&#039;[[Bezdrôtová komunikácia v pásme 433 MHz.]]&#039;&#039; 2014.&lt;br /&gt;
* Katona, Nehánszki: &#039;&#039;[[Hodiny RTC s kalendárom pomocou PCF8583]]&#039;&#039;. 2014.&lt;br /&gt;
* Benedek, Cintula, Gahér: &#039;&#039;[[Trojosí gyroskopický modul L3G4200D]]&#039;&#039;. 2014.&lt;br /&gt;
* Šandal, Vincze: &#039;&#039;[[Trojosí akcelerometer MMA7455]]&#039;&#039;. 2014.&lt;br /&gt;
* Kocian, Švančara: &#039;&#039;[[RFID čítačka]]&#039;&#039;. 2014&lt;br /&gt;
* Martinkovič, Valach: &#039;&#039;[[RFID čítačka II]]&#039;&#039;. 2014&lt;br /&gt;
* Jakubička, Vyletel: &#039;&#039;[[Inkrementálny snímač]]&#039;&#039;. 2014&lt;br /&gt;
* Bohuš, Vargic, Gašparová: &#039;&#039;[[MEMS mikrofón ADMP401]]&#039;&#039;. 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2013&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Godál, R. a Šimončič, M.: &#039;&#039;[[Meranie reakčnej doby]].&#039;&#039; 2013.&lt;br /&gt;
* Leško, D. a Biath, V.: &#039;&#039;[[MiniMEXLE Hodiny na orientačný beh]].&#039;&#039; 2013.&lt;br /&gt;
* Paulen, J. a Vojvoda, R.: &#039;&#039;[[Meranie krátkych intervalov]].&#039;&#039; 2013.&lt;br /&gt;
* Jurák, M. a Vlahi, L.: &#039;&#039;[[Meranie časového intervalu]].&#039;&#039; 2013.&lt;br /&gt;
* Rybárik, M. a Lukáč, M.: &#039;&#039;[[Odpočítavacie hodiny na riadenie diskusie]].&#039;&#039; 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekty 2012&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cebák, Darvaši:  &#039;&#039;[[Zbernica i2c: SAA1064|Zbernica i2c: 7-segmentový displej.]]&#039;&#039; 2012.&lt;br /&gt;
* Pecho, Lacko:    &#039;&#039;[[Projekt: Infračervené ovládanie|Infračervené ovládanie]]&#039;&#039; 2012.&lt;br /&gt;
* Rekšák, Mrva:    &#039;&#039;[[Projekt: Inkrementálny snímač otáčok|Inkrementálny snímač otáčok.]]&#039;&#039; 2012.&lt;br /&gt;
* Boráros, Gál:    &#039;&#039;[[Zbernica i2c: FM rádio]].&#039;&#039; 2012.&lt;br /&gt;
* Berčák, Harmata: &#039;&#039;[[Projekt: Hodiny A|Hodiny na orientačný beh I.]]&#039;&#039; 2012.&lt;br /&gt;
* Géczy, Kamenský: &#039;&#039;[[Projekt: Hodiny B|Hodiny na orientačný beh II.]]&#039;&#039; 2012.&lt;br /&gt;
&lt;br /&gt;
* Szolik, Šnyr:    &#039;&#039;[[Projekt: Snímač teploty SMT160|Snímač teploty SMT160]]&#039;&#039; 2012.&lt;br /&gt;
* Gálik, Gogola:   &#039;&#039;[[Projekt: Dvojosí akcelerometer A|Dvojosí akcelerometer I.]]&#039;&#039; 2012.&lt;br /&gt;
* Virág, Topoli:   &#039;&#039;[[Projekt: Dvojosí akcelerometer B|Dvojosí akcelerometer II.]]&#039;&#039; 2012.&lt;br /&gt;
* Statečný:        &#039;&#039;[[Zbernica i2c: SHT11|Zbernica i2c: snímač teploty a vlhkosti SHT11]]&#039;&#039; 2012.&lt;br /&gt;
* Vincze, Rozsár:  &#039;&#039;[[Projekt: Snímač farby ColorPal|Snímač farby ColorPal]]&#039;&#039; 2012.&lt;br /&gt;
* Baláž, Kupčiha:  &#039;&#039;[[Projekt: Snímač teploty DS18B20|Snímač teploty DS18B20]]&#039;&#039; 2012.&lt;br /&gt;
* Mazúch, Lovaš, Oravec: &#039;&#039;[[1-Riadková kamera TSLR1401|1-Riadková kamera TSLR1401]]&#039;&#039; 2012.&lt;br /&gt;
* Špitálová: [[Parkovací senzor]] 2012.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=SOS_maj%C3%A1k&amp;diff=18819</id>
		<title>SOS maják</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=SOS_maj%C3%A1k&amp;diff=18819"/>
		<updated>2026-05-24T11:15:16Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Čo by som urobil inak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu MIPS / LS2026 - &#039;&#039;&#039;Rostyslav Fursov&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zadanie ==&lt;br /&gt;
&lt;br /&gt;
Cieľom úlohy bolo vytvoriť program v jazyku C pre mikroprocesor ATmega328P, ktorý simuluje optický maják vysielajúci medzinárodný núdzový signál SOS (... --- ...). Program musí bežať v nekonečnej slučke a dodržiavať štandardizované časové intervaly pre Morseovu abecedu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Literatúra:&#039;&#039;&#039; &lt;br /&gt;
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]&lt;br /&gt;
* [http://www.humanbenchmark.com/tests/reactiontime/index.php Vyskúšajte si zmerať reakciu on-line]&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;
=== Teoretický rozbor (Pravidlá morzeovky) ===&lt;br /&gt;
&lt;br /&gt;
Základom riešenia je dodržanie medzinárodného štandardu pre Morseovu abecedu. Aby bol signál SOS čitateľný pre kohokoľvek, musí program striktne dodržiavať pomery medzi svetelným impulzom a tichom.&lt;br /&gt;
&lt;br /&gt;
Definoval som základnú časovú jednotku T = 100 ms. Všetky ostatné intervaly sú násobkom tejto jednotky:&lt;br /&gt;
&lt;br /&gt;
• Bodka (dot): trvá presne 1T (100 ms).&lt;br /&gt;
&lt;br /&gt;
• Čiarka (dash): trvá presne 3T (300 ms).&lt;br /&gt;
&lt;br /&gt;
• Medzera medzi prvkami (v rámci jedného písmena): trvá 1T (100 ms).&lt;br /&gt;
&lt;br /&gt;
• Medzera medzi písmenami (S a O): trvá 3T (300 ms).&lt;br /&gt;
&lt;br /&gt;
• Medzera medzi slovami (koniec sekvencie SOS): trvá 7T (700 ms).&lt;br /&gt;
&lt;br /&gt;
=== Hardvérová konfigurácia ===&lt;br /&gt;
Mikrokontrolér: ATmega328P (16 MHz)&lt;br /&gt;
&lt;br /&gt;
• Svetelný výstup: Modrá LED dióda.&lt;br /&gt;
&lt;br /&gt;
• Prepojenie: Nepájivé kontaktné pole (breadboard), prepojovacie vodiče a USB kábel pre napájanie a sériový prenos.&lt;br /&gt;
&lt;br /&gt;
• Ochranný prvok: Rezistor s odporom 220 omov.&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
&lt;br /&gt;
Riadiaci program je implementovaný v jazyku C pre architektúru AVR. Logika programu je postavená na nekonečnej slučke while, ktorá cyklicky vykonáva sekvenciu medzinárodného núdzového signálu SOS.&lt;br /&gt;
Technické detaily implementácie: &lt;br /&gt;
&lt;br /&gt;
• Konfigurácia portov: Vo funkcii inicializacia() som nastavil pin PB5 ako výstupný pomocou registra smeru dát DDRB. Ostatné piny portu ostali nezmenené.&lt;br /&gt;
&lt;br /&gt;
• Práca s bitmi: Pre manipuláciu s jednotlivými bitmi som použil makrá set_bit a clear_bit. Tento spôsob zabezpečuje bezpečnú zmenu stavu pinu bez ovplyvnenia zvyšku registra PORTB.&lt;br /&gt;
&lt;br /&gt;
• Štruktúra cyklov: Jednotlivé znaky SOS sekvencie som rozdelil do cyklov for. Každý cyklus zodpovedá jednému písmenu, čo zjednodušuje úpravu počtu impulzov.&lt;br /&gt;
&lt;br /&gt;
• Časovanie: Použil som knižnicu &amp;lt;util/delay.h&amp;gt; s konštantou T = 100ms. Výsledné pauzy medzi písmenami 3T a slovami 7T som vyskladal kombináciou základného oneskorenia v cykloch a doplnkových pauz za nimi.&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;syntaxhighlight  lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#define F_CPU 16000000UL&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;
&lt;br /&gt;
#define set_bit(ADDRESS,BIT) (ADDRESS |= (1&amp;lt;&amp;lt;BIT)) // Nastaví konkrétny bit na 1 (Log 1)&lt;br /&gt;
#define clear_bit(ADDRESS,BIT) (ADDRESS &amp;amp;= ~(1&amp;lt;&amp;lt;BIT)) // Vynuluje konkrétny bit na 0 (Log 0)&lt;br /&gt;
&lt;br /&gt;
// Zabudovana dioda pre Arduino Uno)&lt;br /&gt;
#define LED_PIN PB5&lt;br /&gt;
&lt;br /&gt;
// Zvolil som základnu časovu jednotku Morseovej abecedy (1T = 100ms)&lt;br /&gt;
#define T 100&lt;br /&gt;
&lt;br /&gt;
void inicializacia() {&lt;br /&gt;
    // Nastavenie pinu LED_PIN ako výstupného&lt;br /&gt;
    set_bit(DDRB, LED_PIN);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    inicializacia();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        // Písmeno S (. . .) &lt;br /&gt;
        for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
            set_bit(PORTB, LED_PIN);   // LED zapne&lt;br /&gt;
            _delay_ms(T);              // Trvanie bodky (1T)&lt;br /&gt;
            clear_bit(PORTB, LED_PIN); // LED vypne&lt;br /&gt;
            _delay_ms(T);              // Medzera medzi prvkami (1T)&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // Medzera medzi písmenami (3T celkovo, 1T už máme z cyklu, pridáme 2T)&lt;br /&gt;
        _delay_ms(2 * T); &lt;br /&gt;
&lt;br /&gt;
        // Písmeno O (_ _ _)&lt;br /&gt;
        for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
            set_bit(PORTB, LED_PIN);   // LED zapne&lt;br /&gt;
            _delay_ms(3 * T);          // Trvanie čiarky (3T)&lt;br /&gt;
            clear_bit(PORTB, LED_PIN); // LED vypne&lt;br /&gt;
            _delay_ms(T);              // Medzera medzi prvkami (1T)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Medzera medzi písmenami (3T celkovo, 1T už máme z cyklu, pridáme 2T)&lt;br /&gt;
        _delay_ms(2 * T);&lt;br /&gt;
&lt;br /&gt;
        // Písmeno S (. . .) &lt;br /&gt;
        for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
            set_bit(PORTB, LED_PIN);   // LED zapne&lt;br /&gt;
            _delay_ms(T);              // Trvanie bodky (1T)&lt;br /&gt;
            clear_bit(PORTB, LED_PIN); // LED vypne&lt;br /&gt;
            _delay_ms(T);              // Medzera medzi prvkami (1T)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Medzera medzi SOS sekvenciami (7T celkovo, 1T už máme, pridáme 6T)&lt;br /&gt;
        _delay_ms(6 * T); &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:MIPS_Projekt_Rostyslav_Fursov.zip | zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Funkčnosť som overil vizuálnou kontrolou:&lt;br /&gt;
Vizuálny test: Po nahratí kódu LED dióda na breadboarde správne cykluje sekvenciu SOS (3x krátky, 3x dlhý, 3x krátky blik).&lt;br /&gt;
Časovanie: Overil som, že pauzy medzi písmenami a dĺžka impulzov zodpovedajú nastaveným časom T a 3T.&lt;br /&gt;
Hardvér: Zapojenie s 220om rezistorom je stabilné a LED pracuje bez chýb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;youtube&amp;gt;QpGNhgCLjSs&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Čo by som urobil inak ==&lt;br /&gt;
&lt;br /&gt;
Použitie časovačov: Namiesto funkcie _delay_ms, ktorá blokuje procesor, by som využil hardvérové časovače a prerušenia. To by umožnilo mikrokontroléru vykonávať iné úlohy počas čakania na ďalší blik. Nastaviteľná rýchlosť: Pridal by som potenciometer na analógový vstup, ktorým by bolo možné plynule meniť dĺžku základnej časovej jednotky T (rýchlosť vysielania).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]] [[Category:MIPS]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18774</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18774"/>
		<updated>2026-05-16T18:51:31Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
Presná a spoľahlivá lokalizácia je jedným z kľúčových problémov mobilnej robotiky. Obvykle sa tento problém rieši metódami simultánnej lokalizácie a mapovania (SLAM). Napriek tomu sa však často používajú aj externé lokalizačné systémy, či už pre riadenie v uzavretej slučke, alebo pre meranie polohy. WhyCon je rýchly a presný vizuálny softvér pre lokalizáciu viacerých robotov. Jadrom je nový a efektívny algoritmus pre rozpoznávanie čierno-bielych vzorov. Metóda je robustná a odolná voči zmenám osvetlenia, má presnosť na úrovni pixelov a jej výpočtová zložitosť nezávisí od veľkosti spracovaného obrazu. Je dostatočne rýchla a zvláda spracovať stovky snímkov za sekundu pomocou bežného počítača a lacnej kamery, pričom dosahuje až milimetrovú presnosť. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
* inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
* spracovanie iba relevantných pixelov,&lt;br /&gt;
* uložené medzivýsledky vo fronte pozícií.&lt;br /&gt;
&lt;br /&gt;
Podrobný opis algoritmu je zachytený na prednáške T. Krajníka &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VDdwq3Vm97M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ku ktorej sú k dispozícii aj&lt;br /&gt;
* [https://robotika.sk/seminar/2018/whycon.pdf slajdy]&lt;br /&gt;
* [https://github.com/gestom/whycon-orig github repo]&lt;br /&gt;
* KRAJNÍK, Tomáš, et al. &#039;&#039;[https://link.springer.com/article/10.1007/s10846-014-0041-x A practical multirobot localization system]&#039;&#039;. Journal of Intelligent &amp;amp; Robotic Systems, 2014, 76.3: 539-562.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WhyCon detekcia je v podstate séria filtrov, kde každý krok zúži počet možných kandidátov. Celý postup je vidno na nasledovnom obrázku:&lt;br /&gt;
* Krok 1 — Šedotónový + blur. Farba nás nezaujíma (marker je čiernobiely), Gaussian blur odstráni šum.&lt;br /&gt;
* Krok 2 — Adaptívny prah. Každý pixel porovná so svojím okolím (51×51 px okno) a rozhodne: tmavší než priemer → biela, svetlejší → čierna. Preto to funguje aj pri nerovnomernom osvetlení — na rozdiel od globálneho prahu, ktorý by v tmavom rohu videl &amp;quot;všetko čierne&amp;quot;.&lt;br /&gt;
* Krok 3 — Kontúry s hierarchiou. OpenCV nájde hranice všetkých bielych oblastí (v tomto snímku 1021). Kľúčové je RETR_TREE — zachová informáciu, ktorá kontúra je vnútri ktorej (rodič → dieťa).&lt;br /&gt;
* Krok 4 — Filter na cirkularitu. Z 1021 kontúr zostanú len 3 kruhové. Cirkularita = 4π × plocha / obvod². Dokonalý kruh = 1.0, stena bludiska ≈ 0.1. Filtrujeme na ≥ 0.55.&lt;br /&gt;
* Krok 5 — Rodič-dieťa test. Toto je jadro WhyConu. Hľadáme kruhovú kontúru, ktorá má vnútri seba ďalšiu kruhovú kontúru — čiže prstenec s kruhovým stredom. Navyše kontrolujeme pomer plôch: pri pomere priemerov 2:1 je pomer plôch * 0.25. V tvojom snímku vyšiel 0.24 — presne sedí.&lt;br /&gt;
* Krok 6 — Najlepší kandidát. Ak prešlo viacero, vyberie sa ten s najvyšším skóre (kombinácia cirkularity oboch kruhov a veľkosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;text-align: center;&#039;&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo2.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;Jednotlivé kroky algoritmu WhyCon.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WhyCon Tracker — Kompletný návod (Ubuntu Linux) podľa Claude.AI ==&lt;br /&gt;
&lt;br /&gt;
Tento návod ťa prevedie celým procesom od inštalácie softvéru, cez kalibráciu kamery, až po spracovanie videa, vykreslenie trajektórie a generovanie videa s postupne rastúcou stopou robota.&lt;br /&gt;
&lt;br /&gt;
== 1. Inštalácia základných závislostí ==&lt;br /&gt;
&lt;br /&gt;
Nainštaluj Python 3 a pip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install python3 python3-pip python3-venv ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvor si virtuálne prostredie (odporúčané):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 -m venv ~/whycon-env&lt;br /&gt;
source ~/whycon-env/bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nainštaluj Python knižnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install opencv-python numpy matplotlib&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak by &amp;lt;code&amp;gt;opencv-python&amp;lt;/code&amp;gt; hlásil chýbajúce systémové knižnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install libgl1-mesa-glx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Priprav pracovný priečinok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p ~/whycon-tracking/output&lt;br /&gt;
cd ~/whycon-tracking&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skopíruj sem súbor &amp;lt;code&amp;gt;whycon_tracker.py&amp;lt;/code&amp;gt;, tvoje videá a prípadne &amp;lt;code&amp;gt;calibration.npz&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Inštalácia GPU akcelerácie (voliteľné) ==&lt;br /&gt;
&lt;br /&gt;
Ak máš NVIDIA GPU, môžeš urýchliť dekódovanie videa. Toto je úplne voliteľné — skript funguje aj bez GPU, len pomalšie.&lt;br /&gt;
&lt;br /&gt;
=== Predpoklady ===&lt;br /&gt;
&lt;br /&gt;
Potrebuješ nainštalovaný NVIDIA driver. Over si:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nvidia-smi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak príkaz funguje a vidíš svoju GPU, máš driver v poriadku.&lt;br /&gt;
&lt;br /&gt;
=== FFmpeg s NVDEC podporou ===&lt;br /&gt;
&lt;br /&gt;
Štandardný FFmpeg z Ubuntu repozitárov zvyčajne podporuje NVDEC. Over si:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -hwaccels&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V zozname by si mal vidieť &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt;. Ak tam nie je, nainštaluj FFmpeg s NVIDIA podporou:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak ani potom &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; nevidíš, skús nainštalovať FFmpeg zo snap alebo z oficiálneho buildu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Snap verzia (zvyčajne obsahuje NVDEC):&lt;br /&gt;
sudo snap install ffmpeg&lt;br /&gt;
&lt;br /&gt;
# Alebo stiahni statický build:&lt;br /&gt;
# https://johnvansickle.com/ffmpeg/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overenie funkčnosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Test GPU dekódovania na tvojom videu:&lt;br /&gt;
ffmpeg -hwaccel cuda -i tvoje_video.mp4 -f null - 2&amp;gt;&amp;amp;1 | tail -5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak prebehne bez chyby, GPU akcelerácia funguje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Príprava markera a šachovnice ==&lt;br /&gt;
&lt;br /&gt;
=== WhyCon marker ===&lt;br /&gt;
&lt;br /&gt;
WhyCon marker je čierny disk s bielym kruhovým stredom. Pomer vonkajšieho a vnútorného priemeru by mal byť približne 2:1 (napr. vonkajší 122 mm, vnútorný 61 mm).&lt;br /&gt;
&lt;br /&gt;
Hotový marker na stiahnutie:&lt;br /&gt;
* https://github.com/jiriUlr/whycon-ros (súbor &amp;lt;code&amp;gt;id/test.pdf&amp;lt;/code&amp;gt;, priemer 122 mm)&lt;br /&gt;
&lt;br /&gt;
Vytlač na matný papier. Zmeraj a zapíš si presný vonkajší priemer v milimetroch.&lt;br /&gt;
&lt;br /&gt;
=== Kalibračná šachovnica ===&lt;br /&gt;
&lt;br /&gt;
Stiahni si šachovnicový vzor:&lt;br /&gt;
* https://markhedleyjones.com/projects/calibration-checkerboard-collection (SVG/PDF, rôzne veľkosti)&lt;br /&gt;
* https://calib.io/pages/camera-calibration-pattern-generator (vlastné rozmery)&lt;br /&gt;
* https://github.com/opencv/opencv/blob/4.x/doc/pattern.png (9×6 z OpenCV)&lt;br /&gt;
&lt;br /&gt;
Vytlač na A4 a nalep na tuhý podklad (kartón, clipboard). Pri tlači &#039;&#039;&#039;vypni škálovanie&#039;&#039;&#039; — tlač na 100%.&lt;br /&gt;
&lt;br /&gt;
Zapamätaj si:&lt;br /&gt;
* &#039;&#039;&#039;Počet vnútorných rohov&#039;&#039;&#039; (nie štvorčekov!) — šachovnica 11×8 štvorčekov = 10×7 rohov&lt;br /&gt;
* &#039;&#039;&#039;Veľkosť štvorčeka&#039;&#039;&#039; v mm — odmeraj po vytlačení&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Nahrávanie videí ==&lt;br /&gt;
&lt;br /&gt;
=== Nastavenie kamery ===&lt;br /&gt;
&lt;br /&gt;
Upevni kameru na stabilné miesto nad bludisko (statív, konzola, strop). Nastav:&lt;br /&gt;
* Najvyššie dostupné rozlíšenie (ideálne 4K)&lt;br /&gt;
* Pevný fokus (zamkni autofokus) na vzdialenosť bludiska&lt;br /&gt;
* Rovnaké nastavenie pre kalibráciu aj nahrávanie robota&lt;br /&gt;
&lt;br /&gt;
=== Kalibračné video (60–90 sekúnd) ===&lt;br /&gt;
&lt;br /&gt;
Vezmi šachovnicu na tuhom podklade a pomaly ju presúvaj a nakláňaj pred kamerou:&lt;br /&gt;
* V rôznych častiach obrazu (stred, rohy, hrany)&lt;br /&gt;
* Pod rôznymi uhlami (naklonená do všetkých strán)&lt;br /&gt;
* V rôznych vzdialenostiach&lt;br /&gt;
* Pomaly — nesmie byť rozmazaná&lt;br /&gt;
&lt;br /&gt;
=== Video s robotom ===&lt;br /&gt;
&lt;br /&gt;
Spusti nahrávanie, potom robota. Uisti sa, že WhyCon marker na robote je viditeľný z pozície kamery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Spracovanie — príklady použitia ==&lt;br /&gt;
&lt;br /&gt;
Pred spustením sa uisti, že máš aktivovaný virtuálny environment a si v správnom priečinku:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/whycon-env/bin/activate&lt;br /&gt;
cd ~/whycon-tracking&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kompletný pipeline (kalibrácia + tracking + trail video) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --calib kalibracia.mp4 \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --board-size 9,6 \&lt;br /&gt;
    --square-size 25.0 \&lt;br /&gt;
    --marker-diam 122.0 \&lt;br /&gt;
    --trail-video&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Len tracking s uloženou kalibráciou ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --use-calib calibration.npz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking bez kalibrácie (len pixelové súradnice) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S GPU akceleráciou ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --gpu \&lt;br /&gt;
    --trail-video&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dlhé video — zrýchlenie spracovania ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Každý 3. snímok (10 fps pri 30fps videu):&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video dlhe_video.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --every-n 3 \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --gpu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video s mizajúcou stopou ===&lt;br /&gt;
&lt;br /&gt;
Namiesto celej stopy od začiatku sa zobrazí len posledných N sekúnd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Stopa mizne po 10 sekundách:&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-fade 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video s bodkami namiesto čiar (odolné voči chybným detekciám) ===&lt;br /&gt;
&lt;br /&gt;
Ak detekcia občas &amp;quot;preskočí&amp;quot; na nesprávne miesto, spojité čiary vytvárajú rušivé skoky naprieč celým obrazom. Bodkový režim kreslí každú detekciu ako samostatný bod — správne detekcie vytvoria kvázi spojitú stopu, zatiaľ čo ojedinelé chybné detekcie budú len nevýrazné izolované body:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-dots&lt;br /&gt;
&lt;br /&gt;
# Kombinovateľné s GPU a fade:&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video dlhe_video.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-dots \&lt;br /&gt;
    --trail-fade 15 \&lt;br /&gt;
    --gpu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Prehľad všetkých parametrov ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Predvolená hodnota !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--video&amp;lt;/code&amp;gt; || (povinný) || Cesta k videu s robotom&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--calib&amp;lt;/code&amp;gt; || — || Cesta ku kalibračnému videu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--use-calib&amp;lt;/code&amp;gt; || — || Cesta k uloženej kalibrácii (.npz)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--no-calib&amp;lt;/code&amp;gt; || — || Preskočiť kalibráciu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--board-size&amp;lt;/code&amp;gt; || 9,6 || Vnútorné rohy šachovnice (šírka,výška)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--square-size&amp;lt;/code&amp;gt; || 25.0 || Veľkosť štvorčeka šachovnice v mm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--marker-diam&amp;lt;/code&amp;gt; || 122.0 || Vonkajší priemer WhyCon markera v mm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--every-n&amp;lt;/code&amp;gt; || 1 || Spracovať každý N-tý snímok&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--output-dir&amp;lt;/code&amp;gt; || ./output || Výstupný priečinok&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-video&amp;lt;/code&amp;gt; || — || Vygenerovať video s rastúcou stopou&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-dots&amp;lt;/code&amp;gt; || — || Kresliť bodky namiesto čiar (odolné voči chybám)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-fade&amp;lt;/code&amp;gt; || 0 || Dĺžka mizajúcej stopy v sekundách (0 = celá stopa)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--gpu&amp;lt;/code&amp;gt; || — || Použiť NVIDIA GPU na dekódovanie videa&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Výstupné súbory ==&lt;br /&gt;
&lt;br /&gt;
Po spracovaní nájdeš v &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt; priečinku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Súbor !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_overlay.png&amp;lt;/code&amp;gt; || Trajektória na obrázku bludiska, farba = čas&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_timeseries.png&amp;lt;/code&amp;gt; || Priebehy X, Y a rýchlosti v čase&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_xy.png&amp;lt;/code&amp;gt; || Trajektória zhora (XY graf)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_data.csv&amp;lt;/code&amp;gt; || Surové dáta: snímok, čas, pixel X, pixel Y&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;positions.npy&amp;lt;/code&amp;gt; || Dáta v NumPy formáte pre ďalšie spracovanie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;calibration.npz&amp;lt;/code&amp;gt; || Kalibrácia kamery (ak bola spustená)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trail_video.mp4&amp;lt;/code&amp;gt; || Video so stopou z čiar (ak &amp;lt;code&amp;gt;--trail-video&amp;lt;/code&amp;gt; bez &amp;lt;code&amp;gt;--trail-dots&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trail_video_dots.mp4&amp;lt;/code&amp;gt; || Video so stopou z bodiek (ak &amp;lt;code&amp;gt;--trail-video --trail-dots&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
=== Skript nenašiel šachovnicu ===&lt;br /&gt;
&lt;br /&gt;
* Skontroluj &amp;lt;code&amp;gt;--board-size&amp;lt;/code&amp;gt; — počítaj vnútorné rohy, nie štvorčeky&lt;br /&gt;
* Šachovnica je príliš malá — drž ju bližšie ku kamere&lt;br /&gt;
* Skús rôzne rozmery: &amp;lt;code&amp;gt;9,6&amp;lt;/code&amp;gt; potom &amp;lt;code&amp;gt;10,7&amp;lt;/code&amp;gt; potom &amp;lt;code&amp;gt;8,5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skript nenašiel marker ===&lt;br /&gt;
&lt;br /&gt;
* Marker musí mať dostatočný kontrast (biele centrum, čierny prstenec)&lt;br /&gt;
* Pri slabom osvetlení zvýš jas pri nahrávaní&lt;br /&gt;
* Ak je marker malý v obraze, skús znížiť &amp;lt;code&amp;gt;min_area&amp;lt;/code&amp;gt; v zdrojovom kóde&lt;br /&gt;
&lt;br /&gt;
=== Trajektória má výpadky ===&lt;br /&gt;
&lt;br /&gt;
* Robot bol zakrytý stenou — to je normálne&lt;br /&gt;
* Pri šikmom pohľade sa marker v niektorých častiach detekuje horšie&lt;br /&gt;
* Medzery sa dajú vyplniť interpoláciou v post-processingu&lt;br /&gt;
&lt;br /&gt;
=== Trajektória má náhodné skoky ===&lt;br /&gt;
&lt;br /&gt;
* Falošné detekcie kruhových prvkov v scéne&lt;br /&gt;
* Skús zvýšiť &amp;lt;code&amp;gt;min_area&amp;lt;/code&amp;gt; alebo znížiť &amp;lt;code&amp;gt;max_area&amp;lt;/code&amp;gt; v zdrojovom kóde&lt;br /&gt;
* Pomôže aj mediánový filter na výstupné súradnice&lt;br /&gt;
&lt;br /&gt;
=== Trail video je príliš veľké ===&lt;br /&gt;
&lt;br /&gt;
* Použi &amp;lt;code&amp;gt;--every-n 2&amp;lt;/code&amp;gt; alebo &amp;lt;code&amp;gt;--every-n 3&amp;lt;/code&amp;gt; na zníženie počtu spracovaných snímkov&lt;br /&gt;
* FFmpeg re-encoding (automatický) by mal veľkosť výrazne znížiť&lt;br /&gt;
* Pre menšie rozlíšenie výstupu uprav zdrojový kód (pridaj resize pred zápisom)&lt;br /&gt;
&lt;br /&gt;
=== GPU problémy ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt; nefunguje → nainštaluj NVIDIA driver: &amp;lt;code&amp;gt;sudo apt install nvidia-driver-535&amp;lt;/code&amp;gt;&lt;br /&gt;
* FFmpeg nemá &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; → preinštaluj FFmpeg alebo použi snap verziu&lt;br /&gt;
* GPU dekódovanie padá → skús bez &amp;lt;code&amp;gt;--gpu&amp;lt;/code&amp;gt;, CPU verzia je stabilnejšia&lt;br /&gt;
&lt;br /&gt;
=== Import error cv2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Alternatíva bez GUI závislostí:&lt;br /&gt;
pip install opencv-python-headless&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skús si sám... ==&lt;br /&gt;
&lt;br /&gt;
Celý projekt nájdete na https://github.com/baloghr/kobuki-whycon&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18771</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18771"/>
		<updated>2026-05-16T18:41:11Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* 8. Riešenie problémov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
Presná a spoľahlivá lokalizácia je jedným z kľúčových problémov mobilnej robotiky. Obvykle sa tento problém rieši metódami simultánnej lokalizácie a mapovania (SLAM). Napriek tomu sa však často používajú aj externé lokalizačné systémy, či už pre riadenie v uzavretej slučke, alebo pre meranie polohy. WhyCon je rýchly a presný vizuálny softvér pre lokalizáciu viacerých robotov. Jadrom je nový a efektívny algoritmus pre rozpoznávanie čierno-bielych vzorov. Metóda je robustná a odolná voči zmenám osvetlenia, má presnosť na úrovni pixelov a jej výpočtová zložitosť nezávisí od veľkosti spracovaného obrazu. Je dostatočne rýchla a zvláda spracovať stovky snímkov za sekundu pomocou bežného počítača a lacnej kamery, pričom dosahuje až milimetrovú presnosť. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
* inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
* spracovanie iba relevantných pixelov,&lt;br /&gt;
* uložené medzivýsledky vo fronte pozícií.&lt;br /&gt;
&lt;br /&gt;
Podrobný opis algoritmu je zachytený na prednáške T. Krajníka &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VDdwq3Vm97M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ku ktorej sú k dispozícii aj&lt;br /&gt;
* [https://robotika.sk/seminar/2018/whycon.pdf slajdy]&lt;br /&gt;
* [https://github.com/gestom/whycon-orig github repo]&lt;br /&gt;
* KRAJNÍK, Tomáš, et al. &#039;&#039;[https://link.springer.com/article/10.1007/s10846-014-0041-x A practical multirobot localization system]&#039;&#039;. Journal of Intelligent &amp;amp; Robotic Systems, 2014, 76.3: 539-562.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WhyCon detekcia je v podstate séria filtrov, kde každý krok zúži počet možných kandidátov. Celý postup je vidno na nasledovnom obrázku:&lt;br /&gt;
* Krok 1 — Šedotónový + blur. Farba nás nezaujíma (marker je čiernobiely), Gaussian blur odstráni šum.&lt;br /&gt;
* Krok 2 — Adaptívny prah. Každý pixel porovná so svojím okolím (51×51 px okno) a rozhodne: tmavší než priemer → biela, svetlejší → čierna. Preto to funguje aj pri nerovnomernom osvetlení — na rozdiel od globálneho prahu, ktorý by v tmavom rohu videl &amp;quot;všetko čierne&amp;quot;.&lt;br /&gt;
* Krok 3 — Kontúry s hierarchiou. OpenCV nájde hranice všetkých bielych oblastí (v tomto snímku 1021). Kľúčové je RETR_TREE — zachová informáciu, ktorá kontúra je vnútri ktorej (rodič → dieťa).&lt;br /&gt;
* Krok 4 — Filter na cirkularitu. Z 1021 kontúr zostanú len 3 kruhové. Cirkularita = 4π × plocha / obvod². Dokonalý kruh = 1.0, stena bludiska ≈ 0.1. Filtrujeme na ≥ 0.55.&lt;br /&gt;
* Krok 5 — Rodič-dieťa test. Toto je jadro WhyConu. Hľadáme kruhovú kontúru, ktorá má vnútri seba ďalšiu kruhovú kontúru — čiže prstenec s kruhovým stredom. Navyše kontrolujeme pomer plôch: pri pomere priemerov 2:1 je pomer plôch * 0.25. V tvojom snímku vyšiel 0.24 — presne sedí.&lt;br /&gt;
* Krok 6 — Najlepší kandidát. Ak prešlo viacero, vyberie sa ten s najvyšším skóre (kombinácia cirkularity oboch kruhov a veľkosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;text-align: center;&#039;&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo2.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;Jednotlivé kroky algoritmu WhyCon.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WhyCon Tracker — Kompletný návod (Ubuntu Linux) podľa Claude.AI ==&lt;br /&gt;
&lt;br /&gt;
Tento návod ťa prevedie celým procesom od inštalácie softvéru, cez kalibráciu kamery, až po spracovanie videa, vykreslenie trajektórie a generovanie videa s postupne rastúcou stopou robota.&lt;br /&gt;
&lt;br /&gt;
== 1. Inštalácia základných závislostí ==&lt;br /&gt;
&lt;br /&gt;
Nainštaluj Python 3 a pip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install python3 python3-pip python3-venv ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvor si virtuálne prostredie (odporúčané):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 -m venv ~/whycon-env&lt;br /&gt;
source ~/whycon-env/bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nainštaluj Python knižnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install opencv-python numpy matplotlib&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak by &amp;lt;code&amp;gt;opencv-python&amp;lt;/code&amp;gt; hlásil chýbajúce systémové knižnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install libgl1-mesa-glx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Priprav pracovný priečinok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p ~/whycon-tracking/output&lt;br /&gt;
cd ~/whycon-tracking&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skopíruj sem súbor &amp;lt;code&amp;gt;whycon_tracker.py&amp;lt;/code&amp;gt;, tvoje videá a prípadne &amp;lt;code&amp;gt;calibration.npz&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Inštalácia GPU akcelerácie (voliteľné) ==&lt;br /&gt;
&lt;br /&gt;
Ak máš NVIDIA GPU, môžeš urýchliť dekódovanie videa. Toto je úplne voliteľné — skript funguje aj bez GPU, len pomalšie.&lt;br /&gt;
&lt;br /&gt;
=== Predpoklady ===&lt;br /&gt;
&lt;br /&gt;
Potrebuješ nainštalovaný NVIDIA driver. Over si:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nvidia-smi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak príkaz funguje a vidíš svoju GPU, máš driver v poriadku.&lt;br /&gt;
&lt;br /&gt;
=== FFmpeg s NVDEC podporou ===&lt;br /&gt;
&lt;br /&gt;
Štandardný FFmpeg z Ubuntu repozitárov zvyčajne podporuje NVDEC. Over si:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -hwaccels&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V zozname by si mal vidieť &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt;. Ak tam nie je, nainštaluj FFmpeg s NVIDIA podporou:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak ani potom &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; nevidíš, skús nainštalovať FFmpeg zo snap alebo z oficiálneho buildu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Snap verzia (zvyčajne obsahuje NVDEC):&lt;br /&gt;
sudo snap install ffmpeg&lt;br /&gt;
&lt;br /&gt;
# Alebo stiahni statický build:&lt;br /&gt;
# https://johnvansickle.com/ffmpeg/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overenie funkčnosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Test GPU dekódovania na tvojom videu:&lt;br /&gt;
ffmpeg -hwaccel cuda -i tvoje_video.mp4 -f null - 2&amp;gt;&amp;amp;1 | tail -5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak prebehne bez chyby, GPU akcelerácia funguje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Príprava markera a šachovnice ==&lt;br /&gt;
&lt;br /&gt;
=== WhyCon marker ===&lt;br /&gt;
&lt;br /&gt;
WhyCon marker je čierny disk s bielym kruhovým stredom. Pomer vonkajšieho a vnútorného priemeru by mal byť približne 2:1 (napr. vonkajší 122 mm, vnútorný 61 mm).&lt;br /&gt;
&lt;br /&gt;
Hotový marker na stiahnutie:&lt;br /&gt;
* https://github.com/jiriUlr/whycon-ros (súbor &amp;lt;code&amp;gt;id/test.pdf&amp;lt;/code&amp;gt;, priemer 122 mm)&lt;br /&gt;
&lt;br /&gt;
Vytlač na matný papier. Zmeraj a zapíš si presný vonkajší priemer v milimetroch.&lt;br /&gt;
&lt;br /&gt;
=== Kalibračná šachovnica ===&lt;br /&gt;
&lt;br /&gt;
Stiahni si šachovnicový vzor:&lt;br /&gt;
* https://markhedleyjones.com/projects/calibration-checkerboard-collection (SVG/PDF, rôzne veľkosti)&lt;br /&gt;
* https://calib.io/pages/camera-calibration-pattern-generator (vlastné rozmery)&lt;br /&gt;
* https://github.com/opencv/opencv/blob/4.x/doc/pattern.png (9×6 z OpenCV)&lt;br /&gt;
&lt;br /&gt;
Vytlač na A4 a nalep na tuhý podklad (kartón, clipboard). Pri tlači &#039;&#039;&#039;vypni škálovanie&#039;&#039;&#039; — tlač na 100%.&lt;br /&gt;
&lt;br /&gt;
Zapamätaj si:&lt;br /&gt;
* &#039;&#039;&#039;Počet vnútorných rohov&#039;&#039;&#039; (nie štvorčekov!) — šachovnica 11×8 štvorčekov = 10×7 rohov&lt;br /&gt;
* &#039;&#039;&#039;Veľkosť štvorčeka&#039;&#039;&#039; v mm — odmeraj po vytlačení&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Nahrávanie videí ==&lt;br /&gt;
&lt;br /&gt;
=== Nastavenie kamery ===&lt;br /&gt;
&lt;br /&gt;
Upevni kameru na stabilné miesto nad bludisko (statív, konzola, strop). Nastav:&lt;br /&gt;
* Najvyššie dostupné rozlíšenie (ideálne 4K)&lt;br /&gt;
* Pevný fokus (zamkni autofokus) na vzdialenosť bludiska&lt;br /&gt;
* Rovnaké nastavenie pre kalibráciu aj nahrávanie robota&lt;br /&gt;
&lt;br /&gt;
=== Kalibračné video (60–90 sekúnd) ===&lt;br /&gt;
&lt;br /&gt;
Vezmi šachovnicu na tuhom podklade a pomaly ju presúvaj a nakláňaj pred kamerou:&lt;br /&gt;
* V rôznych častiach obrazu (stred, rohy, hrany)&lt;br /&gt;
* Pod rôznymi uhlami (naklonená do všetkých strán)&lt;br /&gt;
* V rôznych vzdialenostiach&lt;br /&gt;
* Pomaly — nesmie byť rozmazaná&lt;br /&gt;
&lt;br /&gt;
=== Video s robotom ===&lt;br /&gt;
&lt;br /&gt;
Spusti nahrávanie, potom robota. Uisti sa, že WhyCon marker na robote je viditeľný z pozície kamery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Spracovanie — príklady použitia ==&lt;br /&gt;
&lt;br /&gt;
Pred spustením sa uisti, že máš aktivovaný virtuálny environment a si v správnom priečinku:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/whycon-env/bin/activate&lt;br /&gt;
cd ~/whycon-tracking&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kompletný pipeline (kalibrácia + tracking + trail video) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --calib kalibracia.mp4 \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --board-size 9,6 \&lt;br /&gt;
    --square-size 25.0 \&lt;br /&gt;
    --marker-diam 122.0 \&lt;br /&gt;
    --trail-video&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Len tracking s uloženou kalibráciou ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --use-calib calibration.npz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking bez kalibrácie (len pixelové súradnice) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S GPU akceleráciou ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --gpu \&lt;br /&gt;
    --trail-video&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dlhé video — zrýchlenie spracovania ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Každý 3. snímok (10 fps pri 30fps videu):&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video dlhe_video.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --every-n 3 \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --gpu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video s mizajúcou stopou ===&lt;br /&gt;
&lt;br /&gt;
Namiesto celej stopy od začiatku sa zobrazí len posledných N sekúnd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Stopa mizne po 10 sekundách:&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-fade 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video s bodkami namiesto čiar (odolné voči chybným detekciám) ===&lt;br /&gt;
&lt;br /&gt;
Ak detekcia občas &amp;quot;preskočí&amp;quot; na nesprávne miesto, spojité čiary vytvárajú rušivé skoky naprieč celým obrazom. Bodkový režim kreslí každú detekciu ako samostatný bod — správne detekcie vytvoria kvázi spojitú stopu, zatiaľ čo ojedinelé chybné detekcie budú len nevýrazné izolované body:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-dots&lt;br /&gt;
&lt;br /&gt;
# Kombinovateľné s GPU a fade:&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video dlhe_video.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-dots \&lt;br /&gt;
    --trail-fade 15 \&lt;br /&gt;
    --gpu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Prehľad všetkých parametrov ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Predvolená hodnota !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--video&amp;lt;/code&amp;gt; || (povinný) || Cesta k videu s robotom&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--calib&amp;lt;/code&amp;gt; || — || Cesta ku kalibračnému videu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--use-calib&amp;lt;/code&amp;gt; || — || Cesta k uloženej kalibrácii (.npz)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--no-calib&amp;lt;/code&amp;gt; || — || Preskočiť kalibráciu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--board-size&amp;lt;/code&amp;gt; || 9,6 || Vnútorné rohy šachovnice (šírka,výška)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--square-size&amp;lt;/code&amp;gt; || 25.0 || Veľkosť štvorčeka šachovnice v mm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--marker-diam&amp;lt;/code&amp;gt; || 122.0 || Vonkajší priemer WhyCon markera v mm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--every-n&amp;lt;/code&amp;gt; || 1 || Spracovať každý N-tý snímok&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--output-dir&amp;lt;/code&amp;gt; || ./output || Výstupný priečinok&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-video&amp;lt;/code&amp;gt; || — || Vygenerovať video s rastúcou stopou&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-dots&amp;lt;/code&amp;gt; || — || Kresliť bodky namiesto čiar (odolné voči chybám)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-fade&amp;lt;/code&amp;gt; || 0 || Dĺžka mizajúcej stopy v sekundách (0 = celá stopa)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--gpu&amp;lt;/code&amp;gt; || — || Použiť NVIDIA GPU na dekódovanie videa&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Výstupné súbory ==&lt;br /&gt;
&lt;br /&gt;
Po spracovaní nájdeš v &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt; priečinku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Súbor !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_overlay.png&amp;lt;/code&amp;gt; || Trajektória na obrázku bludiska, farba = čas&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_timeseries.png&amp;lt;/code&amp;gt; || Priebehy X, Y a rýchlosti v čase&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_xy.png&amp;lt;/code&amp;gt; || Trajektória zhora (XY graf)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_data.csv&amp;lt;/code&amp;gt; || Surové dáta: snímok, čas, pixel X, pixel Y&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;positions.npy&amp;lt;/code&amp;gt; || Dáta v NumPy formáte pre ďalšie spracovanie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;calibration.npz&amp;lt;/code&amp;gt; || Kalibrácia kamery (ak bola spustená)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trail_video.mp4&amp;lt;/code&amp;gt; || Video so stopou z čiar (ak &amp;lt;code&amp;gt;--trail-video&amp;lt;/code&amp;gt; bez &amp;lt;code&amp;gt;--trail-dots&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trail_video_dots.mp4&amp;lt;/code&amp;gt; || Video so stopou z bodiek (ak &amp;lt;code&amp;gt;--trail-video --trail-dots&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
=== Skript nenašiel šachovnicu ===&lt;br /&gt;
&lt;br /&gt;
* Skontroluj &amp;lt;code&amp;gt;--board-size&amp;lt;/code&amp;gt; — počítaj vnútorné rohy, nie štvorčeky&lt;br /&gt;
* Šachovnica je príliš malá — drž ju bližšie ku kamere&lt;br /&gt;
* Skús rôzne rozmery: &amp;lt;code&amp;gt;9,6&amp;lt;/code&amp;gt; potom &amp;lt;code&amp;gt;10,7&amp;lt;/code&amp;gt; potom &amp;lt;code&amp;gt;8,5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skript nenašiel marker ===&lt;br /&gt;
&lt;br /&gt;
* Marker musí mať dostatočný kontrast (biele centrum, čierny prstenec)&lt;br /&gt;
* Pri slabom osvetlení zvýš jas pri nahrávaní&lt;br /&gt;
* Ak je marker malý v obraze, skús znížiť &amp;lt;code&amp;gt;min_area&amp;lt;/code&amp;gt; v zdrojovom kóde&lt;br /&gt;
&lt;br /&gt;
=== Trajektória má výpadky ===&lt;br /&gt;
&lt;br /&gt;
* Robot bol zakrytý stenou — to je normálne&lt;br /&gt;
* Pri šikmom pohľade sa marker v niektorých častiach detekuje horšie&lt;br /&gt;
* Medzery sa dajú vyplniť interpoláciou v post-processingu&lt;br /&gt;
&lt;br /&gt;
=== Trajektória má náhodné skoky ===&lt;br /&gt;
&lt;br /&gt;
* Falošné detekcie kruhových prvkov v scéne&lt;br /&gt;
* Skús zvýšiť &amp;lt;code&amp;gt;min_area&amp;lt;/code&amp;gt; alebo znížiť &amp;lt;code&amp;gt;max_area&amp;lt;/code&amp;gt; v zdrojovom kóde&lt;br /&gt;
* Pomôže aj mediánový filter na výstupné súradnice&lt;br /&gt;
&lt;br /&gt;
=== Trail video je príliš veľké ===&lt;br /&gt;
&lt;br /&gt;
* Použi &amp;lt;code&amp;gt;--every-n 2&amp;lt;/code&amp;gt; alebo &amp;lt;code&amp;gt;--every-n 3&amp;lt;/code&amp;gt; na zníženie počtu spracovaných snímkov&lt;br /&gt;
* FFmpeg re-encoding (automatický) by mal veľkosť výrazne znížiť&lt;br /&gt;
* Pre menšie rozlíšenie výstupu uprav zdrojový kód (pridaj resize pred zápisom)&lt;br /&gt;
&lt;br /&gt;
=== GPU problémy ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt; nefunguje → nainštaluj NVIDIA driver: &amp;lt;code&amp;gt;sudo apt install nvidia-driver-535&amp;lt;/code&amp;gt;&lt;br /&gt;
* FFmpeg nemá &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; → preinštaluj FFmpeg alebo použi snap verziu&lt;br /&gt;
* GPU dekódovanie padá → skús bez &amp;lt;code&amp;gt;--gpu&amp;lt;/code&amp;gt;, CPU verzia je stabilnejšia&lt;br /&gt;
&lt;br /&gt;
=== Import error cv2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Alternatíva bez GUI závislostí:&lt;br /&gt;
pip install opencv-python-headless&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18769</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18769"/>
		<updated>2026-05-16T18:37:09Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
Presná a spoľahlivá lokalizácia je jedným z kľúčových problémov mobilnej robotiky. Obvykle sa tento problém rieši metódami simultánnej lokalizácie a mapovania (SLAM). Napriek tomu sa však často používajú aj externé lokalizačné systémy, či už pre riadenie v uzavretej slučke, alebo pre meranie polohy. WhyCon je rýchly a presný vizuálny softvér pre lokalizáciu viacerých robotov. Jadrom je nový a efektívny algoritmus pre rozpoznávanie čierno-bielych vzorov. Metóda je robustná a odolná voči zmenám osvetlenia, má presnosť na úrovni pixelov a jej výpočtová zložitosť nezávisí od veľkosti spracovaného obrazu. Je dostatočne rýchla a zvláda spracovať stovky snímkov za sekundu pomocou bežného počítača a lacnej kamery, pričom dosahuje až milimetrovú presnosť. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
* inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
* spracovanie iba relevantných pixelov,&lt;br /&gt;
* uložené medzivýsledky vo fronte pozícií.&lt;br /&gt;
&lt;br /&gt;
Podrobný opis algoritmu je zachytený na prednáške T. Krajníka &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VDdwq3Vm97M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ku ktorej sú k dispozícii aj&lt;br /&gt;
* [https://robotika.sk/seminar/2018/whycon.pdf slajdy]&lt;br /&gt;
* [https://github.com/gestom/whycon-orig github repo]&lt;br /&gt;
* KRAJNÍK, Tomáš, et al. &#039;&#039;[https://link.springer.com/article/10.1007/s10846-014-0041-x A practical multirobot localization system]&#039;&#039;. Journal of Intelligent &amp;amp; Robotic Systems, 2014, 76.3: 539-562.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WhyCon detekcia je v podstate séria filtrov, kde každý krok zúži počet možných kandidátov. Celý postup je vidno na nasledovnom obrázku:&lt;br /&gt;
* Krok 1 — Šedotónový + blur. Farba nás nezaujíma (marker je čiernobiely), Gaussian blur odstráni šum.&lt;br /&gt;
* Krok 2 — Adaptívny prah. Každý pixel porovná so svojím okolím (51×51 px okno) a rozhodne: tmavší než priemer → biela, svetlejší → čierna. Preto to funguje aj pri nerovnomernom osvetlení — na rozdiel od globálneho prahu, ktorý by v tmavom rohu videl &amp;quot;všetko čierne&amp;quot;.&lt;br /&gt;
* Krok 3 — Kontúry s hierarchiou. OpenCV nájde hranice všetkých bielych oblastí (v tomto snímku 1021). Kľúčové je RETR_TREE — zachová informáciu, ktorá kontúra je vnútri ktorej (rodič → dieťa).&lt;br /&gt;
* Krok 4 — Filter na cirkularitu. Z 1021 kontúr zostanú len 3 kruhové. Cirkularita = 4π × plocha / obvod². Dokonalý kruh = 1.0, stena bludiska ≈ 0.1. Filtrujeme na ≥ 0.55.&lt;br /&gt;
* Krok 5 — Rodič-dieťa test. Toto je jadro WhyConu. Hľadáme kruhovú kontúru, ktorá má vnútri seba ďalšiu kruhovú kontúru — čiže prstenec s kruhovým stredom. Navyše kontrolujeme pomer plôch: pri pomere priemerov 2:1 je pomer plôch * 0.25. V tvojom snímku vyšiel 0.24 — presne sedí.&lt;br /&gt;
* Krok 6 — Najlepší kandidát. Ak prešlo viacero, vyberie sa ten s najvyšším skóre (kombinácia cirkularity oboch kruhov a veľkosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;text-align: center;&#039;&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo2.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;Jednotlivé kroky algoritmu WhyCon.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WhyCon Tracker — Kompletný návod (Ubuntu Linux) podľa Claude.AI ==&lt;br /&gt;
&lt;br /&gt;
Tento návod ťa prevedie celým procesom od inštalácie softvéru, cez kalibráciu kamery, až po spracovanie videa, vykreslenie trajektórie a generovanie videa s postupne rastúcou stopou robota.&lt;br /&gt;
&lt;br /&gt;
== 1. Inštalácia základných závislostí ==&lt;br /&gt;
&lt;br /&gt;
Nainštaluj Python 3 a pip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install python3 python3-pip python3-venv ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvor si virtuálne prostredie (odporúčané):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 -m venv ~/whycon-env&lt;br /&gt;
source ~/whycon-env/bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nainštaluj Python knižnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install opencv-python numpy matplotlib&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak by &amp;lt;code&amp;gt;opencv-python&amp;lt;/code&amp;gt; hlásil chýbajúce systémové knižnice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install libgl1-mesa-glx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Priprav pracovný priečinok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p ~/whycon-tracking/output&lt;br /&gt;
cd ~/whycon-tracking&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skopíruj sem súbor &amp;lt;code&amp;gt;whycon_tracker.py&amp;lt;/code&amp;gt;, tvoje videá a prípadne &amp;lt;code&amp;gt;calibration.npz&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Inštalácia GPU akcelerácie (voliteľné) ==&lt;br /&gt;
&lt;br /&gt;
Ak máš NVIDIA GPU, môžeš urýchliť dekódovanie videa. Toto je úplne voliteľné — skript funguje aj bez GPU, len pomalšie.&lt;br /&gt;
&lt;br /&gt;
=== Predpoklady ===&lt;br /&gt;
&lt;br /&gt;
Potrebuješ nainštalovaný NVIDIA driver. Over si:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nvidia-smi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak príkaz funguje a vidíš svoju GPU, máš driver v poriadku.&lt;br /&gt;
&lt;br /&gt;
=== FFmpeg s NVDEC podporou ===&lt;br /&gt;
&lt;br /&gt;
Štandardný FFmpeg z Ubuntu repozitárov zvyčajne podporuje NVDEC. Over si:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -hwaccels&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V zozname by si mal vidieť &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt;. Ak tam nie je, nainštaluj FFmpeg s NVIDIA podporou:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak ani potom &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; nevidíš, skús nainštalovať FFmpeg zo snap alebo z oficiálneho buildu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Snap verzia (zvyčajne obsahuje NVDEC):&lt;br /&gt;
sudo snap install ffmpeg&lt;br /&gt;
&lt;br /&gt;
# Alebo stiahni statický build:&lt;br /&gt;
# https://johnvansickle.com/ffmpeg/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overenie funkčnosti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Test GPU dekódovania na tvojom videu:&lt;br /&gt;
ffmpeg -hwaccel cuda -i tvoje_video.mp4 -f null - 2&amp;gt;&amp;amp;1 | tail -5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak prebehne bez chyby, GPU akcelerácia funguje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Príprava markera a šachovnice ==&lt;br /&gt;
&lt;br /&gt;
=== WhyCon marker ===&lt;br /&gt;
&lt;br /&gt;
WhyCon marker je čierny disk s bielym kruhovým stredom. Pomer vonkajšieho a vnútorného priemeru by mal byť približne 2:1 (napr. vonkajší 122 mm, vnútorný 61 mm).&lt;br /&gt;
&lt;br /&gt;
Hotový marker na stiahnutie:&lt;br /&gt;
* https://github.com/jiriUlr/whycon-ros (súbor &amp;lt;code&amp;gt;id/test.pdf&amp;lt;/code&amp;gt;, priemer 122 mm)&lt;br /&gt;
&lt;br /&gt;
Vytlač na matný papier. Zmeraj a zapíš si presný vonkajší priemer v milimetroch.&lt;br /&gt;
&lt;br /&gt;
=== Kalibračná šachovnica ===&lt;br /&gt;
&lt;br /&gt;
Stiahni si šachovnicový vzor:&lt;br /&gt;
* https://markhedleyjones.com/projects/calibration-checkerboard-collection (SVG/PDF, rôzne veľkosti)&lt;br /&gt;
* https://calib.io/pages/camera-calibration-pattern-generator (vlastné rozmery)&lt;br /&gt;
* https://github.com/opencv/opencv/blob/4.x/doc/pattern.png (9×6 z OpenCV)&lt;br /&gt;
&lt;br /&gt;
Vytlač na A4 a nalep na tuhý podklad (kartón, clipboard). Pri tlači &#039;&#039;&#039;vypni škálovanie&#039;&#039;&#039; — tlač na 100%.&lt;br /&gt;
&lt;br /&gt;
Zapamätaj si:&lt;br /&gt;
* &#039;&#039;&#039;Počet vnútorných rohov&#039;&#039;&#039; (nie štvorčekov!) — šachovnica 11×8 štvorčekov = 10×7 rohov&lt;br /&gt;
* &#039;&#039;&#039;Veľkosť štvorčeka&#039;&#039;&#039; v mm — odmeraj po vytlačení&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Nahrávanie videí ==&lt;br /&gt;
&lt;br /&gt;
=== Nastavenie kamery ===&lt;br /&gt;
&lt;br /&gt;
Upevni kameru na stabilné miesto nad bludisko (statív, konzola, strop). Nastav:&lt;br /&gt;
* Najvyššie dostupné rozlíšenie (ideálne 4K)&lt;br /&gt;
* Pevný fokus (zamkni autofokus) na vzdialenosť bludiska&lt;br /&gt;
* Rovnaké nastavenie pre kalibráciu aj nahrávanie robota&lt;br /&gt;
&lt;br /&gt;
=== Kalibračné video (60–90 sekúnd) ===&lt;br /&gt;
&lt;br /&gt;
Vezmi šachovnicu na tuhom podklade a pomaly ju presúvaj a nakláňaj pred kamerou:&lt;br /&gt;
* V rôznych častiach obrazu (stred, rohy, hrany)&lt;br /&gt;
* Pod rôznymi uhlami (naklonená do všetkých strán)&lt;br /&gt;
* V rôznych vzdialenostiach&lt;br /&gt;
* Pomaly — nesmie byť rozmazaná&lt;br /&gt;
&lt;br /&gt;
=== Video s robotom ===&lt;br /&gt;
&lt;br /&gt;
Spusti nahrávanie, potom robota. Uisti sa, že WhyCon marker na robote je viditeľný z pozície kamery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Spracovanie — príklady použitia ==&lt;br /&gt;
&lt;br /&gt;
Pred spustením sa uisti, že máš aktivovaný virtuálny environment a si v správnom priečinku:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/whycon-env/bin/activate&lt;br /&gt;
cd ~/whycon-tracking&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kompletný pipeline (kalibrácia + tracking + trail video) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --calib kalibracia.mp4 \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --board-size 9,6 \&lt;br /&gt;
    --square-size 25.0 \&lt;br /&gt;
    --marker-diam 122.0 \&lt;br /&gt;
    --trail-video&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Len tracking s uloženou kalibráciou ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --use-calib calibration.npz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking bez kalibrácie (len pixelové súradnice) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S GPU akceleráciou ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --gpu \&lt;br /&gt;
    --trail-video&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dlhé video — zrýchlenie spracovania ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Každý 3. snímok (10 fps pri 30fps videu):&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video dlhe_video.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --every-n 3 \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --gpu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video s mizajúcou stopou ===&lt;br /&gt;
&lt;br /&gt;
Namiesto celej stopy od začiatku sa zobrazí len posledných N sekúnd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Stopa mizne po 10 sekundách:&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-fade 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video s bodkami namiesto čiar (odolné voči chybným detekciám) ===&lt;br /&gt;
&lt;br /&gt;
Ak detekcia občas &amp;quot;preskočí&amp;quot; na nesprávne miesto, spojité čiary vytvárajú rušivé skoky naprieč celým obrazom. Bodkový režim kreslí každú detekciu ako samostatný bod — správne detekcie vytvoria kvázi spojitú stopu, zatiaľ čo ojedinelé chybné detekcie budú len nevýrazné izolované body:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video kobuki1.mp4 \&lt;br /&gt;
    --no-calib \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-dots&lt;br /&gt;
&lt;br /&gt;
# Kombinovateľné s GPU a fade:&lt;br /&gt;
python3 whycon_tracker.py \&lt;br /&gt;
    --video dlhe_video.mp4 \&lt;br /&gt;
    --use-calib calibration.npz \&lt;br /&gt;
    --trail-video \&lt;br /&gt;
    --trail-dots \&lt;br /&gt;
    --trail-fade 15 \&lt;br /&gt;
    --gpu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Prehľad všetkých parametrov ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Predvolená hodnota !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--video&amp;lt;/code&amp;gt; || (povinný) || Cesta k videu s robotom&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--calib&amp;lt;/code&amp;gt; || — || Cesta ku kalibračnému videu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--use-calib&amp;lt;/code&amp;gt; || — || Cesta k uloženej kalibrácii (.npz)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--no-calib&amp;lt;/code&amp;gt; || — || Preskočiť kalibráciu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--board-size&amp;lt;/code&amp;gt; || 9,6 || Vnútorné rohy šachovnice (šírka,výška)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--square-size&amp;lt;/code&amp;gt; || 25.0 || Veľkosť štvorčeka šachovnice v mm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--marker-diam&amp;lt;/code&amp;gt; || 122.0 || Vonkajší priemer WhyCon markera v mm&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--every-n&amp;lt;/code&amp;gt; || 1 || Spracovať každý N-tý snímok&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--output-dir&amp;lt;/code&amp;gt; || ./output || Výstupný priečinok&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-video&amp;lt;/code&amp;gt; || — || Vygenerovať video s rastúcou stopou&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-dots&amp;lt;/code&amp;gt; || — || Kresliť bodky namiesto čiar (odolné voči chybám)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--trail-fade&amp;lt;/code&amp;gt; || 0 || Dĺžka mizajúcej stopy v sekundách (0 = celá stopa)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--gpu&amp;lt;/code&amp;gt; || — || Použiť NVIDIA GPU na dekódovanie videa&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Výstupné súbory ==&lt;br /&gt;
&lt;br /&gt;
Po spracovaní nájdeš v &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt; priečinku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Súbor !! Popis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_overlay.png&amp;lt;/code&amp;gt; || Trajektória na obrázku bludiska, farba = čas&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_timeseries.png&amp;lt;/code&amp;gt; || Priebehy X, Y a rýchlosti v čase&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_xy.png&amp;lt;/code&amp;gt; || Trajektória zhora (XY graf)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trajectory_data.csv&amp;lt;/code&amp;gt; || Surové dáta: snímok, čas, pixel X, pixel Y&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;positions.npy&amp;lt;/code&amp;gt; || Dáta v NumPy formáte pre ďalšie spracovanie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;calibration.npz&amp;lt;/code&amp;gt; || Kalibrácia kamery (ak bola spustená)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trail_video.mp4&amp;lt;/code&amp;gt; || Video so stopou z čiar (ak &amp;lt;code&amp;gt;--trail-video&amp;lt;/code&amp;gt; bez &amp;lt;code&amp;gt;--trail-dots&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;trail_video_dots.mp4&amp;lt;/code&amp;gt; || Video so stopou z bodiek (ak &amp;lt;code&amp;gt;--trail-video --trail-dots&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
=== Skript nenašiel šachovnicu ===&lt;br /&gt;
&lt;br /&gt;
* Skontroluj &amp;lt;code&amp;gt;--board-size&amp;lt;/code&amp;gt; — počítaj vnútorné rohy, nie štvorčeky&lt;br /&gt;
* Šachovnica je príliš malá — drž ju bližšie ku kamere&lt;br /&gt;
* Skús rôzne rozmery: &amp;lt;code&amp;gt;9,6&amp;lt;/code&amp;gt; potom &amp;lt;code&amp;gt;10,7&amp;lt;/code&amp;gt; potom &amp;lt;code&amp;gt;8,5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skript nenašiel marker ===&lt;br /&gt;
&lt;br /&gt;
* Marker musí mať dostatočný kontrast (biele centrum, čierny prstenec)&lt;br /&gt;
* Pri slabom osvetlení zvýš jas pri nahrávaní&lt;br /&gt;
* Ak je marker malý v obraze, skús znížiť &amp;lt;code&amp;gt;min_area&amp;lt;/code&amp;gt; v zdrojovom kóde&lt;br /&gt;
&lt;br /&gt;
=== Trajektória má výpadky ===&lt;br /&gt;
&lt;br /&gt;
* Robot bol zakrytý stenou — to je normálne&lt;br /&gt;
* Pri šikmom pohľade sa marker v niektorých častiach detekuje horšie&lt;br /&gt;
* Medzery sa dajú vyplniť interpoláciou v post-processingu&lt;br /&gt;
&lt;br /&gt;
=== Trajektória má náhodné skoky ===&lt;br /&gt;
&lt;br /&gt;
* Falošné detekcie kruhových prvkov v scéne&lt;br /&gt;
* Skús zvýšiť &amp;lt;code&amp;gt;min_area&amp;lt;/code&amp;gt; alebo znížiť &amp;lt;code&amp;gt;max_area&amp;lt;/code&amp;gt; v zdrojovom kóde&lt;br /&gt;
* Pomôže aj mediánový filter na výstupné súradnice&lt;br /&gt;
&lt;br /&gt;
=== GPU problémy ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt; nefunguje → nainštaluj NVIDIA driver: &amp;lt;code&amp;gt;sudo apt install nvidia-driver-535&amp;lt;/code&amp;gt;&lt;br /&gt;
* FFmpeg nemá &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; → preinštaluj FFmpeg alebo použi snap verziu&lt;br /&gt;
* GPU dekódovanie padá → skús bez &amp;lt;code&amp;gt;--gpu&amp;lt;/code&amp;gt;, CPU verzia je stabilnejšia&lt;br /&gt;
&lt;br /&gt;
=== Import error cv2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Alternatíva bez GUI závislostí:&lt;br /&gt;
pip install opencv-python-headless&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trail video je príliš veľké ===&lt;br /&gt;
&lt;br /&gt;
* Použi &amp;lt;code&amp;gt;--every-n 2&amp;lt;/code&amp;gt; alebo &amp;lt;code&amp;gt;--every-n 3&amp;lt;/code&amp;gt; na zníženie počtu spracovaných snímkov&lt;br /&gt;
* FFmpeg re-encoding (automatický) by mal veľkosť výrazne znížiť&lt;br /&gt;
* Pre menšie rozlíšenie výstupu uprav zdrojový kód (pridaj resize pred zápisom)&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:WhyConDemo2.png&amp;diff=18767</id>
		<title>Súbor:WhyConDemo2.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:WhyConDemo2.png&amp;diff=18767"/>
		<updated>2026-05-16T18:33:30Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18766</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18766"/>
		<updated>2026-05-16T18:33:20Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
Presná a spoľahlivá lokalizácia je jedným z kľúčových problémov mobilnej robotiky. Obvykle sa tento problém rieši metódami simultánnej lokalizácie a mapovania (SLAM). Napriek tomu sa však často používajú aj externé lokalizačné systémy, či už pre riadenie v uzavretej slučke, alebo pre meranie polohy. WhyCon je rýchly a presný vizuálny softvér pre lokalizáciu viacerých robotov. Jadrom je nový a efektívny algoritmus pre rozpoznávanie čierno-bielych vzorov. Metóda je robustná a odolná voči zmenám osvetlenia, má presnosť na úrovni pixelov a jej výpočtová zložitosť nezávisí od veľkosti spracovaného obrazu. Je dostatočne rýchla a zvláda spracovať stovky snímkov za sekundu pomocou bežného počítača a lacnej kamery, pričom dosahuje až milimetrovú presnosť. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
* inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
* spracovanie iba relevantných pixelov,&lt;br /&gt;
* uložené medzivýsledky vo fronte pozícií.&lt;br /&gt;
&lt;br /&gt;
Podrobný opis algoritmu je zachytený na prednáške T. Krajníka &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VDdwq3Vm97M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ku ktorej sú k dispozícii aj&lt;br /&gt;
* [https://robotika.sk/seminar/2018/whycon.pdf slajdy]&lt;br /&gt;
* [https://github.com/gestom/whycon-orig github repo]&lt;br /&gt;
* KRAJNÍK, Tomáš, et al. &#039;&#039;[https://link.springer.com/article/10.1007/s10846-014-0041-x A practical multirobot localization system]&#039;&#039;. Journal of Intelligent &amp;amp; Robotic Systems, 2014, 76.3: 539-562.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WhyCon detekcia je v podstate séria filtrov, kde každý krok zúži počet možných kandidátov. Celý postup je vidno na nasledovnom obrázku:&lt;br /&gt;
* Krok 1 — Šedotónový + blur. Farba nás nezaujíma (marker je čiernobiely), Gaussian blur odstráni šum.&lt;br /&gt;
* Krok 2 — Adaptívny prah. Každý pixel porovná so svojím okolím (51×51 px okno) a rozhodne: tmavší než priemer → biela, svetlejší → čierna. Preto to funguje aj pri nerovnomernom osvetlení — na rozdiel od globálneho prahu, ktorý by v tmavom rohu videl &amp;quot;všetko čierne&amp;quot;.&lt;br /&gt;
* Krok 3 — Kontúry s hierarchiou. OpenCV nájde hranice všetkých bielych oblastí (v tomto snímku 1021). Kľúčové je RETR_TREE — zachová informáciu, ktorá kontúra je vnútri ktorej (rodič → dieťa).&lt;br /&gt;
* Krok 4 — Filter na cirkularitu. Z 1021 kontúr zostanú len 3 kruhové. Cirkularita = 4π × plocha / obvod². Dokonalý kruh = 1.0, stena bludiska ≈ 0.1. Filtrujeme na ≥ 0.55.&lt;br /&gt;
* Krok 5 — Rodič-dieťa test. Toto je jadro WhyConu. Hľadáme kruhovú kontúru, ktorá má vnútri seba ďalšiu kruhovú kontúru — čiže prstenec s kruhovým stredom. Navyše kontrolujeme pomer plôch: pri pomere priemerov 2:1 je pomer plôch * 0.25. V tvojom snímku vyšiel 0.24 — presne sedí.&lt;br /&gt;
* Krok 6 — Najlepší kandidát. Ak prešlo viacero, vyberie sa ten s najvyšším skóre (kombinácia cirkularity oboch kruhov a veľkosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;text-align: center;&#039;&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo2.png|800px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;Jednotlivé kroky algoritmu WhyCon.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:WhyConDemo.png&amp;diff=18765</id>
		<title>Súbor:WhyConDemo.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:WhyConDemo.png&amp;diff=18765"/>
		<updated>2026-05-16T18:32:51Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18764</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18764"/>
		<updated>2026-05-16T18:30:50Z</updated>

		<summary type="html">&lt;p&gt;Balogh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
Presná a spoľahlivá lokalizácia je jedným z kľúčových problémov mobilnej robotiky. Obvykle sa tento problém rieši metódami simultánnej lokalizácie a mapovania (SLAM). Napriek tomu sa však často používajú aj externé lokalizačné systémy, či už pre riadenie v uzavretej slučke, alebo pre meranie polohy. WhyCon je rýchly a presný vizuálny softvér pre lokalizáciu viacerých robotov. Jadrom je nový a efektívny algoritmus pre rozpoznávanie čierno-bielych vzorov. Metóda je robustná a odolná voči zmenám osvetlenia, má presnosť na úrovni pixelov a jej výpočtová zložitosť nezávisí od veľkosti spracovaného obrazu. Je dostatočne rýchla a zvláda spracovať stovky snímkov za sekundu pomocou bežného počítača a lacnej kamery, pričom dosahuje až milimetrovú presnosť. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
* inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
* spracovanie iba relevantných pixelov,&lt;br /&gt;
* uložené medzivýsledky vo fronte pozícií.&lt;br /&gt;
&lt;br /&gt;
Podrobný opis algoritmu je zachytený na prednáške T. Krajníka &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VDdwq3Vm97M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ku ktorej sú k dispozícii aj&lt;br /&gt;
* [https://robotika.sk/seminar/2018/whycon.pdf slajdy]&lt;br /&gt;
* [https://github.com/gestom/whycon-orig github repo]&lt;br /&gt;
* KRAJNÍK, Tomáš, et al. &#039;&#039;[https://link.springer.com/article/10.1007/s10846-014-0041-x A practical multirobot localization system]&#039;&#039;. Journal of Intelligent &amp;amp; Robotic Systems, 2014, 76.3: 539-562.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WhyCon detekcia je v podstate séria filtrov, kde každý krok zúži počet možných kandidátov. Celý postup je vidno na nasledovnom obrázku:&lt;br /&gt;
* Krok 1 — Šedotónový + blur. Farba nás nezaujíma (marker je čiernobiely), Gaussian blur odstráni šum.&lt;br /&gt;
* Krok 2 — Adaptívny prah. Každý pixel porovná so svojím okolím (51×51 px okno) a rozhodne: tmavší než priemer → biela, svetlejší → čierna. Preto to funguje aj pri nerovnomernom osvetlení — na rozdiel od globálneho prahu, ktorý by v tmavom rohu videl &amp;quot;všetko čierne&amp;quot;.&lt;br /&gt;
* Krok 3 — Kontúry s hierarchiou. OpenCV nájde hranice všetkých bielych oblastí (v tomto snímku 1021). Kľúčové je RETR_TREE — zachová informáciu, ktorá kontúra je vnútri ktorej (rodič → dieťa).&lt;br /&gt;
* Krok 4 — Filter na cirkularitu. Z 1021 kontúr zostanú len 3 kruhové. Cirkularita = 4π × plocha / obvod². Dokonalý kruh = 1.0, stena bludiska ≈ 0.1. Filtrujeme na ≥ 0.55.&lt;br /&gt;
* Krok 5 — Rodič-dieťa test. Toto je jadro WhyConu. Hľadáme kruhovú kontúru, ktorá má vnútri seba ďalšiu kruhovú kontúru — čiže prstenec s kruhovým stredom. Navyše kontrolujeme pomer plôch: pri pomere priemerov 2:1 je pomer plôch * 0.25. V tvojom snímku vyšiel 0.24 — presne sedí.&lt;br /&gt;
* Krok 6 — Najlepší kandidát. Ak prešlo viacero, vyberie sa ten s najvyšším skóre (kombinácia cirkularity oboch kruhov a veľkosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;text-align: center;&#039;&amp;gt;&lt;br /&gt;
[[Súbor:WhyConDemo.png|500px]]&amp;lt;BR&amp;gt;&lt;br /&gt;
&#039;&#039;Jednotlivé kroky algoritmu WhyCon.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18763</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18763"/>
		<updated>2026-05-16T18:27:19Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* WhyCon - A precise, efficient and low-cost localization system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
Presná a spoľahlivá lokalizácia je jedným z kľúčových problémov mobilnej robotiky. Obvykle sa tento problém rieši metódami simultánnej lokalizácie a mapovania (SLAM). Napriek tomu sa však často používajú aj externé lokalizačné systémy, či už pre riadenie v uzavretej slučke, alebo pre meranie polohy. WhyCon je rýchly a presný vizuálny softvér pre lokalizáciu viacerých robotov. Jadrom je nový a efektívny algoritmus pre rozpoznávanie čierno-bielych vzorov. Metóda je robustná a odolná voči zmenám osvetlenia, má presnosť na úrovni pixelov a jej výpočtová zložitosť nezávisí od veľkosti spracovaného obrazu. Je dostatočne rýchla a zvláda spracovať stovky snímkov za sekundu pomocou bežného počítača a lacnej kamery, pričom dosahuje až milimetrovú presnosť. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
- inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
- spracovanie iba relevantných pixelov,&lt;br /&gt;
- uložené medzivýsledky vo fronte pozícií.&lt;br /&gt;
&lt;br /&gt;
Podrobný opis algoritmu je zachytený na prednáške T. Krajníka &lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VDdwq3Vm97M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ku ktorej sú k dispozícii aj&lt;br /&gt;
- [https://robotika.sk/seminar/2018/whycon.pdf slajdy]&lt;br /&gt;
- [https://github.com/gestom/whycon-orig github repo]&lt;br /&gt;
- KRAJNÍK, Tomáš, et al. &#039;&#039;[https://link.springer.com/article/10.1007/s10846-014-0041-x A practical multirobot localization system]&#039;&#039;. Journal of Intelligent &amp;amp; Robotic Systems, 2014, 76.3: 539-562.&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18762</id>
		<title>WhyCon</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=WhyCon&amp;diff=18762"/>
		<updated>2026-05-16T18:15:02Z</updated>

		<summary type="html">&lt;p&gt;Balogh: Vytvorená stránka „= WhyCon - A precise, efficient and low-cost localization system =  &amp;#039;&amp;#039;&amp;#039;Vstup:&amp;#039;&amp;#039;&amp;#039; farebný alebo čiernobiely obrázok z jednej kamery  &amp;#039;&amp;#039;&amp;#039;Výstup:&amp;#039;&amp;#039;&amp;#039; pozície kruhových značiek v priestore  Algoritmus: # segmentácia prehľadávaním do šírky, # filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď), # presné parametre 2d vzoru, # reprojekcia do 3d, # transformácia do daného súradnicového systému.  - inicializácia hľadania na poslednej poz…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WhyCon - A precise, efficient and low-cost localization system =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vstup:&#039;&#039;&#039; farebný alebo čiernobiely obrázok z jednej kamery&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Výstup:&#039;&#039;&#039; pozície kruhových značiek v priestore&lt;br /&gt;
&lt;br /&gt;
Algoritmus:&lt;br /&gt;
# segmentácia prehľadávaním do šírky,&lt;br /&gt;
# filtrácia výsledkov (kruhovosť, sústrednosť, pomer farieb atď),&lt;br /&gt;
# presné parametre 2d vzoru,&lt;br /&gt;
# reprojekcia do 3d,&lt;br /&gt;
# transformácia do daného súradnicového systému.&lt;br /&gt;
&lt;br /&gt;
- inicializácia hľadania na poslednej pozíci v obraze,&lt;br /&gt;
- spracovanie iba relevantných pixelov,&lt;br /&gt;
- uložené medzivýsledky vo fronte pozícií.&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Kobuki&amp;diff=18636</id>
		<title>Kobuki</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Kobuki&amp;diff=18636"/>
		<updated>2026-05-06T19:16:10Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Aktualizácia polohy (dead reckoning) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mapovanie bludiska mobilným robotom =&lt;br /&gt;
&#039;&#039;&#039;Cvičenie z mobilnej robotiky — Kobuki + RPlidar A1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Cieľ cvičenia =&lt;br /&gt;
&lt;br /&gt;
Cieľom cvičenia je ručne previesť mobilného robota cez bludisko, zaznamenať dáta z odometrie a laserového diaľkomera (lidaru), a následne z nameraných dát zrekonštruovať:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;trajektóriu robota&#039;&#039;&#039; v rovine &#039;&#039;x&#039;&#039;–&#039;&#039;y&#039;&#039; (dead reckoning z enkodérov a gyroskopu),&lt;br /&gt;
# &#039;&#039;&#039;plánik bludiska&#039;&#039;&#039; (mračno bodov z lidaru transformované do globálnych súradníc).&lt;br /&gt;
&lt;br /&gt;
Spracovanie dát vykonáte &#039;&#039;offline&#039;&#039; v prostredí Matlab alebo Python na základe dvoch logovacích súborov: &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; (odometria) a &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt; (lidar).&lt;br /&gt;
&lt;br /&gt;
= Technický opis zariadení =&lt;br /&gt;
&lt;br /&gt;
== Mobilný robot Kobuki ==&lt;br /&gt;
&lt;br /&gt;
Kobuki je kompaktná mobilná platforma s diferenciálnym podvozkom — má dve nezávisle poháňané kolesá a jedno voľnobežné (kastorové) koleso. Pohyb robota sa meria inkrementálnymi optickými enkodérmi na oboch kolesách a jednoosovým gyroskopom.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Technické parametre robota Kobuki&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Kategória&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Parameter&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Hodnota&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Rozmery&lt;br /&gt;
|| Priemer tela&lt;br /&gt;
|| 351.5 mm (kruh)&lt;br /&gt;
|-&lt;br /&gt;
|| Výška&lt;br /&gt;
|| 124.8 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Pohon a kinematika&lt;br /&gt;
|| Typ podvozku&lt;br /&gt;
|| diferenciálny (2 kolesá + kastor)&lt;br /&gt;
|-&lt;br /&gt;
|| Rozchod kolies (wheelbase)&lt;br /&gt;
|| &#039;&#039;L&#039;&#039; = 230 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Polomer kolesa&lt;br /&gt;
|| &#039;&#039;r&#039;&#039; = 35 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Šírka kolesa&lt;br /&gt;
|| 21 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Dynamika&lt;br /&gt;
|| Max. translačná rýchlosť&lt;br /&gt;
|| 70 cm s&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Max. rotačná rýchlosť&lt;br /&gt;
|| 180°/s (gyroskop spoľahlivý do 110°/s)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Enkodéry&lt;br /&gt;
|| Rozlíšenie enkodéra&lt;br /&gt;
|| 52 tick/ot. enkodéra&lt;br /&gt;
|-&lt;br /&gt;
|| Prevodový pomer&lt;br /&gt;
|| 6545 : 132 = 49,5833&lt;br /&gt;
|-&lt;br /&gt;
|| Ticky na otáčku kolesa&lt;br /&gt;
|| 52 × 49,5833 = 2578,33 tick/ot.&lt;br /&gt;
|-&lt;br /&gt;
|| Registre enkodérov&lt;br /&gt;
|| 16-bit unsigned (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Prepočtové konštanty&lt;br /&gt;
|| Tick → metre&lt;br /&gt;
|| &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Ekvivalent&lt;br /&gt;
|| ≈ 11,7 tick/mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Gyroskop&lt;br /&gt;
|| Typ&lt;br /&gt;
|| 1-osový, továrensky kalibrovaný&lt;br /&gt;
|-&lt;br /&gt;
|| Rozsah&lt;br /&gt;
|| do 110°/s&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot;| Senzory a bezpečnosť&lt;br /&gt;
|| Nárazníky (bumpers)&lt;br /&gt;
|| ľavý, stredný, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Senzory útesu (cliff)&lt;br /&gt;
|| ľavý, stredný, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Senzor poklesu kolesa&lt;br /&gt;
|| ľavý, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Dátová frekvencia&lt;br /&gt;
|| 50 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Pripojenie k PC&lt;br /&gt;
|| USB alebo RX/TX piny&lt;br /&gt;
|-&lt;br /&gt;
|| Ochrana motora&lt;br /&gt;
|| vypnutie pri &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;I &amp;gt; 3 A&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Napájanie&lt;br /&gt;
|| Batéria&lt;br /&gt;
|| Li-Ion 14.8 V, 2200 mAh&lt;br /&gt;
|-&lt;br /&gt;
|| Výdrž&lt;br /&gt;
|| 3/7 h (malá/veľká batéria)&lt;br /&gt;
|-&lt;br /&gt;
|| Nosnosť&lt;br /&gt;
|| 5 kg (tvrdá podlaha) / 4 kg (koberec)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Laserový diaľkomer RPlidar A1 ==&lt;br /&gt;
&lt;br /&gt;
RPlidar A1 je 2D laserový skener (lidar), ktorý rotáciou laserového lúča okolo zvislej osi sníma vzdialenosti k prekážkam v celom rozsahu 360°. Senzor je upevnený na robot v strede medzi kolesami (offset &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;= 0&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Technické parametre lidaru RPlidar A1&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Kategória&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Parameter&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Hodnota&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Rozmery a hmotnosť&lt;br /&gt;
|| Rozmery&lt;br /&gt;
|| 98,5 × 70 × 60 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Hmotnosť&lt;br /&gt;
|| 170 g&lt;br /&gt;
|-&lt;br /&gt;
|| Napájanie&lt;br /&gt;
|| externé (z robota)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Rozsah&lt;br /&gt;
|| Vzdialenosť&lt;br /&gt;
|| 0.15 – 12 m (biele objekty)&lt;br /&gt;
|-&lt;br /&gt;
|| Uhlový rozsah&lt;br /&gt;
|| 0 – 360°&lt;br /&gt;
|-&lt;br /&gt;
|| Rozlíšenie vzdialenosti&lt;br /&gt;
|| &amp;lt; 0,5 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Rýchlosť&lt;br /&gt;
|| Uhlové rozlíšenie&lt;br /&gt;
|| &amp;lt; 1°&lt;br /&gt;
|-&lt;br /&gt;
|| Doba jedného merania&lt;br /&gt;
|| 0.5 ms&lt;br /&gt;
|-&lt;br /&gt;
|| Vzorkovacia frekvencia&lt;br /&gt;
|| 2000 – 2010 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Rýchlosť otáčania (scan rate)&lt;br /&gt;
|| 1 – 10 Hz, typicky 5.5 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Kvalita merania&lt;br /&gt;
|| Rozsah hodnôt&lt;br /&gt;
|| 0 – 15 (vyššia = lepšia)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Postup merania =&lt;br /&gt;
&lt;br /&gt;
# Umiestnite robota na štartovaciu pozíciu pred vstupom do bludiska. Zapnite robota a spustite záznam dát.&lt;br /&gt;
# Pomocou joysticku preveďte robota cez celé bludisko. &#039;&#039;&#039;Prejdite aj všetky slepé uličky&#039;&#039;&#039; — cieľom je získať kompletný obraz o geometrii bludiska.&lt;br /&gt;
# Pohybujte sa plynulo, bez prudkých zmien smeru. Pri otáčaní neprekračujte rotačnú rýchlosť 110°/s (limit gyroskopu).&lt;br /&gt;
# Po prechode bludiskom zastavte robota a ukončite záznam.&lt;br /&gt;
# Z robota stiahnite dva logovacie súbory: &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Formát záznamových súborov =&lt;br /&gt;
&lt;br /&gt;
== Súbor &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; — odometria ==&lt;br /&gt;
&lt;br /&gt;
Každý riadok obsahuje jedno meranie, hodnoty sú oddelené medzerami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;timestamp_us&amp;amp;gt; &amp;amp;lt;enc_left&amp;amp;gt; &amp;amp;lt;enc_right&amp;amp;gt; &amp;amp;lt;gyro_deg&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Štruktúra súboru &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Stĺpec&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Popis&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| 1 — Timestamp&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint64&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Čas merania v mikrosekundách&lt;br /&gt;
|-&lt;br /&gt;
|| 2 — Enc. Left&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kumulatívny počet tickov ľavého enkodéra (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
|| 3 — Enc. Right&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kumulatívny počet tickov pravého enkodéra (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
|| 4 — Gyro&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Uhol z gyroskopu v stupňoch (-180 až +180)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklad záznamov:&lt;br /&gt;
&lt;br /&gt;
  3067284773  1288  58777  174.98&lt;br /&gt;
  3067301111  1288  58777  174.98&lt;br /&gt;
  3067323915  1288  58777  174.98&lt;br /&gt;
&lt;br /&gt;
Frekvencia záznamu zodpovedá dátovej frekvencii robota, t. j. približne 50 Hz.&lt;br /&gt;
&lt;br /&gt;
== Súbor &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt; — lidar ==&lt;br /&gt;
&lt;br /&gt;
Každý riadok obsahuje jedno meranie laserového lúča:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;timestamp_us&amp;amp;gt; &amp;amp;lt;distance_mm&amp;amp;gt; &amp;amp;lt;angle_deg&amp;amp;gt; &amp;amp;lt;quality&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Štruktúra súboru &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Stĺpec&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Popis&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| 1 — Timestamp&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint64&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Čas merania v mikrosekundách&lt;br /&gt;
|-&lt;br /&gt;
|| 2 — Distance&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Vzdialenosť k prekážke v milimetroch&lt;br /&gt;
|-&lt;br /&gt;
|| 3 — Angle&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Uhol laserového lúča v stupňoch (0–360), &#039;&#039;v smere hodinových ručičiek&#039;&#039; od prednej časti robota&lt;br /&gt;
|-&lt;br /&gt;
|| 4 — Quality&lt;br /&gt;
|| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kvalita merania (0–15); 0 = neplatné&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklad záznamov:&lt;br /&gt;
&lt;br /&gt;
  3067236764  3713.75  351.047   15&lt;br /&gt;
  3067237463  3666.75  352.438   15&lt;br /&gt;
  3067237467  3708.75  353.812   15&lt;br /&gt;
&lt;br /&gt;
Jedna kompletná otáčka lidaru (sken) obsahuje typicky okolo 260 bodov. Pri scan rate cca 7,8 Hz to zodpovedá vzorkovacej frekvencii cca 2000 Hz.&lt;br /&gt;
&lt;br /&gt;
= Teoretický základ — ideálny prípad =&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole odvodíme všetky vzťahy za predpokladu, že dáta sú bezchybné: enkodéry nepretekajú, gyroskop nedriftuje a časy sú presne synchronizované. Praktické komplikácie riešime v kapitole [[#sec:prakticke|6]].&lt;br /&gt;
&lt;br /&gt;
== Kinematika diferenciálneho podvozku ==&lt;br /&gt;
&lt;br /&gt;
Robot má dve kolesá vzdialené &#039;&#039;L&#039;&#039; = 0,23 m. Stredom medzi nimi je referenčný bod &#039;&#039;P&#039;&#039;, ktorého polohu (x, y) a orientáciu θ chceme sledovať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V každom časovom kroku (medzi vzorkou &#039;&#039;k-1&#039;&#039; a &#039;&#039;k&#039;&#039;) enkodéry napočítajú &#039;&#039;Δtick_L&#039;&#039; a &#039;&#039;Δtick_R&#039;&#039; impulzov. Dráha jednotlivých kolies je: &#039;&#039;d_L = Δtick_L · c_f,  d_R = Δtick_R · c_f&#039;&#039;,&lt;br /&gt;
kde &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt; je prepočtový faktor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:kinematika&amp;quot; class=&amp;quot;figure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Obr. 1:&#039;&#039;&#039; &#039;&#039;Kinematický model diferenciálneho podvozku. d&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;, d&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; sú dráhy kolies, d&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; je stredná dráha bodu P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Stredná dráha (pohyb bodu &#039;&#039;P&#039;&#039;) a zmena orientácie sú: &lt;br /&gt;
 d_c = (d_L + d_R)/2,      &lt;br /&gt;
  Δθ = (d_R - d_L)/L.&lt;br /&gt;
&lt;br /&gt;
Intuitívne: ak sa obe kolesá pohnú rovnako (d_L = d_R), robot ide rovno (Δθ = 0). Ak sa pravé koleso pohne viac, robot zatáča doľava (Δθ &amp;gt; 0 v štandardnej konvencii).&lt;br /&gt;
&lt;br /&gt;
== Aktualizácia polohy (dead reckoning) ==&lt;br /&gt;
&lt;br /&gt;
Polohu robota aktualizujeme iteratívne. Používame &#039;&#039;aproximáciu stredným uhlom&#039;&#039; (second-order midpoint method), ktorá je výrazne presnejšia než jednoduchá Eulerova metóda: &lt;br /&gt;
&lt;br /&gt;
 θ_mid = \theta(k-1) + Δθ/2&lt;br /&gt;
  x(k) = x(k-1) + d_c · cos(θ_mid) &lt;br /&gt;
  y(k) = y(k-1) + d_c · sin(θ_mid)&lt;br /&gt;
  θ(k) = θ(k-1) + Δθ&lt;br /&gt;
&lt;br /&gt;
Počiatočné podmienky: x(0) = 0, y(0) = 0, θ(0) = 0 (robot smeruje v osi &#039;&#039;x&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Tri zdroje orientácie ==&lt;br /&gt;
&lt;br /&gt;
Pre výpočet zmeny uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta&amp;lt;/math&amp;gt; máme tri možnosti:&lt;br /&gt;
&lt;br /&gt;
=== A) Len enkodéry ===&lt;br /&gt;
&lt;br /&gt;
Uhol sa počíta podľa rovnice [[#eq:dc_dtheta|[eq:dc_dtheta]]]. Jednoduché, ale citlivé na šmýkanie kolies.&lt;br /&gt;
&lt;br /&gt;
=== B) Len gyroskop ===&lt;br /&gt;
&lt;br /&gt;
Gyroskop Kobuki dáva priamo absolútny uhol (firmvér integruje uhlovú rýchlosť interne). Zmenu uhla medzi dvoma vzorkami vypočítame ako: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Delta\theta_{gyro} = [gyro(k) - gyro(k{-}1)] · \frac{\pi}{180}&lt;br /&gt;
\label{eq:gyro_delta}&amp;lt;/math&amp;gt; s korekciou pretečenia cez &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt; (pozri sekciu [[#sec:pretecenie_gyro|6.2]]). Táto metóda je odolná voči šmyku kolies, ale dlhodobo trpí driftom gyroskopu.&lt;br /&gt;
&lt;br /&gt;
=== C) Komplementárny filter ===&lt;br /&gt;
&lt;br /&gt;
Fúzia oboch zdrojov jedným parametrom &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha \in (0, 1)&amp;lt;/math&amp;gt;: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{\Delta\theta = \alpha · \Delta\theta_{gyro} + (1 - \alpha) · \Delta\theta_{enc}}&lt;br /&gt;
\label{eq:compfilter}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameter &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; vyjadruje “dôveru” v gyroskop. Typicky &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha = 0,95&amp;lt;/math&amp;gt; — gyroskop je na krátkych škálach presnejší, enkodéry kompenzujú jeho dlhodobý drift. Na ladenie použite uzavretú trasu — správne &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; minimalizuje odchýlku koncovej polohy od štartu.&lt;br /&gt;
&lt;br /&gt;
== Transformácia lidarových bodov do mapy ==&lt;br /&gt;
&lt;br /&gt;
Lidar meria vzdialenosť &#039;&#039;d&#039;&#039; v smere uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; (v stupňoch, rastúci &#039;&#039;v smere hodinových ručičiek&#039;&#039; od prednej časti robota). Cieľom je transformovať tento bod zo súradníc robota do globálnych (mapových) súradníc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:lidar&amp;quot; class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Priama transformácia z polárnych súradníc lidaru do mapy: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\alpha_{world} &amp;amp;= \theta - \alpha · \frac{\pi}{180} \\[4pt]&lt;br /&gt;
x_{global} &amp;amp;= x_R + \frac{d}{1000} · \cos(\alpha_{world}) \\[2pt]&lt;br /&gt;
y_{global} &amp;amp;= y_R + \frac{d}{1000} · \sin(\alpha_{world})&lt;br /&gt;
\end{aligned}&lt;br /&gt;
}&lt;br /&gt;
\label{eq:lidar_transform}&amp;lt;/math&amp;gt; kde &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta&amp;lt;/math&amp;gt; je orientácia robota v radiánoch, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; je uhol lidaru v stupňoch (CW), &#039;&#039;d&#039;&#039; je vzdialenosť v mm a &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x_R, y_R)&amp;lt;/math&amp;gt; je poloha robota v metroch. Znamienko mínus pred &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; konvertuje smysel otáčania z CW na matematicky kladný (CCW).&lt;br /&gt;
&lt;br /&gt;
= Riešenie praktických problémov =&lt;br /&gt;
&lt;br /&gt;
== Pretečenie enkodérov ==&lt;br /&gt;
&lt;br /&gt;
Enkodéry Kobuki sú 16-bitové bezznamienkové čítače s rozsahom &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; – &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt;. Keď čítač dosiahne &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt; a koleso sa ďalej otáča, hodnota preskočí na &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; (a opačne pri pohybe vzad). V surovom rozdiele &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick = enc(k) - enc(k{-}1)&amp;lt;/math&amp;gt; sa to prejaví obrovským skokom.&lt;br /&gt;
&lt;br /&gt;
Korekcia: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Deltatick_{cor} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
\Deltatick - 65536 &amp;amp; \text{ak } \Deltatick &amp;gt; 32768 \\&lt;br /&gt;
\Deltatick + 65536 &amp;amp; \text{ak } \Deltatick &amp;lt; -32768 \\&lt;br /&gt;
\Deltatick &amp;amp; \text{inak}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\label{eq:wrap_enc}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: yellow!20&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: warnorange&amp;quot;&amp;gt;{{Upozornenie|typ=pozor|text=&amp;lt;/span&amp;gt; Bez tejto korekcie dostanete v trajektórii obrovské skoky rádovo desiatky metrov. Toto je najčastejší zdroj chýb!}}&lt;br /&gt;
&lt;br /&gt;
Ukážka v Matlabu / Pythone:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;dTick = enc(k) - enc(k-1);&lt;br /&gt;
if dTick &amp;amp;gt; 32768&lt;br /&gt;
    dTick = dTick - 65536;&lt;br /&gt;
end&lt;br /&gt;
if dTick &amp;amp;lt; -32768&lt;br /&gt;
    dTick = dTick + 65536;&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;dTick = enc[k] - enc[k-1]&lt;br /&gt;
if dTick &amp;gt; 32768:&lt;br /&gt;
    dTick -= 65536&lt;br /&gt;
if dTick &amp;lt; -32768:&lt;br /&gt;
    dTick += 65536&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Pretečenie gyroskopu ==&lt;br /&gt;
&lt;br /&gt;
Gyroskop vracia uhol v rozsahu &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(-180^{\circ}, +180^{\circ}]&amp;lt;/math&amp;gt;. Pri prechode cez &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt; hodnota skočí, napr. z &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;+179^{\circ}&amp;lt;/math&amp;gt; na &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;-179^{\circ}&amp;lt;/math&amp;gt;. To nie je skutočná zmena o &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;358^{\circ}&amp;lt;/math&amp;gt;, ale o &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;+2^{\circ}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Korekcia: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Deltagyro_{cor} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
\Deltagyro - 360 &amp;amp; \text{ak } \Deltagyro &amp;gt; 180 \\&lt;br /&gt;
\Deltagyro + 360 &amp;amp; \text{ak } \Deltagyro &amp;lt; -180 \\&lt;br /&gt;
\Deltagyro &amp;amp; \text{inak}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\label{eq:wrap_gyro}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;dGyro = gyro(k) - gyro(k-1);&lt;br /&gt;
if dGyro &amp;amp;gt; 180&lt;br /&gt;
    dGyro = dGyro - 360;&lt;br /&gt;
end&lt;br /&gt;
if dGyro &amp;amp;lt; -180&lt;br /&gt;
    dGyro = dGyro + 360;&lt;br /&gt;
end&lt;br /&gt;
dTheta = dGyro * pi / 180;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;dGyro = gyro[k] - gyro[k-1]&lt;br /&gt;
if dGyro &amp;amp;gt; 180:&lt;br /&gt;
    dGyro -= 360&lt;br /&gt;
if dGyro &amp;amp;lt; -180:&lt;br /&gt;
    dGyro += 360&lt;br /&gt;
dTheta = dGyro * math.pi / 180&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Synchronizácia časových značiek ==&lt;br /&gt;
&lt;br /&gt;
Odometria sa zaznamenáva s frekvenciou &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;≈ 50 Hz&amp;lt;/math&amp;gt;, lidar produkuje &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;≈ 2000&amp;lt;/math&amp;gt; bodov za sekundu. Časové značky pochádzajú z rovnakých hodín, ale nie sú identické. Pre každý lidarový bod musíme nájsť najbližšiu polohu robota.&lt;br /&gt;
&lt;br /&gt;
Efektívne riešenie — paralelný prechod oboma logmi s jedným ukazovateľom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;ridx = 1;&lt;br /&gt;
for i = 1:length(laser_ts)&lt;br /&gt;
    while ridx &amp;amp;lt; N &amp;amp;amp;&amp;amp;amp; ...&lt;br /&gt;
      abs(robot_ts(ridx+1) ...&lt;br /&gt;
        - laser_ts(i)) &amp;amp;lt; ...&lt;br /&gt;
      abs(robot_ts(ridx) ...&lt;br /&gt;
        - laser_ts(i))&lt;br /&gt;
        ridx = ridx + 1;&lt;br /&gt;
    end&lt;br /&gt;
    % robot_ts(ridx) je &lt;br /&gt;
    % najblizsi k laser_ts(i)&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;ridx = 0&lt;br /&gt;
for i in range(len(laser_ts)):&lt;br /&gt;
    while ridx &amp;amp;lt; N-1 and \&lt;br /&gt;
      abs(robot_ts[ridx+1] &lt;br /&gt;
        - laser_ts[i]) &amp;amp;lt; \&lt;br /&gt;
      abs(robot_ts[ridx] &lt;br /&gt;
        - laser_ts[i]):&lt;br /&gt;
        ridx += 1&lt;br /&gt;
    # robot_ts[ridx] je &lt;br /&gt;
    # najblizsi k laser_ts[i]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Tento algoritmus má lineárnu zložitosť &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;O(N+M)&amp;lt;/math&amp;gt;, pretože ukazovateľ &amp;lt;code&amp;gt;ridx&amp;lt;/code&amp;gt; sa nikdy nevracia — funguje to, pretože oba logy sú chronologicky usporiadané.&lt;br /&gt;
&lt;br /&gt;
== Filtrovanie neplatných lidarových meraní ==&lt;br /&gt;
&lt;br /&gt;
Nie všetky lidarové body sú platné. Pred spracovaním je nutné vyradiť:&lt;br /&gt;
&lt;br /&gt;
* merania s nulovou vzdialenosťou (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d = 0&amp;lt;/math&amp;gt;) — lidar nezachytil odraz,&lt;br /&gt;
* merania s nízkou kvalitou (odporúčame prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\text{quality} ≥ 10&amp;lt;/math&amp;gt;),&lt;br /&gt;
* voliteľne merania mimo dosahu senzora (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d &amp;gt; 12000 mm&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;if laser_dist(i) &amp;amp;lt; 20 || ...&lt;br /&gt;
   laser_qual(i) &amp;amp;lt; 10&lt;br /&gt;
    continue;&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;if dist &amp;lt; 20 or quality &amp;lt; 10:&lt;br /&gt;
    continue&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
= Postup spracovania dát =&lt;br /&gt;
&lt;br /&gt;
Tu je celkový algoritmus zhrnutý do piatich krokov. Kúsky kódu z predchádzajúcich sekcií spojte do jedného skriptu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Načítajte oba súbory.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;R = load(&#039;robot.log&#039;);&lt;br /&gt;
robot_ts = R(:,1);&lt;br /&gt;
encL = R(:,2); encR = R(:,3);&lt;br /&gt;
gyro = R(:,4);&lt;br /&gt;
&lt;br /&gt;
L = load(&#039;laser.log&#039;);&lt;br /&gt;
laser_ts = L(:,1);&lt;br /&gt;
laser_d  = L(:,2);&lt;br /&gt;
laser_a  = L(:,3);&lt;br /&gt;
laser_q  = L(:,4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import numpy as np, math&lt;br /&gt;
R = np.loadtxt(&#039;robot.log&#039;)&lt;br /&gt;
robot_ts = R[:,0]&lt;br /&gt;
encL = R[:,1]; encR = R[:,2]&lt;br /&gt;
gyro = R[:,3]&lt;br /&gt;
&lt;br /&gt;
L = np.loadtxt(&#039;laser.log&#039;)&lt;br /&gt;
laser_ts = L[:,0]&lt;br /&gt;
laser_d  = L[:,1]&lt;br /&gt;
laser_a  = L[:,2]&lt;br /&gt;
laser_q  = L[:,3]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Vypočítajte trajektóriu robota&#039;&#039;&#039; (sekcie [[#sec:kinematika|5.1]]–[[#sec:deadreckoning|5.2]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pre každý krok &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k = 2, \ldots, N&amp;lt;/math&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Vypočítajte &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick_L&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick_R&amp;lt;/math&amp;gt; s korekciou pretečenia (rov. [[#eq:wrap_enc|[eq:wrap_enc]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Prepočítajte na dráhy &#039;&#039;d_L&#039;&#039;, &#039;&#039;d_R&#039;&#039; (rov. [[#eq:dl_dr|[eq:dl_dr]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Vypočítajte &#039;&#039;d_c&#039;&#039; a &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta&amp;lt;/math&amp;gt; (rov. [[#eq:dc_dtheta|[eq:dc_dtheta]]] alebo [[#eq:gyro_delta|[eq:gyro_delta]]] alebo [[#eq:compfilter|[eq:compfilter]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Aktualizujte &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x(k)&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y(k)&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(k)&amp;lt;/math&amp;gt; (rov. [[#eq:update|[eq:update]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Výsledkom sú polia &amp;lt;code&amp;gt;robot_x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;robot_y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;robot_theta&amp;lt;/code&amp;gt; o dĺžke &#039;&#039;N&#039;&#039;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Transformujte lidarové body do mapy&#039;&#039;&#039; (sekcia [[#sec:lidar_transform|5.4]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pre každé platné meranie &#039;&#039;i&#039;&#039; (po filtrovaní, sekcia [[#sec:filter|6.4]]):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Nájdite najbližšiu polohu robota &#039;&#039;k&#039;&#039; podľa timestampu (sekcia [[#sec:sync|6.3]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Aplikujte transformáciu (rov. [[#eq:lidar_transform|[eq:lidar_transform]]]) s použitím &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x_R, y_R, \theta)&amp;lt;/math&amp;gt; z kroku &#039;&#039;k&#039;&#039;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Uložte globálne súradnice bodu do poľa mapy.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Vykreslite výsledok.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;figure; hold on; axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Steny bludiska&lt;br /&gt;
plot(map_x, map_y, &#039;.&#039;, ...&lt;br /&gt;
     &#039;Color&#039;, [.5 .5 .5], ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 1);&lt;br /&gt;
&lt;br /&gt;
% Trajektoria&lt;br /&gt;
plot(robot_x, robot_y, ...&lt;br /&gt;
     &#039;b-&#039;, &#039;LineWidth&#039;, 2);&lt;br /&gt;
&lt;br /&gt;
% Start a ciel&lt;br /&gt;
plot(0, 0, &#039;go&#039;, ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 10, ...&lt;br /&gt;
     &#039;MarkerFaceColor&#039;, &#039;g&#039;);&lt;br /&gt;
plot(robot_x(end), ...&lt;br /&gt;
     robot_y(end), &#039;rs&#039;, ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 8, ...&lt;br /&gt;
     &#039;MarkerFaceColor&#039;, &#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
xlabel(&#039;x [m]&#039;);&lt;br /&gt;
ylabel(&#039;y [m]&#039;);&lt;br /&gt;
title(&#039;Mapa bludiska&#039;);&lt;br /&gt;
legend(&#039;Steny&#039;, &#039;Trajektoria&#039;, ...&lt;br /&gt;
       &#039;Start&#039;, &#039;Ciel&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
ax.set_aspect(&#039;equal&#039;)&lt;br /&gt;
ax.grid(True)&lt;br /&gt;
&lt;br /&gt;
# Steny bludiska&lt;br /&gt;
ax.plot(map_x, map_y, &#039;.&#039;,&lt;br /&gt;
        color=&#039;gray&#039;,&lt;br /&gt;
        markersize=0.5)&lt;br /&gt;
&lt;br /&gt;
# Trajektoria&lt;br /&gt;
ax.plot(robot_x, robot_y,&lt;br /&gt;
        &#039;b-&#039;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Start a ciel&lt;br /&gt;
ax.plot(0, 0, &#039;go&#039;,&lt;br /&gt;
        markersize=10)&lt;br /&gt;
ax.plot(robot_x[-1],&lt;br /&gt;
        robot_y[-1], &#039;rs&#039;,&lt;br /&gt;
        markersize=8)&lt;br /&gt;
&lt;br /&gt;
ax.set_xlabel(&#039;x [m]&#039;)&lt;br /&gt;
ax.set_ylabel(&#039;y [m]&#039;)&lt;br /&gt;
ax.set_title(&#039;Mapa bludiska&#039;)&lt;br /&gt;
ax.legend([&#039;Steny&#039;,&lt;br /&gt;
           &#039;Trajektoria&#039;,&lt;br /&gt;
           &#039;Start&#039;, &#039;Ciel&#039;])&lt;br /&gt;
plt.show()&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Porovnajte tri metódy orientácie.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Vykreslite trajektóriu a priebeh uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(t)&amp;lt;/math&amp;gt; pre všetky tri prístupy (A, B, C) do spoločného grafu. Diskutujte rozdiely.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kontrolné otázky a bonusové úlohy =&lt;br /&gt;
&lt;br /&gt;
# Prečo používame &#039;&#039;stredný uhol&#039;&#039; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta_{mid}&amp;lt;/math&amp;gt; a nie &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(k{-}1)&amp;lt;/math&amp;gt;? Aká chyba by vznikla pri čistej Eulerovej metóde?&lt;br /&gt;
# Čo sa stane, ak vynecháte korekciu pretečenia enkodérov? Vyskúšajte a porovnajte výsledky.&lt;br /&gt;
# Pomocou mapy z lidaru odmerajte rozmery bludiska. Porovnajte so skutočnosťou.&lt;br /&gt;
# Dokážete z lidarových dát &#039;&#039;overiť&#039;&#039; prepočtovú konštantu &#039;&#039;c_f&#039;&#039;? &#039;&#039;Pomôcka:&#039;&#039; lidar meria vzdialenosti v milimetroch absolútne — nezávisí od &#039;&#039;c_f&#039;&#039;. Nájdite vzdialenú stenu viditeľnú zo začiatku aj z konca trasy a porovnajte posun nameraný lidarom s počtom tickov enkodéra.&lt;br /&gt;
# &#039;&#039;&#039;(Bonus)&#039;&#039;&#039; Implementujte jednoduchú mriežkovú mapu (occupancy grid) a porovnajte s mračnom bodov.&lt;br /&gt;
# &#039;&#039;&#039;(Bonus)&#039;&#039;&#039; Čo sa stane s mapou pri dlhšej jazde (desiatky metrov)? Prečo sa steny “rozmazávajú”? Aké riešenie ponúka SLAM?&lt;br /&gt;
&lt;br /&gt;
= Príloha: Užitočné konštanty a vzorce =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|| Rozchod kolies&lt;br /&gt;
|| &#039;&#039;L&#039;&#039; = 0,230 m&lt;br /&gt;
|-&lt;br /&gt;
|| Prepočtový faktor&lt;br /&gt;
|| &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Pretečenie enkodérov&lt;br /&gt;
|| 16-bit: rozsah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; – &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt;, prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±32 768&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Pretečenie gyroskopu&lt;br /&gt;
|| rozsah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt;, prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Konverzia stupne → radiány&lt;br /&gt;
|| &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha_{rad} = \alpha_{\deg} · \pi / 180&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Konverzia mm → m&lt;br /&gt;
|| &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d_{\text{m}} = d_{mm} / 1000&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Cvičenia]]&lt;br /&gt;
[[Kategória:Mobilná robotika]]&lt;br /&gt;
[[Kategória:Kobuki]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Kobuki&amp;diff=18635</id>
		<title>Kobuki</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Kobuki&amp;diff=18635"/>
		<updated>2026-05-06T19:12:41Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Kinematika diferenciálneho podvozku */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mapovanie bludiska mobilným robotom =&lt;br /&gt;
&#039;&#039;&#039;Cvičenie z mobilnej robotiky — Kobuki + RPlidar A1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Cieľ cvičenia =&lt;br /&gt;
&lt;br /&gt;
Cieľom cvičenia je ručne previesť mobilného robota cez bludisko, zaznamenať dáta z odometrie a laserového diaľkomera (lidaru), a následne z nameraných dát zrekonštruovať:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;trajektóriu robota&#039;&#039;&#039; v rovine &#039;&#039;x&#039;&#039;–&#039;&#039;y&#039;&#039; (dead reckoning z enkodérov a gyroskopu),&lt;br /&gt;
# &#039;&#039;&#039;plánik bludiska&#039;&#039;&#039; (mračno bodov z lidaru transformované do globálnych súradníc).&lt;br /&gt;
&lt;br /&gt;
Spracovanie dát vykonáte &#039;&#039;offline&#039;&#039; v prostredí Matlab alebo Python na základe dvoch logovacích súborov: &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; (odometria) a &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt; (lidar).&lt;br /&gt;
&lt;br /&gt;
= Technický opis zariadení =&lt;br /&gt;
&lt;br /&gt;
== Mobilný robot Kobuki ==&lt;br /&gt;
&lt;br /&gt;
Kobuki je kompaktná mobilná platforma s diferenciálnym podvozkom — má dve nezávisle poháňané kolesá a jedno voľnobežné (kastorové) koleso. Pohyb robota sa meria inkrementálnymi optickými enkodérmi na oboch kolesách a jednoosovým gyroskopom.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Technické parametre robota Kobuki&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Kategória&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Parameter&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Hodnota&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Rozmery&lt;br /&gt;
|| Priemer tela&lt;br /&gt;
|| 351.5 mm (kruh)&lt;br /&gt;
|-&lt;br /&gt;
|| Výška&lt;br /&gt;
|| 124.8 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Pohon a kinematika&lt;br /&gt;
|| Typ podvozku&lt;br /&gt;
|| diferenciálny (2 kolesá + kastor)&lt;br /&gt;
|-&lt;br /&gt;
|| Rozchod kolies (wheelbase)&lt;br /&gt;
|| &#039;&#039;L&#039;&#039; = 230 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Polomer kolesa&lt;br /&gt;
|| &#039;&#039;r&#039;&#039; = 35 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Šírka kolesa&lt;br /&gt;
|| 21 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Dynamika&lt;br /&gt;
|| Max. translačná rýchlosť&lt;br /&gt;
|| 70 cm s&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Max. rotačná rýchlosť&lt;br /&gt;
|| 180°/s (gyroskop spoľahlivý do 110°/s)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Enkodéry&lt;br /&gt;
|| Rozlíšenie enkodéra&lt;br /&gt;
|| 52 tick/ot. enkodéra&lt;br /&gt;
|-&lt;br /&gt;
|| Prevodový pomer&lt;br /&gt;
|| 6545 : 132 = 49,5833&lt;br /&gt;
|-&lt;br /&gt;
|| Ticky na otáčku kolesa&lt;br /&gt;
|| 52 × 49,5833 = 2578,33 tick/ot.&lt;br /&gt;
|-&lt;br /&gt;
|| Registre enkodérov&lt;br /&gt;
|| 16-bit unsigned (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Prepočtové konštanty&lt;br /&gt;
|| Tick → metre&lt;br /&gt;
|| &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Ekvivalent&lt;br /&gt;
|| ≈ 11,7 tick/mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Gyroskop&lt;br /&gt;
|| Typ&lt;br /&gt;
|| 1-osový, továrensky kalibrovaný&lt;br /&gt;
|-&lt;br /&gt;
|| Rozsah&lt;br /&gt;
|| do 110°/s&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot;| Senzory a bezpečnosť&lt;br /&gt;
|| Nárazníky (bumpers)&lt;br /&gt;
|| ľavý, stredný, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Senzory útesu (cliff)&lt;br /&gt;
|| ľavý, stredný, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Senzor poklesu kolesa&lt;br /&gt;
|| ľavý, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Dátová frekvencia&lt;br /&gt;
|| 50 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Pripojenie k PC&lt;br /&gt;
|| USB alebo RX/TX piny&lt;br /&gt;
|-&lt;br /&gt;
|| Ochrana motora&lt;br /&gt;
|| vypnutie pri &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;I &amp;gt; 3 A&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Napájanie&lt;br /&gt;
|| Batéria&lt;br /&gt;
|| Li-Ion 14.8 V, 2200 mAh&lt;br /&gt;
|-&lt;br /&gt;
|| Výdrž&lt;br /&gt;
|| 3/7 h (malá/veľká batéria)&lt;br /&gt;
|-&lt;br /&gt;
|| Nosnosť&lt;br /&gt;
|| 5 kg (tvrdá podlaha) / 4 kg (koberec)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Laserový diaľkomer RPlidar A1 ==&lt;br /&gt;
&lt;br /&gt;
RPlidar A1 je 2D laserový skener (lidar), ktorý rotáciou laserového lúča okolo zvislej osi sníma vzdialenosti k prekážkam v celom rozsahu 360°. Senzor je upevnený na robot v strede medzi kolesami (offset &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;= 0&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Technické parametre lidaru RPlidar A1&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Kategória&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Parameter&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Hodnota&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Rozmery a hmotnosť&lt;br /&gt;
|| Rozmery&lt;br /&gt;
|| 98,5 × 70 × 60 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Hmotnosť&lt;br /&gt;
|| 170 g&lt;br /&gt;
|-&lt;br /&gt;
|| Napájanie&lt;br /&gt;
|| externé (z robota)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Rozsah&lt;br /&gt;
|| Vzdialenosť&lt;br /&gt;
|| 0.15 – 12 m (biele objekty)&lt;br /&gt;
|-&lt;br /&gt;
|| Uhlový rozsah&lt;br /&gt;
|| 0 – 360°&lt;br /&gt;
|-&lt;br /&gt;
|| Rozlíšenie vzdialenosti&lt;br /&gt;
|| &amp;lt; 0,5 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Rýchlosť&lt;br /&gt;
|| Uhlové rozlíšenie&lt;br /&gt;
|| &amp;lt; 1°&lt;br /&gt;
|-&lt;br /&gt;
|| Doba jedného merania&lt;br /&gt;
|| 0.5 ms&lt;br /&gt;
|-&lt;br /&gt;
|| Vzorkovacia frekvencia&lt;br /&gt;
|| 2000 – 2010 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Rýchlosť otáčania (scan rate)&lt;br /&gt;
|| 1 – 10 Hz, typicky 5.5 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Kvalita merania&lt;br /&gt;
|| Rozsah hodnôt&lt;br /&gt;
|| 0 – 15 (vyššia = lepšia)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Postup merania =&lt;br /&gt;
&lt;br /&gt;
# Umiestnite robota na štartovaciu pozíciu pred vstupom do bludiska. Zapnite robota a spustite záznam dát.&lt;br /&gt;
# Pomocou joysticku preveďte robota cez celé bludisko. &#039;&#039;&#039;Prejdite aj všetky slepé uličky&#039;&#039;&#039; — cieľom je získať kompletný obraz o geometrii bludiska.&lt;br /&gt;
# Pohybujte sa plynulo, bez prudkých zmien smeru. Pri otáčaní neprekračujte rotačnú rýchlosť 110°/s (limit gyroskopu).&lt;br /&gt;
# Po prechode bludiskom zastavte robota a ukončite záznam.&lt;br /&gt;
# Z robota stiahnite dva logovacie súbory: &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Formát záznamových súborov =&lt;br /&gt;
&lt;br /&gt;
== Súbor &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; — odometria ==&lt;br /&gt;
&lt;br /&gt;
Každý riadok obsahuje jedno meranie, hodnoty sú oddelené medzerami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;timestamp_us&amp;amp;gt; &amp;amp;lt;enc_left&amp;amp;gt; &amp;amp;lt;enc_right&amp;amp;gt; &amp;amp;lt;gyro_deg&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Štruktúra súboru &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Stĺpec&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Popis&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| 1 — Timestamp&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint64&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Čas merania v mikrosekundách&lt;br /&gt;
|-&lt;br /&gt;
|| 2 — Enc. Left&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kumulatívny počet tickov ľavého enkodéra (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
|| 3 — Enc. Right&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kumulatívny počet tickov pravého enkodéra (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
|| 4 — Gyro&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Uhol z gyroskopu v stupňoch (-180 až +180)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklad záznamov:&lt;br /&gt;
&lt;br /&gt;
  3067284773  1288  58777  174.98&lt;br /&gt;
  3067301111  1288  58777  174.98&lt;br /&gt;
  3067323915  1288  58777  174.98&lt;br /&gt;
&lt;br /&gt;
Frekvencia záznamu zodpovedá dátovej frekvencii robota, t. j. približne 50 Hz.&lt;br /&gt;
&lt;br /&gt;
== Súbor &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt; — lidar ==&lt;br /&gt;
&lt;br /&gt;
Každý riadok obsahuje jedno meranie laserového lúča:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;timestamp_us&amp;amp;gt; &amp;amp;lt;distance_mm&amp;amp;gt; &amp;amp;lt;angle_deg&amp;amp;gt; &amp;amp;lt;quality&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Štruktúra súboru &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Stĺpec&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Popis&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| 1 — Timestamp&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint64&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Čas merania v mikrosekundách&lt;br /&gt;
|-&lt;br /&gt;
|| 2 — Distance&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Vzdialenosť k prekážke v milimetroch&lt;br /&gt;
|-&lt;br /&gt;
|| 3 — Angle&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Uhol laserového lúča v stupňoch (0–360), &#039;&#039;v smere hodinových ručičiek&#039;&#039; od prednej časti robota&lt;br /&gt;
|-&lt;br /&gt;
|| 4 — Quality&lt;br /&gt;
|| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kvalita merania (0–15); 0 = neplatné&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklad záznamov:&lt;br /&gt;
&lt;br /&gt;
  3067236764  3713.75  351.047   15&lt;br /&gt;
  3067237463  3666.75  352.438   15&lt;br /&gt;
  3067237467  3708.75  353.812   15&lt;br /&gt;
&lt;br /&gt;
Jedna kompletná otáčka lidaru (sken) obsahuje typicky okolo 260 bodov. Pri scan rate cca 7,8 Hz to zodpovedá vzorkovacej frekvencii cca 2000 Hz.&lt;br /&gt;
&lt;br /&gt;
= Teoretický základ — ideálny prípad =&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole odvodíme všetky vzťahy za predpokladu, že dáta sú bezchybné: enkodéry nepretekajú, gyroskop nedriftuje a časy sú presne synchronizované. Praktické komplikácie riešime v kapitole [[#sec:prakticke|6]].&lt;br /&gt;
&lt;br /&gt;
== Kinematika diferenciálneho podvozku ==&lt;br /&gt;
&lt;br /&gt;
Robot má dve kolesá vzdialené &#039;&#039;L&#039;&#039; = 0,23 m. Stredom medzi nimi je referenčný bod &#039;&#039;P&#039;&#039;, ktorého polohu (x, y) a orientáciu θ chceme sledovať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V každom časovom kroku (medzi vzorkou &#039;&#039;k-1&#039;&#039; a &#039;&#039;k&#039;&#039;) enkodéry napočítajú &#039;&#039;Δtick_L&#039;&#039; a &#039;&#039;Δtick_R&#039;&#039; impulzov. Dráha jednotlivých kolies je: &#039;&#039;d_L = Δtick_L · c_f,  d_R = Δtick_R · c_f&#039;&#039;,&lt;br /&gt;
kde &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt; je prepočtový faktor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:kinematika&amp;quot; class=&amp;quot;figure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Obr. 1:&#039;&#039;&#039; &#039;&#039;Kinematický model diferenciálneho podvozku. d&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;, d&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; sú dráhy kolies, d&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; je stredná dráha bodu P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Stredná dráha (pohyb bodu &#039;&#039;P&#039;&#039;) a zmena orientácie sú: &lt;br /&gt;
 d_c = (d_L + d_R)/2,      &lt;br /&gt;
  Δθ = (d_R - d_L)/L.&lt;br /&gt;
&lt;br /&gt;
Intuitívne: ak sa obe kolesá pohnú rovnako (d_L = d_R), robot ide rovno (Δθ = 0). Ak sa pravé koleso pohne viac, robot zatáča doľava (Δθ &amp;gt; 0 v štandardnej konvencii).&lt;br /&gt;
&lt;br /&gt;
== Aktualizácia polohy (dead reckoning) ==&lt;br /&gt;
&lt;br /&gt;
Polohu robota aktualizujeme iteratívne. Používame &#039;&#039;aproximáciu stredným uhlom&#039;&#039; (second-order midpoint method), ktorá je výrazne presnejšia než jednoduchá Eulerova metóda: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\theta_{mid} &amp;amp;= \theta(k{-}1) + \frac{\Delta\theta}{2} \\[4pt]&lt;br /&gt;
x(k) &amp;amp;= x(k{-}1) + d_c · \cos(\theta_{mid}) \\[2pt]&lt;br /&gt;
y(k) &amp;amp;= y(k{-}1) + d_c · \sin(\theta_{mid}) \\[2pt]&lt;br /&gt;
\theta(k) &amp;amp;= \theta(k{-}1) + \Delta\theta&lt;br /&gt;
\end{aligned}&lt;br /&gt;
}&lt;br /&gt;
\label{eq:update}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Počiatočné podmienky: &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x(0) = 0&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y(0) = 0&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(0) = 0&amp;lt;/math&amp;gt; (robot smeruje v osi &#039;&#039;x&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Tri zdroje orientácie ==&lt;br /&gt;
&lt;br /&gt;
Pre výpočet zmeny uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta&amp;lt;/math&amp;gt; máme tri možnosti:&lt;br /&gt;
&lt;br /&gt;
=== A) Len enkodéry ===&lt;br /&gt;
&lt;br /&gt;
Uhol sa počíta podľa rovnice [[#eq:dc_dtheta|[eq:dc_dtheta]]]. Jednoduché, ale citlivé na šmýkanie kolies.&lt;br /&gt;
&lt;br /&gt;
=== B) Len gyroskop ===&lt;br /&gt;
&lt;br /&gt;
Gyroskop Kobuki dáva priamo absolútny uhol (firmvér integruje uhlovú rýchlosť interne). Zmenu uhla medzi dvoma vzorkami vypočítame ako: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Delta\theta_{gyro} = [gyro(k) - gyro(k{-}1)] · \frac{\pi}{180}&lt;br /&gt;
\label{eq:gyro_delta}&amp;lt;/math&amp;gt; s korekciou pretečenia cez &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt; (pozri sekciu [[#sec:pretecenie_gyro|6.2]]). Táto metóda je odolná voči šmyku kolies, ale dlhodobo trpí driftom gyroskopu.&lt;br /&gt;
&lt;br /&gt;
=== C) Komplementárny filter ===&lt;br /&gt;
&lt;br /&gt;
Fúzia oboch zdrojov jedným parametrom &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha \in (0, 1)&amp;lt;/math&amp;gt;: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{\Delta\theta = \alpha · \Delta\theta_{gyro} + (1 - \alpha) · \Delta\theta_{enc}}&lt;br /&gt;
\label{eq:compfilter}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameter &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; vyjadruje “dôveru” v gyroskop. Typicky &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha = 0,95&amp;lt;/math&amp;gt; — gyroskop je na krátkych škálach presnejší, enkodéry kompenzujú jeho dlhodobý drift. Na ladenie použite uzavretú trasu — správne &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; minimalizuje odchýlku koncovej polohy od štartu.&lt;br /&gt;
&lt;br /&gt;
== Transformácia lidarových bodov do mapy ==&lt;br /&gt;
&lt;br /&gt;
Lidar meria vzdialenosť &#039;&#039;d&#039;&#039; v smere uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; (v stupňoch, rastúci &#039;&#039;v smere hodinových ručičiek&#039;&#039; od prednej časti robota). Cieľom je transformovať tento bod zo súradníc robota do globálnych (mapových) súradníc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:lidar&amp;quot; class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Priama transformácia z polárnych súradníc lidaru do mapy: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\alpha_{world} &amp;amp;= \theta - \alpha · \frac{\pi}{180} \\[4pt]&lt;br /&gt;
x_{global} &amp;amp;= x_R + \frac{d}{1000} · \cos(\alpha_{world}) \\[2pt]&lt;br /&gt;
y_{global} &amp;amp;= y_R + \frac{d}{1000} · \sin(\alpha_{world})&lt;br /&gt;
\end{aligned}&lt;br /&gt;
}&lt;br /&gt;
\label{eq:lidar_transform}&amp;lt;/math&amp;gt; kde &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta&amp;lt;/math&amp;gt; je orientácia robota v radiánoch, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; je uhol lidaru v stupňoch (CW), &#039;&#039;d&#039;&#039; je vzdialenosť v mm a &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x_R, y_R)&amp;lt;/math&amp;gt; je poloha robota v metroch. Znamienko mínus pred &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; konvertuje smysel otáčania z CW na matematicky kladný (CCW).&lt;br /&gt;
&lt;br /&gt;
= Riešenie praktických problémov =&lt;br /&gt;
&lt;br /&gt;
== Pretečenie enkodérov ==&lt;br /&gt;
&lt;br /&gt;
Enkodéry Kobuki sú 16-bitové bezznamienkové čítače s rozsahom &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; – &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt;. Keď čítač dosiahne &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt; a koleso sa ďalej otáča, hodnota preskočí na &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; (a opačne pri pohybe vzad). V surovom rozdiele &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick = enc(k) - enc(k{-}1)&amp;lt;/math&amp;gt; sa to prejaví obrovským skokom.&lt;br /&gt;
&lt;br /&gt;
Korekcia: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Deltatick_{cor} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
\Deltatick - 65536 &amp;amp; \text{ak } \Deltatick &amp;gt; 32768 \\&lt;br /&gt;
\Deltatick + 65536 &amp;amp; \text{ak } \Deltatick &amp;lt; -32768 \\&lt;br /&gt;
\Deltatick &amp;amp; \text{inak}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\label{eq:wrap_enc}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: yellow!20&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: warnorange&amp;quot;&amp;gt;{{Upozornenie|typ=pozor|text=&amp;lt;/span&amp;gt; Bez tejto korekcie dostanete v trajektórii obrovské skoky rádovo desiatky metrov. Toto je najčastejší zdroj chýb!}}&lt;br /&gt;
&lt;br /&gt;
Ukážka v Matlabu / Pythone:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;dTick = enc(k) - enc(k-1);&lt;br /&gt;
if dTick &amp;amp;gt; 32768&lt;br /&gt;
    dTick = dTick - 65536;&lt;br /&gt;
end&lt;br /&gt;
if dTick &amp;amp;lt; -32768&lt;br /&gt;
    dTick = dTick + 65536;&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;dTick = enc[k] - enc[k-1]&lt;br /&gt;
if dTick &amp;gt; 32768:&lt;br /&gt;
    dTick -= 65536&lt;br /&gt;
if dTick &amp;lt; -32768:&lt;br /&gt;
    dTick += 65536&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Pretečenie gyroskopu ==&lt;br /&gt;
&lt;br /&gt;
Gyroskop vracia uhol v rozsahu &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(-180^{\circ}, +180^{\circ}]&amp;lt;/math&amp;gt;. Pri prechode cez &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt; hodnota skočí, napr. z &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;+179^{\circ}&amp;lt;/math&amp;gt; na &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;-179^{\circ}&amp;lt;/math&amp;gt;. To nie je skutočná zmena o &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;358^{\circ}&amp;lt;/math&amp;gt;, ale o &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;+2^{\circ}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Korekcia: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Deltagyro_{cor} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
\Deltagyro - 360 &amp;amp; \text{ak } \Deltagyro &amp;gt; 180 \\&lt;br /&gt;
\Deltagyro + 360 &amp;amp; \text{ak } \Deltagyro &amp;lt; -180 \\&lt;br /&gt;
\Deltagyro &amp;amp; \text{inak}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\label{eq:wrap_gyro}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;dGyro = gyro(k) - gyro(k-1);&lt;br /&gt;
if dGyro &amp;amp;gt; 180&lt;br /&gt;
    dGyro = dGyro - 360;&lt;br /&gt;
end&lt;br /&gt;
if dGyro &amp;amp;lt; -180&lt;br /&gt;
    dGyro = dGyro + 360;&lt;br /&gt;
end&lt;br /&gt;
dTheta = dGyro * pi / 180;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;dGyro = gyro[k] - gyro[k-1]&lt;br /&gt;
if dGyro &amp;amp;gt; 180:&lt;br /&gt;
    dGyro -= 360&lt;br /&gt;
if dGyro &amp;amp;lt; -180:&lt;br /&gt;
    dGyro += 360&lt;br /&gt;
dTheta = dGyro * math.pi / 180&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Synchronizácia časových značiek ==&lt;br /&gt;
&lt;br /&gt;
Odometria sa zaznamenáva s frekvenciou &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;≈ 50 Hz&amp;lt;/math&amp;gt;, lidar produkuje &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;≈ 2000&amp;lt;/math&amp;gt; bodov za sekundu. Časové značky pochádzajú z rovnakých hodín, ale nie sú identické. Pre každý lidarový bod musíme nájsť najbližšiu polohu robota.&lt;br /&gt;
&lt;br /&gt;
Efektívne riešenie — paralelný prechod oboma logmi s jedným ukazovateľom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;ridx = 1;&lt;br /&gt;
for i = 1:length(laser_ts)&lt;br /&gt;
    while ridx &amp;amp;lt; N &amp;amp;amp;&amp;amp;amp; ...&lt;br /&gt;
      abs(robot_ts(ridx+1) ...&lt;br /&gt;
        - laser_ts(i)) &amp;amp;lt; ...&lt;br /&gt;
      abs(robot_ts(ridx) ...&lt;br /&gt;
        - laser_ts(i))&lt;br /&gt;
        ridx = ridx + 1;&lt;br /&gt;
    end&lt;br /&gt;
    % robot_ts(ridx) je &lt;br /&gt;
    % najblizsi k laser_ts(i)&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;ridx = 0&lt;br /&gt;
for i in range(len(laser_ts)):&lt;br /&gt;
    while ridx &amp;amp;lt; N-1 and \&lt;br /&gt;
      abs(robot_ts[ridx+1] &lt;br /&gt;
        - laser_ts[i]) &amp;amp;lt; \&lt;br /&gt;
      abs(robot_ts[ridx] &lt;br /&gt;
        - laser_ts[i]):&lt;br /&gt;
        ridx += 1&lt;br /&gt;
    # robot_ts[ridx] je &lt;br /&gt;
    # najblizsi k laser_ts[i]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Tento algoritmus má lineárnu zložitosť &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;O(N+M)&amp;lt;/math&amp;gt;, pretože ukazovateľ &amp;lt;code&amp;gt;ridx&amp;lt;/code&amp;gt; sa nikdy nevracia — funguje to, pretože oba logy sú chronologicky usporiadané.&lt;br /&gt;
&lt;br /&gt;
== Filtrovanie neplatných lidarových meraní ==&lt;br /&gt;
&lt;br /&gt;
Nie všetky lidarové body sú platné. Pred spracovaním je nutné vyradiť:&lt;br /&gt;
&lt;br /&gt;
* merania s nulovou vzdialenosťou (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d = 0&amp;lt;/math&amp;gt;) — lidar nezachytil odraz,&lt;br /&gt;
* merania s nízkou kvalitou (odporúčame prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\text{quality} ≥ 10&amp;lt;/math&amp;gt;),&lt;br /&gt;
* voliteľne merania mimo dosahu senzora (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d &amp;gt; 12000 mm&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;if laser_dist(i) &amp;amp;lt; 20 || ...&lt;br /&gt;
   laser_qual(i) &amp;amp;lt; 10&lt;br /&gt;
    continue;&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;if dist &amp;lt; 20 or quality &amp;lt; 10:&lt;br /&gt;
    continue&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
= Postup spracovania dát =&lt;br /&gt;
&lt;br /&gt;
Tu je celkový algoritmus zhrnutý do piatich krokov. Kúsky kódu z predchádzajúcich sekcií spojte do jedného skriptu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Načítajte oba súbory.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;R = load(&#039;robot.log&#039;);&lt;br /&gt;
robot_ts = R(:,1);&lt;br /&gt;
encL = R(:,2); encR = R(:,3);&lt;br /&gt;
gyro = R(:,4);&lt;br /&gt;
&lt;br /&gt;
L = load(&#039;laser.log&#039;);&lt;br /&gt;
laser_ts = L(:,1);&lt;br /&gt;
laser_d  = L(:,2);&lt;br /&gt;
laser_a  = L(:,3);&lt;br /&gt;
laser_q  = L(:,4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import numpy as np, math&lt;br /&gt;
R = np.loadtxt(&#039;robot.log&#039;)&lt;br /&gt;
robot_ts = R[:,0]&lt;br /&gt;
encL = R[:,1]; encR = R[:,2]&lt;br /&gt;
gyro = R[:,3]&lt;br /&gt;
&lt;br /&gt;
L = np.loadtxt(&#039;laser.log&#039;)&lt;br /&gt;
laser_ts = L[:,0]&lt;br /&gt;
laser_d  = L[:,1]&lt;br /&gt;
laser_a  = L[:,2]&lt;br /&gt;
laser_q  = L[:,3]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Vypočítajte trajektóriu robota&#039;&#039;&#039; (sekcie [[#sec:kinematika|5.1]]–[[#sec:deadreckoning|5.2]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pre každý krok &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k = 2, \ldots, N&amp;lt;/math&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Vypočítajte &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick_L&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick_R&amp;lt;/math&amp;gt; s korekciou pretečenia (rov. [[#eq:wrap_enc|[eq:wrap_enc]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Prepočítajte na dráhy &#039;&#039;d_L&#039;&#039;, &#039;&#039;d_R&#039;&#039; (rov. [[#eq:dl_dr|[eq:dl_dr]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Vypočítajte &#039;&#039;d_c&#039;&#039; a &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta&amp;lt;/math&amp;gt; (rov. [[#eq:dc_dtheta|[eq:dc_dtheta]]] alebo [[#eq:gyro_delta|[eq:gyro_delta]]] alebo [[#eq:compfilter|[eq:compfilter]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Aktualizujte &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x(k)&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y(k)&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(k)&amp;lt;/math&amp;gt; (rov. [[#eq:update|[eq:update]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Výsledkom sú polia &amp;lt;code&amp;gt;robot_x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;robot_y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;robot_theta&amp;lt;/code&amp;gt; o dĺžke &#039;&#039;N&#039;&#039;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Transformujte lidarové body do mapy&#039;&#039;&#039; (sekcia [[#sec:lidar_transform|5.4]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pre každé platné meranie &#039;&#039;i&#039;&#039; (po filtrovaní, sekcia [[#sec:filter|6.4]]):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Nájdite najbližšiu polohu robota &#039;&#039;k&#039;&#039; podľa timestampu (sekcia [[#sec:sync|6.3]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Aplikujte transformáciu (rov. [[#eq:lidar_transform|[eq:lidar_transform]]]) s použitím &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x_R, y_R, \theta)&amp;lt;/math&amp;gt; z kroku &#039;&#039;k&#039;&#039;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Uložte globálne súradnice bodu do poľa mapy.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Vykreslite výsledok.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;figure; hold on; axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Steny bludiska&lt;br /&gt;
plot(map_x, map_y, &#039;.&#039;, ...&lt;br /&gt;
     &#039;Color&#039;, [.5 .5 .5], ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 1);&lt;br /&gt;
&lt;br /&gt;
% Trajektoria&lt;br /&gt;
plot(robot_x, robot_y, ...&lt;br /&gt;
     &#039;b-&#039;, &#039;LineWidth&#039;, 2);&lt;br /&gt;
&lt;br /&gt;
% Start a ciel&lt;br /&gt;
plot(0, 0, &#039;go&#039;, ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 10, ...&lt;br /&gt;
     &#039;MarkerFaceColor&#039;, &#039;g&#039;);&lt;br /&gt;
plot(robot_x(end), ...&lt;br /&gt;
     robot_y(end), &#039;rs&#039;, ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 8, ...&lt;br /&gt;
     &#039;MarkerFaceColor&#039;, &#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
xlabel(&#039;x [m]&#039;);&lt;br /&gt;
ylabel(&#039;y [m]&#039;);&lt;br /&gt;
title(&#039;Mapa bludiska&#039;);&lt;br /&gt;
legend(&#039;Steny&#039;, &#039;Trajektoria&#039;, ...&lt;br /&gt;
       &#039;Start&#039;, &#039;Ciel&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
ax.set_aspect(&#039;equal&#039;)&lt;br /&gt;
ax.grid(True)&lt;br /&gt;
&lt;br /&gt;
# Steny bludiska&lt;br /&gt;
ax.plot(map_x, map_y, &#039;.&#039;,&lt;br /&gt;
        color=&#039;gray&#039;,&lt;br /&gt;
        markersize=0.5)&lt;br /&gt;
&lt;br /&gt;
# Trajektoria&lt;br /&gt;
ax.plot(robot_x, robot_y,&lt;br /&gt;
        &#039;b-&#039;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Start a ciel&lt;br /&gt;
ax.plot(0, 0, &#039;go&#039;,&lt;br /&gt;
        markersize=10)&lt;br /&gt;
ax.plot(robot_x[-1],&lt;br /&gt;
        robot_y[-1], &#039;rs&#039;,&lt;br /&gt;
        markersize=8)&lt;br /&gt;
&lt;br /&gt;
ax.set_xlabel(&#039;x [m]&#039;)&lt;br /&gt;
ax.set_ylabel(&#039;y [m]&#039;)&lt;br /&gt;
ax.set_title(&#039;Mapa bludiska&#039;)&lt;br /&gt;
ax.legend([&#039;Steny&#039;,&lt;br /&gt;
           &#039;Trajektoria&#039;,&lt;br /&gt;
           &#039;Start&#039;, &#039;Ciel&#039;])&lt;br /&gt;
plt.show()&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Porovnajte tri metódy orientácie.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Vykreslite trajektóriu a priebeh uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(t)&amp;lt;/math&amp;gt; pre všetky tri prístupy (A, B, C) do spoločného grafu. Diskutujte rozdiely.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kontrolné otázky a bonusové úlohy =&lt;br /&gt;
&lt;br /&gt;
# Prečo používame &#039;&#039;stredný uhol&#039;&#039; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta_{mid}&amp;lt;/math&amp;gt; a nie &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(k{-}1)&amp;lt;/math&amp;gt;? Aká chyba by vznikla pri čistej Eulerovej metóde?&lt;br /&gt;
# Čo sa stane, ak vynecháte korekciu pretečenia enkodérov? Vyskúšajte a porovnajte výsledky.&lt;br /&gt;
# Pomocou mapy z lidaru odmerajte rozmery bludiska. Porovnajte so skutočnosťou.&lt;br /&gt;
# Dokážete z lidarových dát &#039;&#039;overiť&#039;&#039; prepočtovú konštantu &#039;&#039;c_f&#039;&#039;? &#039;&#039;Pomôcka:&#039;&#039; lidar meria vzdialenosti v milimetroch absolútne — nezávisí od &#039;&#039;c_f&#039;&#039;. Nájdite vzdialenú stenu viditeľnú zo začiatku aj z konca trasy a porovnajte posun nameraný lidarom s počtom tickov enkodéra.&lt;br /&gt;
# &#039;&#039;&#039;(Bonus)&#039;&#039;&#039; Implementujte jednoduchú mriežkovú mapu (occupancy grid) a porovnajte s mračnom bodov.&lt;br /&gt;
# &#039;&#039;&#039;(Bonus)&#039;&#039;&#039; Čo sa stane s mapou pri dlhšej jazde (desiatky metrov)? Prečo sa steny “rozmazávajú”? Aké riešenie ponúka SLAM?&lt;br /&gt;
&lt;br /&gt;
= Príloha: Užitočné konštanty a vzorce =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|| Rozchod kolies&lt;br /&gt;
|| &#039;&#039;L&#039;&#039; = 0,230 m&lt;br /&gt;
|-&lt;br /&gt;
|| Prepočtový faktor&lt;br /&gt;
|| &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Pretečenie enkodérov&lt;br /&gt;
|| 16-bit: rozsah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; – &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt;, prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±32 768&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Pretečenie gyroskopu&lt;br /&gt;
|| rozsah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt;, prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Konverzia stupne → radiány&lt;br /&gt;
|| &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha_{rad} = \alpha_{\deg} · \pi / 180&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Konverzia mm → m&lt;br /&gt;
|| &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d_{\text{m}} = d_{mm} / 1000&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Cvičenia]]&lt;br /&gt;
[[Kategória:Mobilná robotika]]&lt;br /&gt;
[[Kategória:Kobuki]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Kobuki&amp;diff=18634</id>
		<title>Kobuki</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Kobuki&amp;diff=18634"/>
		<updated>2026-05-06T19:05:45Z</updated>

		<summary type="html">&lt;p&gt;Balogh: /* Kinematika diferenciálneho podvozku */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mapovanie bludiska mobilným robotom =&lt;br /&gt;
&#039;&#039;&#039;Cvičenie z mobilnej robotiky — Kobuki + RPlidar A1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Cieľ cvičenia =&lt;br /&gt;
&lt;br /&gt;
Cieľom cvičenia je ručne previesť mobilného robota cez bludisko, zaznamenať dáta z odometrie a laserového diaľkomera (lidaru), a následne z nameraných dát zrekonštruovať:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;trajektóriu robota&#039;&#039;&#039; v rovine &#039;&#039;x&#039;&#039;–&#039;&#039;y&#039;&#039; (dead reckoning z enkodérov a gyroskopu),&lt;br /&gt;
# &#039;&#039;&#039;plánik bludiska&#039;&#039;&#039; (mračno bodov z lidaru transformované do globálnych súradníc).&lt;br /&gt;
&lt;br /&gt;
Spracovanie dát vykonáte &#039;&#039;offline&#039;&#039; v prostredí Matlab alebo Python na základe dvoch logovacích súborov: &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; (odometria) a &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt; (lidar).&lt;br /&gt;
&lt;br /&gt;
= Technický opis zariadení =&lt;br /&gt;
&lt;br /&gt;
== Mobilný robot Kobuki ==&lt;br /&gt;
&lt;br /&gt;
Kobuki je kompaktná mobilná platforma s diferenciálnym podvozkom — má dve nezávisle poháňané kolesá a jedno voľnobežné (kastorové) koleso. Pohyb robota sa meria inkrementálnymi optickými enkodérmi na oboch kolesách a jednoosovým gyroskopom.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Technické parametre robota Kobuki&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Kategória&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Parameter&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Hodnota&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Rozmery&lt;br /&gt;
|| Priemer tela&lt;br /&gt;
|| 351.5 mm (kruh)&lt;br /&gt;
|-&lt;br /&gt;
|| Výška&lt;br /&gt;
|| 124.8 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Pohon a kinematika&lt;br /&gt;
|| Typ podvozku&lt;br /&gt;
|| diferenciálny (2 kolesá + kastor)&lt;br /&gt;
|-&lt;br /&gt;
|| Rozchod kolies (wheelbase)&lt;br /&gt;
|| &#039;&#039;L&#039;&#039; = 230 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Polomer kolesa&lt;br /&gt;
|| &#039;&#039;r&#039;&#039; = 35 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Šírka kolesa&lt;br /&gt;
|| 21 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Dynamika&lt;br /&gt;
|| Max. translačná rýchlosť&lt;br /&gt;
|| 70 cm s&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Max. rotačná rýchlosť&lt;br /&gt;
|| 180°/s (gyroskop spoľahlivý do 110°/s)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Enkodéry&lt;br /&gt;
|| Rozlíšenie enkodéra&lt;br /&gt;
|| 52 tick/ot. enkodéra&lt;br /&gt;
|-&lt;br /&gt;
|| Prevodový pomer&lt;br /&gt;
|| 6545 : 132 = 49,5833&lt;br /&gt;
|-&lt;br /&gt;
|| Ticky na otáčku kolesa&lt;br /&gt;
|| 52 × 49,5833 = 2578,33 tick/ot.&lt;br /&gt;
|-&lt;br /&gt;
|| Registre enkodérov&lt;br /&gt;
|| 16-bit unsigned (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Prepočtové konštanty&lt;br /&gt;
|| Tick → metre&lt;br /&gt;
|| &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Ekvivalent&lt;br /&gt;
|| ≈ 11,7 tick/mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| Gyroskop&lt;br /&gt;
|| Typ&lt;br /&gt;
|| 1-osový, továrensky kalibrovaný&lt;br /&gt;
|-&lt;br /&gt;
|| Rozsah&lt;br /&gt;
|| do 110°/s&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot;| Senzory a bezpečnosť&lt;br /&gt;
|| Nárazníky (bumpers)&lt;br /&gt;
|| ľavý, stredný, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Senzory útesu (cliff)&lt;br /&gt;
|| ľavý, stredný, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Senzor poklesu kolesa&lt;br /&gt;
|| ľavý, pravý&lt;br /&gt;
|-&lt;br /&gt;
|| Dátová frekvencia&lt;br /&gt;
|| 50 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Pripojenie k PC&lt;br /&gt;
|| USB alebo RX/TX piny&lt;br /&gt;
|-&lt;br /&gt;
|| Ochrana motora&lt;br /&gt;
|| vypnutie pri &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;I &amp;gt; 3 A&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Napájanie&lt;br /&gt;
|| Batéria&lt;br /&gt;
|| Li-Ion 14.8 V, 2200 mAh&lt;br /&gt;
|-&lt;br /&gt;
|| Výdrž&lt;br /&gt;
|| 3/7 h (malá/veľká batéria)&lt;br /&gt;
|-&lt;br /&gt;
|| Nosnosť&lt;br /&gt;
|| 5 kg (tvrdá podlaha) / 4 kg (koberec)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Laserový diaľkomer RPlidar A1 ==&lt;br /&gt;
&lt;br /&gt;
RPlidar A1 je 2D laserový skener (lidar), ktorý rotáciou laserového lúča okolo zvislej osi sníma vzdialenosti k prekážkam v celom rozsahu 360°. Senzor je upevnený na robot v strede medzi kolesami (offset &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;= 0&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Technické parametre lidaru RPlidar A1&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Kategória&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Parameter&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Hodnota&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Rozmery a hmotnosť&lt;br /&gt;
|| Rozmery&lt;br /&gt;
|| 98,5 × 70 × 60 mm&lt;br /&gt;
|-&lt;br /&gt;
|| Hmotnosť&lt;br /&gt;
|| 170 g&lt;br /&gt;
|-&lt;br /&gt;
|| Napájanie&lt;br /&gt;
|| externé (z robota)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;| Rozsah&lt;br /&gt;
|| Vzdialenosť&lt;br /&gt;
|| 0.15 – 12 m (biele objekty)&lt;br /&gt;
|-&lt;br /&gt;
|| Uhlový rozsah&lt;br /&gt;
|| 0 – 360°&lt;br /&gt;
|-&lt;br /&gt;
|| Rozlíšenie vzdialenosti&lt;br /&gt;
|| &amp;lt; 0,5 mm&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot;| Rýchlosť&lt;br /&gt;
|| Uhlové rozlíšenie&lt;br /&gt;
|| &amp;lt; 1°&lt;br /&gt;
|-&lt;br /&gt;
|| Doba jedného merania&lt;br /&gt;
|| 0.5 ms&lt;br /&gt;
|-&lt;br /&gt;
|| Vzorkovacia frekvencia&lt;br /&gt;
|| 2000 – 2010 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Rýchlosť otáčania (scan rate)&lt;br /&gt;
|| 1 – 10 Hz, typicky 5.5 Hz&lt;br /&gt;
|-&lt;br /&gt;
|| Kvalita merania&lt;br /&gt;
|| Rozsah hodnôt&lt;br /&gt;
|| 0 – 15 (vyššia = lepšia)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Postup merania =&lt;br /&gt;
&lt;br /&gt;
# Umiestnite robota na štartovaciu pozíciu pred vstupom do bludiska. Zapnite robota a spustite záznam dát.&lt;br /&gt;
# Pomocou joysticku preveďte robota cez celé bludisko. &#039;&#039;&#039;Prejdite aj všetky slepé uličky&#039;&#039;&#039; — cieľom je získať kompletný obraz o geometrii bludiska.&lt;br /&gt;
# Pohybujte sa plynulo, bez prudkých zmien smeru. Pri otáčaní neprekračujte rotačnú rýchlosť 110°/s (limit gyroskopu).&lt;br /&gt;
# Po prechode bludiskom zastavte robota a ukončite záznam.&lt;br /&gt;
# Z robota stiahnite dva logovacie súbory: &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Formát záznamových súborov =&lt;br /&gt;
&lt;br /&gt;
== Súbor &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt; — odometria ==&lt;br /&gt;
&lt;br /&gt;
Každý riadok obsahuje jedno meranie, hodnoty sú oddelené medzerami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;timestamp_us&amp;amp;gt; &amp;amp;lt;enc_left&amp;amp;gt; &amp;amp;lt;enc_right&amp;amp;gt; &amp;amp;lt;gyro_deg&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Štruktúra súboru &amp;lt;code&amp;gt;robot.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Stĺpec&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Popis&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| 1 — Timestamp&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint64&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Čas merania v mikrosekundách&lt;br /&gt;
|-&lt;br /&gt;
|| 2 — Enc. Left&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kumulatívny počet tickov ľavého enkodéra (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
|| 3 — Enc. Right&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kumulatívny počet tickov pravého enkodéra (0–65 535)&lt;br /&gt;
|-&lt;br /&gt;
|| 4 — Gyro&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Uhol z gyroskopu v stupňoch (-180 až +180)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklad záznamov:&lt;br /&gt;
&lt;br /&gt;
  3067284773  1288  58777  174.98&lt;br /&gt;
  3067301111  1288  58777  174.98&lt;br /&gt;
  3067323915  1288  58777  174.98&lt;br /&gt;
&lt;br /&gt;
Frekvencia záznamu zodpovedá dátovej frekvencii robota, t. j. približne 50 Hz.&lt;br /&gt;
&lt;br /&gt;
== Súbor &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt; — lidar ==&lt;br /&gt;
&lt;br /&gt;
Každý riadok obsahuje jedno meranie laserového lúča:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;timestamp_us&amp;amp;gt; &amp;amp;lt;distance_mm&amp;amp;gt; &amp;amp;lt;angle_deg&amp;amp;gt; &amp;amp;lt;quality&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Štruktúra súboru &amp;lt;code&amp;gt;laser.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!| &#039;&#039;&#039;Stĺpec&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
!| &#039;&#039;&#039;Popis&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| 1 — Timestamp&lt;br /&gt;
|| &amp;lt;code&amp;gt;uint64&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Čas merania v mikrosekundách&lt;br /&gt;
|-&lt;br /&gt;
|| 2 — Distance&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Vzdialenosť k prekážke v milimetroch&lt;br /&gt;
|-&lt;br /&gt;
|| 3 — Angle&lt;br /&gt;
|| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Uhol laserového lúča v stupňoch (0–360), &#039;&#039;v smere hodinových ručičiek&#039;&#039; od prednej časti robota&lt;br /&gt;
|-&lt;br /&gt;
|| 4 — Quality&lt;br /&gt;
|| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Kvalita merania (0–15); 0 = neplatné&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklad záznamov:&lt;br /&gt;
&lt;br /&gt;
  3067236764  3713.75  351.047   15&lt;br /&gt;
  3067237463  3666.75  352.438   15&lt;br /&gt;
  3067237467  3708.75  353.812   15&lt;br /&gt;
&lt;br /&gt;
Jedna kompletná otáčka lidaru (sken) obsahuje typicky okolo 260 bodov. Pri scan rate cca 7,8 Hz to zodpovedá vzorkovacej frekvencii cca 2000 Hz.&lt;br /&gt;
&lt;br /&gt;
= Teoretický základ — ideálny prípad =&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole odvodíme všetky vzťahy za predpokladu, že dáta sú bezchybné: enkodéry nepretekajú, gyroskop nedriftuje a časy sú presne synchronizované. Praktické komplikácie riešime v kapitole [[#sec:prakticke|6]].&lt;br /&gt;
&lt;br /&gt;
== Kinematika diferenciálneho podvozku ==&lt;br /&gt;
&lt;br /&gt;
Robot má dve kolesá vzdialené &#039;&#039;L&#039;&#039; = 0,23 m. Stredom medzi nimi je referenčný bod &#039;&#039;P&#039;&#039;, ktorého polohu (x, y) a orientáciu &amp;lt;math&amp;gt;\theta&amp;lt;/math&amp;gt; chceme sledovať.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:kinematika&amp;quot; class=&amp;quot;figure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V každom časovom kroku (medzi vzorkou &#039;&#039;k-1&#039;&#039; a &#039;&#039;k&#039;&#039;) enkodéry napočítajú &amp;lt;math&amp;gt;\Delta tick_L&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;\Delta tick_R&amp;lt;/math&amp;gt; impulzov. Dráha jednotlivých kolies je: &amp;lt;math&amp;gt;d_L = \Deltatick_L · c_f,      d_R = \Deltatick_R · c_f,&lt;br /&gt;
\label{eq:dl_dr}&amp;lt;/math&amp;gt; kde &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt; je prepočtový faktor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Obr. 1:&#039;&#039;&#039; &#039;&#039;Kinematický model diferenciálneho podvozku. d&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;, d&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; sú dráhy kolies, d&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; je stredná dráha bodu P.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Stredná dráha (pohyb bodu &#039;&#039;P&#039;&#039;) a zmena orientácie sú: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{d_c = \frac{d_L + d_R}{2}},      \boxed{\Delta\theta = \frac{d_R - d_L}{L}}.&lt;br /&gt;
\label{eq:dc_dtheta}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Intuitívne: ak sa obe kolesá pohnú rovnako (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d_L = d_R&amp;lt;/math&amp;gt;), robot ide rovno (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta = 0&amp;lt;/math&amp;gt;). Ak sa pravé koleso pohne viac, robot zatáča doľava (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta &amp;gt; 0&amp;lt;/math&amp;gt; v štandardnej konvencii).&lt;br /&gt;
&lt;br /&gt;
== Aktualizácia polohy (dead reckoning) ==&lt;br /&gt;
&lt;br /&gt;
Polohu robota aktualizujeme iteratívne. Používame &#039;&#039;aproximáciu stredným uhlom&#039;&#039; (second-order midpoint method), ktorá je výrazne presnejšia než jednoduchá Eulerova metóda: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\theta_{mid} &amp;amp;= \theta(k{-}1) + \frac{\Delta\theta}{2} \\[4pt]&lt;br /&gt;
x(k) &amp;amp;= x(k{-}1) + d_c · \cos(\theta_{mid}) \\[2pt]&lt;br /&gt;
y(k) &amp;amp;= y(k{-}1) + d_c · \sin(\theta_{mid}) \\[2pt]&lt;br /&gt;
\theta(k) &amp;amp;= \theta(k{-}1) + \Delta\theta&lt;br /&gt;
\end{aligned}&lt;br /&gt;
}&lt;br /&gt;
\label{eq:update}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Počiatočné podmienky: &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x(0) = 0&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y(0) = 0&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(0) = 0&amp;lt;/math&amp;gt; (robot smeruje v osi &#039;&#039;x&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Tri zdroje orientácie ==&lt;br /&gt;
&lt;br /&gt;
Pre výpočet zmeny uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta&amp;lt;/math&amp;gt; máme tri možnosti:&lt;br /&gt;
&lt;br /&gt;
=== A) Len enkodéry ===&lt;br /&gt;
&lt;br /&gt;
Uhol sa počíta podľa rovnice [[#eq:dc_dtheta|[eq:dc_dtheta]]]. Jednoduché, ale citlivé na šmýkanie kolies.&lt;br /&gt;
&lt;br /&gt;
=== B) Len gyroskop ===&lt;br /&gt;
&lt;br /&gt;
Gyroskop Kobuki dáva priamo absolútny uhol (firmvér integruje uhlovú rýchlosť interne). Zmenu uhla medzi dvoma vzorkami vypočítame ako: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Delta\theta_{gyro} = [gyro(k) - gyro(k{-}1)] · \frac{\pi}{180}&lt;br /&gt;
\label{eq:gyro_delta}&amp;lt;/math&amp;gt; s korekciou pretečenia cez &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt; (pozri sekciu [[#sec:pretecenie_gyro|6.2]]). Táto metóda je odolná voči šmyku kolies, ale dlhodobo trpí driftom gyroskopu.&lt;br /&gt;
&lt;br /&gt;
=== C) Komplementárny filter ===&lt;br /&gt;
&lt;br /&gt;
Fúzia oboch zdrojov jedným parametrom &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha \in (0, 1)&amp;lt;/math&amp;gt;: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{\Delta\theta = \alpha · \Delta\theta_{gyro} + (1 - \alpha) · \Delta\theta_{enc}}&lt;br /&gt;
\label{eq:compfilter}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameter &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; vyjadruje “dôveru” v gyroskop. Typicky &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha = 0,95&amp;lt;/math&amp;gt; — gyroskop je na krátkych škálach presnejší, enkodéry kompenzujú jeho dlhodobý drift. Na ladenie použite uzavretú trasu — správne &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; minimalizuje odchýlku koncovej polohy od štartu.&lt;br /&gt;
&lt;br /&gt;
== Transformácia lidarových bodov do mapy ==&lt;br /&gt;
&lt;br /&gt;
Lidar meria vzdialenosť &#039;&#039;d&#039;&#039; v smere uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; (v stupňoch, rastúci &#039;&#039;v smere hodinových ručičiek&#039;&#039; od prednej časti robota). Cieľom je transformovať tento bod zo súradníc robota do globálnych (mapových) súradníc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:lidar&amp;quot; class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Priama transformácia z polárnych súradníc lidaru do mapy: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\boxed{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\alpha_{world} &amp;amp;= \theta - \alpha · \frac{\pi}{180} \\[4pt]&lt;br /&gt;
x_{global} &amp;amp;= x_R + \frac{d}{1000} · \cos(\alpha_{world}) \\[2pt]&lt;br /&gt;
y_{global} &amp;amp;= y_R + \frac{d}{1000} · \sin(\alpha_{world})&lt;br /&gt;
\end{aligned}&lt;br /&gt;
}&lt;br /&gt;
\label{eq:lidar_transform}&amp;lt;/math&amp;gt; kde &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta&amp;lt;/math&amp;gt; je orientácia robota v radiánoch, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; je uhol lidaru v stupňoch (CW), &#039;&#039;d&#039;&#039; je vzdialenosť v mm a &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x_R, y_R)&amp;lt;/math&amp;gt; je poloha robota v metroch. Znamienko mínus pred &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha&amp;lt;/math&amp;gt; konvertuje smysel otáčania z CW na matematicky kladný (CCW).&lt;br /&gt;
&lt;br /&gt;
= Riešenie praktických problémov =&lt;br /&gt;
&lt;br /&gt;
== Pretečenie enkodérov ==&lt;br /&gt;
&lt;br /&gt;
Enkodéry Kobuki sú 16-bitové bezznamienkové čítače s rozsahom &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; – &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt;. Keď čítač dosiahne &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt; a koleso sa ďalej otáča, hodnota preskočí na &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; (a opačne pri pohybe vzad). V surovom rozdiele &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick = enc(k) - enc(k{-}1)&amp;lt;/math&amp;gt; sa to prejaví obrovským skokom.&lt;br /&gt;
&lt;br /&gt;
Korekcia: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Deltatick_{cor} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
\Deltatick - 65536 &amp;amp; \text{ak } \Deltatick &amp;gt; 32768 \\&lt;br /&gt;
\Deltatick + 65536 &amp;amp; \text{ak } \Deltatick &amp;lt; -32768 \\&lt;br /&gt;
\Deltatick &amp;amp; \text{inak}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\label{eq:wrap_enc}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: yellow!20&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: warnorange&amp;quot;&amp;gt;{{Upozornenie|typ=pozor|text=&amp;lt;/span&amp;gt; Bez tejto korekcie dostanete v trajektórii obrovské skoky rádovo desiatky metrov. Toto je najčastejší zdroj chýb!}}&lt;br /&gt;
&lt;br /&gt;
Ukážka v Matlabu / Pythone:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;dTick = enc(k) - enc(k-1);&lt;br /&gt;
if dTick &amp;amp;gt; 32768&lt;br /&gt;
    dTick = dTick - 65536;&lt;br /&gt;
end&lt;br /&gt;
if dTick &amp;amp;lt; -32768&lt;br /&gt;
    dTick = dTick + 65536;&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;dTick = enc[k] - enc[k-1]&lt;br /&gt;
if dTick &amp;gt; 32768:&lt;br /&gt;
    dTick -= 65536&lt;br /&gt;
if dTick &amp;lt; -32768:&lt;br /&gt;
    dTick += 65536&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Pretečenie gyroskopu ==&lt;br /&gt;
&lt;br /&gt;
Gyroskop vracia uhol v rozsahu &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(-180^{\circ}, +180^{\circ}]&amp;lt;/math&amp;gt;. Pri prechode cez &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt; hodnota skočí, napr. z &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;+179^{\circ}&amp;lt;/math&amp;gt; na &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;-179^{\circ}&amp;lt;/math&amp;gt;. To nie je skutočná zmena o &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;358^{\circ}&amp;lt;/math&amp;gt;, ale o &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;+2^{\circ}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Korekcia: &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\Deltagyro_{cor} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
\Deltagyro - 360 &amp;amp; \text{ak } \Deltagyro &amp;gt; 180 \\&lt;br /&gt;
\Deltagyro + 360 &amp;amp; \text{ak } \Deltagyro &amp;lt; -180 \\&lt;br /&gt;
\Deltagyro &amp;amp; \text{inak}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\label{eq:wrap_gyro}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;dGyro = gyro(k) - gyro(k-1);&lt;br /&gt;
if dGyro &amp;amp;gt; 180&lt;br /&gt;
    dGyro = dGyro - 360;&lt;br /&gt;
end&lt;br /&gt;
if dGyro &amp;amp;lt; -180&lt;br /&gt;
    dGyro = dGyro + 360;&lt;br /&gt;
end&lt;br /&gt;
dTheta = dGyro * pi / 180;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;dGyro = gyro[k] - gyro[k-1]&lt;br /&gt;
if dGyro &amp;amp;gt; 180:&lt;br /&gt;
    dGyro -= 360&lt;br /&gt;
if dGyro &amp;amp;lt; -180:&lt;br /&gt;
    dGyro += 360&lt;br /&gt;
dTheta = dGyro * math.pi / 180&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Synchronizácia časových značiek ==&lt;br /&gt;
&lt;br /&gt;
Odometria sa zaznamenáva s frekvenciou &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;≈ 50 Hz&amp;lt;/math&amp;gt;, lidar produkuje &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;≈ 2000&amp;lt;/math&amp;gt; bodov za sekundu. Časové značky pochádzajú z rovnakých hodín, ale nie sú identické. Pre každý lidarový bod musíme nájsť najbližšiu polohu robota.&lt;br /&gt;
&lt;br /&gt;
Efektívne riešenie — paralelný prechod oboma logmi s jedným ukazovateľom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;ridx = 1;&lt;br /&gt;
for i = 1:length(laser_ts)&lt;br /&gt;
    while ridx &amp;amp;lt; N &amp;amp;amp;&amp;amp;amp; ...&lt;br /&gt;
      abs(robot_ts(ridx+1) ...&lt;br /&gt;
        - laser_ts(i)) &amp;amp;lt; ...&lt;br /&gt;
      abs(robot_ts(ridx) ...&lt;br /&gt;
        - laser_ts(i))&lt;br /&gt;
        ridx = ridx + 1;&lt;br /&gt;
    end&lt;br /&gt;
    % robot_ts(ridx) je &lt;br /&gt;
    % najblizsi k laser_ts(i)&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;ridx = 0&lt;br /&gt;
for i in range(len(laser_ts)):&lt;br /&gt;
    while ridx &amp;amp;lt; N-1 and \&lt;br /&gt;
      abs(robot_ts[ridx+1] &lt;br /&gt;
        - laser_ts[i]) &amp;amp;lt; \&lt;br /&gt;
      abs(robot_ts[ridx] &lt;br /&gt;
        - laser_ts[i]):&lt;br /&gt;
        ridx += 1&lt;br /&gt;
    # robot_ts[ridx] je &lt;br /&gt;
    # najblizsi k laser_ts[i]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Tento algoritmus má lineárnu zložitosť &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;O(N+M)&amp;lt;/math&amp;gt;, pretože ukazovateľ &amp;lt;code&amp;gt;ridx&amp;lt;/code&amp;gt; sa nikdy nevracia — funguje to, pretože oba logy sú chronologicky usporiadané.&lt;br /&gt;
&lt;br /&gt;
== Filtrovanie neplatných lidarových meraní ==&lt;br /&gt;
&lt;br /&gt;
Nie všetky lidarové body sú platné. Pred spracovaním je nutné vyradiť:&lt;br /&gt;
&lt;br /&gt;
* merania s nulovou vzdialenosťou (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d = 0&amp;lt;/math&amp;gt;) — lidar nezachytil odraz,&lt;br /&gt;
* merania s nízkou kvalitou (odporúčame prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\text{quality} ≥ 10&amp;lt;/math&amp;gt;),&lt;br /&gt;
* voliteľne merania mimo dosahu senzora (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d &amp;gt; 12000 mm&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;if laser_dist(i) &amp;amp;lt; 20 || ...&lt;br /&gt;
   laser_qual(i) &amp;amp;lt; 10&lt;br /&gt;
    continue;&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;if dist &amp;lt; 20 or quality &amp;lt; 10:&lt;br /&gt;
    continue&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
= Postup spracovania dát =&lt;br /&gt;
&lt;br /&gt;
Tu je celkový algoritmus zhrnutý do piatich krokov. Kúsky kódu z predchádzajúcich sekcií spojte do jedného skriptu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Načítajte oba súbory.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;R = load(&#039;robot.log&#039;);&lt;br /&gt;
robot_ts = R(:,1);&lt;br /&gt;
encL = R(:,2); encR = R(:,3);&lt;br /&gt;
gyro = R(:,4);&lt;br /&gt;
&lt;br /&gt;
L = load(&#039;laser.log&#039;);&lt;br /&gt;
laser_ts = L(:,1);&lt;br /&gt;
laser_d  = L(:,2);&lt;br /&gt;
laser_a  = L(:,3);&lt;br /&gt;
laser_q  = L(:,4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import numpy as np, math&lt;br /&gt;
R = np.loadtxt(&#039;robot.log&#039;)&lt;br /&gt;
robot_ts = R[:,0]&lt;br /&gt;
encL = R[:,1]; encR = R[:,2]&lt;br /&gt;
gyro = R[:,3]&lt;br /&gt;
&lt;br /&gt;
L = np.loadtxt(&#039;laser.log&#039;)&lt;br /&gt;
laser_ts = L[:,0]&lt;br /&gt;
laser_d  = L[:,1]&lt;br /&gt;
laser_a  = L[:,2]&lt;br /&gt;
laser_q  = L[:,3]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Vypočítajte trajektóriu robota&#039;&#039;&#039; (sekcie [[#sec:kinematika|5.1]]–[[#sec:deadreckoning|5.2]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pre každý krok &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k = 2, \ldots, N&amp;lt;/math&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Vypočítajte &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick_L&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Deltatick_R&amp;lt;/math&amp;gt; s korekciou pretečenia (rov. [[#eq:wrap_enc|[eq:wrap_enc]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Prepočítajte na dráhy &#039;&#039;d_L&#039;&#039;, &#039;&#039;d_R&#039;&#039; (rov. [[#eq:dl_dr|[eq:dl_dr]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Vypočítajte &#039;&#039;d_c&#039;&#039; a &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\Delta\theta&amp;lt;/math&amp;gt; (rov. [[#eq:dc_dtheta|[eq:dc_dtheta]]] alebo [[#eq:gyro_delta|[eq:gyro_delta]]] alebo [[#eq:compfilter|[eq:compfilter]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Aktualizujte &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x(k)&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y(k)&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(k)&amp;lt;/math&amp;gt; (rov. [[#eq:update|[eq:update]]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Výsledkom sú polia &amp;lt;code&amp;gt;robot_x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;robot_y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;robot_theta&amp;lt;/code&amp;gt; o dĺžke &#039;&#039;N&#039;&#039;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Transformujte lidarové body do mapy&#039;&#039;&#039; (sekcia [[#sec:lidar_transform|5.4]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pre každé platné meranie &#039;&#039;i&#039;&#039; (po filtrovaní, sekcia [[#sec:filter|6.4]]):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Nájdite najbližšiu polohu robota &#039;&#039;k&#039;&#039; podľa timestampu (sekcia [[#sec:sync|6.3]]).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Aplikujte transformáciu (rov. [[#eq:lidar_transform|[eq:lidar_transform]]]) s použitím &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x_R, y_R, \theta)&amp;lt;/math&amp;gt; z kroku &#039;&#039;k&#039;&#039;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Uložte globálne súradnice bodu do poľa mapy.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Vykreslite výsledok.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;figure; hold on; axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Steny bludiska&lt;br /&gt;
plot(map_x, map_y, &#039;.&#039;, ...&lt;br /&gt;
     &#039;Color&#039;, [.5 .5 .5], ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 1);&lt;br /&gt;
&lt;br /&gt;
% Trajektoria&lt;br /&gt;
plot(robot_x, robot_y, ...&lt;br /&gt;
     &#039;b-&#039;, &#039;LineWidth&#039;, 2);&lt;br /&gt;
&lt;br /&gt;
% Start a ciel&lt;br /&gt;
plot(0, 0, &#039;go&#039;, ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 10, ...&lt;br /&gt;
     &#039;MarkerFaceColor&#039;, &#039;g&#039;);&lt;br /&gt;
plot(robot_x(end), ...&lt;br /&gt;
     robot_y(end), &#039;rs&#039;, ...&lt;br /&gt;
     &#039;MarkerSize&#039;, 8, ...&lt;br /&gt;
     &#039;MarkerFaceColor&#039;, &#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
xlabel(&#039;x [m]&#039;);&lt;br /&gt;
ylabel(&#039;y [m]&#039;);&lt;br /&gt;
title(&#039;Mapa bludiska&#039;);&lt;br /&gt;
legend(&#039;Steny&#039;, &#039;Trajektoria&#039;, ...&lt;br /&gt;
       &#039;Start&#039;, &#039;Ciel&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
ax.set_aspect(&#039;equal&#039;)&lt;br /&gt;
ax.grid(True)&lt;br /&gt;
&lt;br /&gt;
# Steny bludiska&lt;br /&gt;
ax.plot(map_x, map_y, &#039;.&#039;,&lt;br /&gt;
        color=&#039;gray&#039;,&lt;br /&gt;
        markersize=0.5)&lt;br /&gt;
&lt;br /&gt;
# Trajektoria&lt;br /&gt;
ax.plot(robot_x, robot_y,&lt;br /&gt;
        &#039;b-&#039;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Start a ciel&lt;br /&gt;
ax.plot(0, 0, &#039;go&#039;,&lt;br /&gt;
        markersize=10)&lt;br /&gt;
ax.plot(robot_x[-1],&lt;br /&gt;
        robot_y[-1], &#039;rs&#039;,&lt;br /&gt;
        markersize=8)&lt;br /&gt;
&lt;br /&gt;
ax.set_xlabel(&#039;x [m]&#039;)&lt;br /&gt;
ax.set_ylabel(&#039;y [m]&#039;)&lt;br /&gt;
ax.set_title(&#039;Mapa bludiska&#039;)&lt;br /&gt;
ax.legend([&#039;Steny&#039;,&lt;br /&gt;
           &#039;Trajektoria&#039;,&lt;br /&gt;
           &#039;Start&#039;, &#039;Ciel&#039;])&lt;br /&gt;
plt.show()&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Porovnajte tri metódy orientácie.&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Vykreslite trajektóriu a priebeh uhla &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(t)&amp;lt;/math&amp;gt; pre všetky tri prístupy (A, B, C) do spoločného grafu. Diskutujte rozdiely.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kontrolné otázky a bonusové úlohy =&lt;br /&gt;
&lt;br /&gt;
# Prečo používame &#039;&#039;stredný uhol&#039;&#039; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta_{mid}&amp;lt;/math&amp;gt; a nie &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\theta(k{-}1)&amp;lt;/math&amp;gt;? Aká chyba by vznikla pri čistej Eulerovej metóde?&lt;br /&gt;
# Čo sa stane, ak vynecháte korekciu pretečenia enkodérov? Vyskúšajte a porovnajte výsledky.&lt;br /&gt;
# Pomocou mapy z lidaru odmerajte rozmery bludiska. Porovnajte so skutočnosťou.&lt;br /&gt;
# Dokážete z lidarových dát &#039;&#039;overiť&#039;&#039; prepočtovú konštantu &#039;&#039;c_f&#039;&#039;? &#039;&#039;Pomôcka:&#039;&#039; lidar meria vzdialenosti v milimetroch absolútne — nezávisí od &#039;&#039;c_f&#039;&#039;. Nájdite vzdialenú stenu viditeľnú zo začiatku aj z konca trasy a porovnajte posun nameraný lidarom s počtom tickov enkodéra.&lt;br /&gt;
# &#039;&#039;&#039;(Bonus)&#039;&#039;&#039; Implementujte jednoduchú mriežkovú mapu (occupancy grid) a porovnajte s mračnom bodov.&lt;br /&gt;
# &#039;&#039;&#039;(Bonus)&#039;&#039;&#039; Čo sa stane s mapou pri dlhšej jazde (desiatky metrov)? Prečo sa steny “rozmazávajú”? Aké riešenie ponúka SLAM?&lt;br /&gt;
&lt;br /&gt;
= Príloha: Užitočné konštanty a vzorce =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|| Rozchod kolies&lt;br /&gt;
|| &#039;&#039;L&#039;&#039; = 0,230 m&lt;br /&gt;
|-&lt;br /&gt;
|| Prepočtový faktor&lt;br /&gt;
|| &#039;&#039;c&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&#039;&#039; = 0,000085292 m tick&amp;lt;sup&amp;gt;−1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Pretečenie enkodérov&lt;br /&gt;
|| 16-bit: rozsah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;0&amp;lt;/math&amp;gt; – &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;65 535&amp;lt;/math&amp;gt;, prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±32 768&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Pretečenie gyroskopu&lt;br /&gt;
|| rozsah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt;, prah &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;±180^{\circ}&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Konverzia stupne → radiány&lt;br /&gt;
|| &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\alpha_{rad} = \alpha_{\deg} · \pi / 180&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| Konverzia mm → m&lt;br /&gt;
|| &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d_{\text{m}} = d_{mm} / 1000&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Cvičenia]]&lt;br /&gt;
[[Kategória:Mobilná robotika]]&lt;br /&gt;
[[Kategória:Kobuki]]&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
</feed>