TVZ2022 / Mbed OS Pavetic_BozicnePjesme

Dependencies:   Pavetic_BuzzerLib Pavetic_MusicLib

Committer:
dpavetic
Date:
Sun Nov 27 13:01:54 2022 +0000
Revision:
0:e9d0eb34d345
Program koji simulira bozicni ugodaj reprodukcijom zvucnih signala na temelju odabira putem tipkala.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dpavetic 0:e9d0eb34d345 1 Program koji simulira božični ugođaj reprodukcijom
dpavetic 0:e9d0eb34d345 2 zvučnih signala na temelju odabira putem tipkala.
dpavetic 0:e9d0eb34d345 3
dpavetic 0:e9d0eb34d345 4 # Komponente
dpavetic 0:e9d0eb34d345 5 ## Hardware na proto board-u
dpavetic 0:e9d0eb34d345 6 - Gumb - Mijenja melodiju na klik (1...n) - Hardware interrupt
dpavetic 0:e9d0eb34d345 7 - Potenciometar - Mjerenje vrijednosti na ulazu (0.0-1.0) - Potrebno za mjerenje vremena promjene pjesme
dpavetic 0:e9d0eb34d345 8 - Zvučnik - Reprodukcija melodije
dpavetic 0:e9d0eb34d345 9 - Zuta LED - Signalizacija da traje melodija jingle bells
dpavetic 0:e9d0eb34d345 10 - Crvena LED - Signalizacija da traje melodija We wish you a merry christmas
dpavetic 0:e9d0eb34d345 11 - Zelena LED - Signalizacija da traje melodija Silent night
dpavetic 0:e9d0eb34d345 12
dpavetic 0:e9d0eb34d345 13 ## Interni hardware
dpavetic 0:e9d0eb34d345 14 - Ticker - Automatsko mijenjanje melodije u vremenu ovisnom o potenciometru (samo u modu `MODE_AUTO`)
dpavetic 0:e9d0eb34d345 15 - *0V = 5s*
dpavetic 0:e9d0eb34d345 16 - *1V = 25s*
dpavetic 0:e9d0eb34d345 17 - *`f(x) = 5 + 20*x [s]`* - Skaliranje funkcije pomaknute za 5s (min = 5s, max = 25s)
dpavetic 0:e9d0eb34d345 18 - Timer #1 - Mjerenje vremena trajanja melodije
dpavetic 0:e9d0eb34d345 19 - Timer #2 - Debounce efekt za gumb
dpavetic 0:e9d0eb34d345 20
dpavetic 0:e9d0eb34d345 21 ## Software
dpavetic 0:e9d0eb34d345 22 ### Melodije
dpavetic 0:e9d0eb34d345 23
dpavetic 0:e9d0eb34d345 24 Postoje 3 melodije:
dpavetic 0:e9d0eb34d345 25 - Jingle bells
dpavetic 0:e9d0eb34d345 26 - We wish you
dpavetic 0:e9d0eb34d345 27 - Silent night.
dpavetic 0:e9d0eb34d345 28 Ovisno o trenutnoj melodiji, svijetli pripadajuca LEDica.
dpavetic 0:e9d0eb34d345 29
dpavetic 0:e9d0eb34d345 30 ### Modovi rada
dpavetic 0:e9d0eb34d345 31 Postoje 3 moda rada:
dpavetic 0:e9d0eb34d345 32 - `MODE_OFF` - Sustav je ugašen - Buzzer ugašen kao i sve LEDice
dpavetic 0:e9d0eb34d345 33 - `MODE_SONG` - Repetetivno ponavljanje odabrane melodije - Buzzer svira, te svijetli jedna od pripadajucih LEDica za trenutnu melodiju
dpavetic 0:e9d0eb34d345 34 - `MODE_AUTO` - Automatsko mijenjanje melodije u vremenskom razmaku odabranom putem potenciometra - Buzzer svira, te svijetli jedna od pripadajucih LEDica za trenutnu melodiju
dpavetic 0:e9d0eb34d345 35
dpavetic 0:e9d0eb34d345 36 ### Buzzer i reprodukcija
dpavetic 0:e9d0eb34d345 37 Reprodukcija zvukova izvedena je kroz [Buzzer library](https://os.mbed.com/teams/TVZ2022/code/Pavetic_BuzzerLib/) koji sadrži programski kod potreban za inicijalizaciju PWM izlaza za buzzer i slanje pripadajucih signala na navedeni izlaz.
dpavetic 0:e9d0eb34d345 38
dpavetic 0:e9d0eb34d345 39 ### Pjesme
dpavetic 0:e9d0eb34d345 40 Inicijalizacija zvukova i sama struktura nota (pwm period + delay) napravljena je kroz [Music library](https://os.mbed.com/teams/TVZ2022/code/Pavetic_MusicLib/).
dpavetic 0:e9d0eb34d345 41
dpavetic 0:e9d0eb34d345 42 # Opis rada programa:
dpavetic 0:e9d0eb34d345 43 Na početku programa postavljen je mod `MODE_OFF` te je sustav ugašen.
dpavetic 0:e9d0eb34d345 44 Pritiskom na gumb u modu `MODE_OFF` (prvi pritisak gumba), mijenja se mod u
dpavetic 0:e9d0eb34d345 45 `MODE_SONG` te počinje svirati prva od ponudenih melodija. Nakon sto melodija
dpavetic 0:e9d0eb34d345 46 zavrsi, ukoliko nije došlo do promjene melodije ili prekida, ponovno se
dpavetic 0:e9d0eb34d345 47 započinje sa reprodukcijom iste melodije. Ukoliko tijekom reprodukcije dođe
dpavetic 0:e9d0eb34d345 48 do promjene moda ili melodije, trenutna melodija prekida sa reprodukcijom te
dpavetic 0:e9d0eb34d345 49 počinje reprodukcija sljedeće melodije, ili se sustav gasi ukoliko je došlo
dpavetic 0:e9d0eb34d345 50 do promjene moda u `MODE_OFF`.
dpavetic 0:e9d0eb34d345 51
dpavetic 0:e9d0eb34d345 52 Program je u modu `MODE_SONG` te svira prva pjesma i upaljena je zuta LEDica.
dpavetic 0:e9d0eb34d345 53 Drugim pritiskom gumba, mode ostaje isti, no mijenja se melodija te svira
dpavetic 0:e9d0eb34d345 54 druga melodija i svijetli crvena LEDica. Trećim pritiskom gumba, mod i dalje
dpavetic 0:e9d0eb34d345 55 ostaje isti i svira treca melodija uz upaljenu zelenu LEDicu.
dpavetic 0:e9d0eb34d345 56
dpavetic 0:e9d0eb34d345 57 Cetvrtim pritiskom gumba mijenja se mod u `MODE_OFF` te se resetira ciklus
dpavetic 0:e9d0eb34d345 58 melodija i započinje reprodukcija prve melodije. Melodija se reproducira
dpavetic 0:e9d0eb34d345 59 ovisno o vremenu izračunatom iz vrijednosti na potenciometru prema određenoj
dpavetic 0:e9d0eb34d345 60 formuli koja je navedena na vrhu. Nakon isteka vremena, mijenja se melodija i
dpavetic 0:e9d0eb34d345 61 započinje reprodukcija sljedeće melodije, te tako u krug sa svim melodijama.
dpavetic 0:e9d0eb34d345 62 - Vrijednost potenciometra očitava se cijelo vrijeme na zasebnom Threadu.
dpavetic 0:e9d0eb34d345 63 - Vrijeme reprodukcije melodije u modu `MODE_OFF` izračunava se kod dolaska u taj mode.
dpavetic 0:e9d0eb34d345 64
dpavetic 0:e9d0eb34d345 65 Petim pritiskom gumba, prekida se reprodukcija melodije te se mod mijenja u
dpavetic 0:e9d0eb34d345 66 `MODE_OFF` i program nastavlja ispočetka.