Operácie

Kuchynské minutky

Z SensorWiki

Verzia z 16:12, 8. máj 2024, ktorú vytvoril StudentMIPS (diskusia | príspevky) (Algoritmus a program)

Záverečný projekt predmetu MIPS / LS2024 - Ján Ulej


Zadanie

Zostrojte kuchynské minútky. Cez sériovú linku načítajte čas. Po uplynutí času bzučiak zahrá melódiu.

Vývojová doska Arduino Nano.

Literatúra:


Analýza a opis riešenia

Kladný pól reproduktora (bzučiaka) som pripojil na mikroprocesor pin PD6. Ešte som medzi pin PD6 a kladný pól bzučiaka pripojil 220 ohm odpor ktorí slúži na odrušenie šumov ktoré potom vidno na sériovej komunikácii. Tlačidlo som pripojil tiež cez 220 ohm odpor na pin PD7.

Súčiastky.

Schéma zapojenia

Schéma zapojenia bzučiaka a tlačidla.


Algoritmus a program

Použil som knižnicu <uart.h> kde som si dodefinoval funkcie aby mi fungovalo načítavanie a výpis cez sériovú linku. Na načítavanie som použil 'scanf' a na výpis 'printf'. Tiež som použil knižnice <avr/interrupt.h> na prerušenia a <until/delay.h> na oneskorenie. Premenné ktoré som použil v prerušení som zadefinoval ako static volatile. Vytvoril som si prerušenie kde sa mi odčítaval čas. Realizoval som to pomocou 16-bitového počítadla T1. Vytvoril som funkciu 'hudba()' v ktorej som zadefinoval frekvencie a dĺžku jednotlivých tónov. Na generovanie frekvencií na výstupe som použil počítadlo 'Timer0' v režime generátora frekvencie 'CTC'. V hlavnom programe som nastavil tlačidlo ako vstup a zapol pull-up rezistor. Na ukladanie stavu tlačidla som použil dátový typ Enumerate. V hlavnej slučke načítam pomocou sériovej komunikácie čas vo formáte minúty:sekundy. Následne minúty premením na sekundy. Pomocou 'printf' vypisujem čas tiež vo formáte minúty:sekundy. Po uplynutí zvoleného času je zavolaná funkcia 'hudba()'. Skončenie prehrávania hudby a opätovné načítanie času je zabezpečené zatlačením tlačidla.


#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);

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

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 záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.

Aplikácia.

Video:

Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.