Sklop koji spaja rad LED-ica i piezzo buzzera stvarajući Božićni ugođaj. 3 LED diode predstavljaju lampice za bor te svijetle izmjenicno. Piezzo buzzer služi za konstantno sviranje božićnih pjesama (Santa claus is coming to town, Jingle Bells, We wish you a merry Christmas). Svakim tonom koji se odsvira na piezzo buzzeru LED-ice naprave jedan krug svijetljenja stvarajući dojam lampica za bor. User_Button tipkalo na pločici zaustavlja rad lampica na 5sek, a integrirana zelena LD2 pokazuje ispravnost programa tako što koristi ticker, te svijetli u intervalima 1 sek.
Dependencies: buzzer
Diff: main.cpp
- Revision:
- 0:3af3d8a1d741
diff -r 000000000000 -r 3af3d8a1d741 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Nov 26 16:23:40 2020 +0000 @@ -0,0 +1,108 @@ +#include "mbed.h" +#include "Flasher.h" +#include "buzzer.h" + +Beep buzzer(D2); +Flasher led1(D4); +Flasher led2(D5); +Flasher led3(D6); +InterruptIn button(USER_BUTTON); +DigitalOut workingLED(LED2); +Timer debounce; +Ticker flipper; + +//frekvencija melodija +float a4=440.00; +float b3=246.94; +float b4=493.88; +float c4=261.63; +float c5=523.25; +float c5s=554.40; +float d4=293.66; +float d5=587.33; +float e4=329.63; +float e5=659.25; +float f4=349.23; +float f4s=370.00; +float f5=698.46; +float g4=392.00; +float g4s=415.30; +float g5=783.99; + +//trajanje tona +float t1=16; +float t2=8; +float t3=4; +float t4=2; +float t5=1; + +//Santa claus is coming to town +float santa_freq[28] = {g4,e4,f4,g4,g4,g4,a4,b4,c5,c5,c5,e4,f4,g4,g4,g4,a4,g4,f4,f4,e4,g4,c4,e4,d4,f4,b3,c4}; +float santa_tempo[28] = {t2,t2,t2,t3,t3,t3,t2,t2,t3,t3,t3,t2,t2,t3,t3,t3,t2,t2,t3,t4,t3,t3,t3,t3,t3,t4,t3,t5}; + +//Jingle Bells +float jingle_freq[26] = {e5,e5,e5,e5,e5,e5,e5,g5,c5,d5,e5,f5,f5,f5,f5,f5,e5,e5,e5,e5,e5,d5,d5,e5,d5,g5}; +float jingle_tempo[26] = {t2,t2,t3,t2,t2,t3,t2,t2,t2,t2,t4,t2,t2,t2,t2,t2,t2,t2,t1,t1,t2,t2,t2,t2,t3,t3,}; + +//We wish you a merry Christmas +float wish_freq[30] = {e4,a4,a4,b4,a4,g4s,f4s,f4s,f4s,b4,b4,c5s,b4,a4,g4s,e4,e4,c5s,c5s,d5,c5s,b4,a4,f4s,e4,e4,f4s,b4,g4s,a4}; +float wish_tempo[30] = {t3,t3,t2,t2,t2,t2,t3,t3,t3,t3,t2,t2,t2,t2,t3,t3,t3,t3,t2,t2,t2,t2,t3,t3,t2,t2,t3,t3,t3,t4}; + +float time_delay = 0.5; +void flip(void); +void interrupt(void); + +int main() +{ + debounce.start(); + button.rise(&interrupt); + flipper.attach(&flip,time_delay); + int i,j; + + while(1) { + + for(i=0; i<28; i++) { + buzzer.beep(santa_freq[i], santa_tempo[i]); + led1.flash(1); + led2.flash(1); + led3.flash(1); + wait(1/santa_tempo[i]); + } + wait(1); + + for(j=0; j<2; j++) { + for(i=0; i<26; i++) { + buzzer.beep(jingle_freq[i], jingle_tempo[i]); + led1.flash(1); + led2.flash(1); + led3.flash(1); + wait(1/jingle_tempo[i]); + } + } + wait(1); + + for(i=0; i<30; i++) { + buzzer.beep(wish_freq[i], wish_tempo[i]); + led1.flash(1); + led2.flash(1); + led3.flash(1); + wait(1/wish_tempo[i]); + } + wait(2); + } +} + +void flip() +{ + workingLED = !workingLED; +} + +//Zaustavlja rad na 5 sec +void interrupt() +{ + + if (debounce.read_ms()>200) { + wait_us(5000000); + } + debounce.reset(); +}