UART Metronóm: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
| Riadok 29: | Riadok 29: | ||
t = 60000/BPM | t = 60000/BPM | ||
kde: | kde: t je interval medzi údermi v milisekundách, BPM je počet úderov za minútu. | ||
t je interval medzi údermi v milisekundách, | |||
BPM je počet úderov za minútu. | |||
Napríklad pri hodnote 120 BPM bude interval medzi jednotlivými údermi: | Napríklad pri hodnote 120 BPM bude interval medzi jednotlivými údermi: | ||
| Riadok 40: | Riadok 38: | ||
Použité komponenty: | Použité komponenty: | ||
1.Piezoelektrický bzučiak: | 1.Piezoelektrický bzučiak: | ||
Piezoelektrický bzučiak slúži na generovanie zvukového signálu metronómu. Je pripojený na výstup OC0A mikrokontroléra (pin PD6). Mikrokontrolér generuje obdĺžnikový signál, ktorý spôsobuje vibrácie piezoelektrického prvku a tým vznik zvuku. | Piezoelektrický bzučiak slúži na generovanie zvukového signálu metronómu. Je pripojený na výstup OC0A mikrokontroléra (pin PD6). Mikrokontrolér generuje obdĺžnikový signál, ktorý spôsobuje vibrácie piezoelektrického prvku a tým vznik zvuku. | ||
2. Časovač Timer0 | 2. Časovač Timer0: | ||
Timer0 je 8-bitový hardvérový časovač zabudovaný v mikrokontroléri ATmega328P. V projekte bol použitý na generovanie obdĺžnikového signálu pre bzučiak. | Timer0 je 8-bitový hardvérový časovač zabudovaný v mikrokontroléri ATmega328P. V projekte bol použitý na generovanie obdĺžnikového signálu pre bzučiak. | ||
Použité nastavenia: | Použité nastavenia: | ||
-režim CTC, | -režim CTC, | ||
-prepínanie výstupu OC0A pri zhode, | -prepínanie výstupu OC0A pri zhode, | ||
Verzia z 22:07, 22. máj 2026
Záverečný projekt predmetu MIPS / LS2026 - Karol Kilian
Zadanie
UART Metronóm
Cieľom projektu je vytvoriť jednoduchý elektronický metronóm riadený mikrokontrolérom AVR. Program komunikuje s používateľom prostredníctvom rozhrania UART, cez ktoré je možné zadať hodnotu BPM (beats per minute/počet úderov za minútu). Zadaná hodnota určuje rýchlosť metronómu.

Literatúra:
Analýza a opis riešenia
Projekt bol realizovaný pomocou mikrokontroléra ATmega328P, ktorý zabezpečuje spracovanie vstupných údajov z počítača a generovanie zvukového signálu pre metronóm. Používateľ zadáva hodnotu BPM cez sériovú komunikáciu UART pomocou terminálu v počítači. Program následne vypočíta časový interval medzi jednotlivými údermi a v pravidelných intervaloch aktivuje bzučiak.
Komunikácia medzi počítačom a mikrokontrolérom prebieha pomocou rozhrania UART s prenosovou rýchlosťou 9600 baudov. Používateľ zadá číselnú hodnotu BPM do terminálu a po potvrdení klávesom Enter sa hodnota odošle do mikrokontroléra. Program prijaté znaky uloží do poľa znakov (buffer) a následne ich pomocou funkcie atoi() prevedie na celé číslo. Ak je hodnota v povolenom rozsahu, nastaví sa ako nová hodnota BPM.
Na generovanie zvuku bol použitý hardvérový časovač Timer0 v režime CTC (Clear Timer on Compare Match). Výstup OC0A automaticky prepína svoj stav pri zhode časovača s hodnotou registra OCR0A, čím vzniká obdĺžnikový signál vhodný na ovládanie piezoelektrického bzučiaka. Zvuk metronómu vzniká krátkym zapnutím generovania signálu na približne 50 ms, čím sa vytvorí krátke „tiknutie“.
Čas medzi jednotlivými tiknutiami sa vypočíta podľa vzťahu:
t = 60000/BPM
kde: t je interval medzi údermi v milisekundách, BPM je počet úderov za minútu.
Napríklad pri hodnote 120 BPM bude interval medzi jednotlivými údermi:
t = 60000/120 = 500 ms
Program neustále kontroluje prítomnosť nových dát na UART rozhraní. Táto kontrola je realizovaná neblokujúcim spôsobom pomocou príznaku RXC0 v registri UCSR0A, takže metronóm môže pokračovať v činnosti aj počas čakania na nový vstup od používateľa.
Použité komponenty:
1.Piezoelektrický bzučiak: Piezoelektrický bzučiak slúži na generovanie zvukového signálu metronómu. Je pripojený na výstup OC0A mikrokontroléra (pin PD6). Mikrokontrolér generuje obdĺžnikový signál, ktorý spôsobuje vibrácie piezoelektrického prvku a tým vznik zvuku.
2. Časovač Timer0: Timer0 je 8-bitový hardvérový časovač zabudovaný v mikrokontroléri ATmega328P. V projekte bol použitý na generovanie obdĺžnikového signálu pre bzučiak.
Použité nastavenia:
-režim CTC, -prepínanie výstupu OC0A pri zhode, -prescaler 256.

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.

Algoritmus a program
Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...
#include <avr/io.h>
int main(void)
{
unsigned int measuredValue;
while (1)
{
/* relax */
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Zdrojový kód: Projekt_metronom_Kilian.zip
Overenie
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. Na konci uvádzame fotku hotového zariadenia.

Video:
Čo by som urobil inak
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.
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.