![](/media/cache/group/tvz-logo.png.50x50_q85.png)
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
main.cpp@0:3af3d8a1d741, 2020-11-26 (annotated)
- Committer:
- nzigic
- Date:
- Thu Nov 26 16:23:40 2020 +0000
- Revision:
- 0:3af3d8a1d741
Programski rad Mikroupravljaci
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nzigic | 0:3af3d8a1d741 | 1 | #include "mbed.h" |
nzigic | 0:3af3d8a1d741 | 2 | #include "Flasher.h" |
nzigic | 0:3af3d8a1d741 | 3 | #include "buzzer.h" |
nzigic | 0:3af3d8a1d741 | 4 | |
nzigic | 0:3af3d8a1d741 | 5 | Beep buzzer(D2); |
nzigic | 0:3af3d8a1d741 | 6 | Flasher led1(D4); |
nzigic | 0:3af3d8a1d741 | 7 | Flasher led2(D5); |
nzigic | 0:3af3d8a1d741 | 8 | Flasher led3(D6); |
nzigic | 0:3af3d8a1d741 | 9 | InterruptIn button(USER_BUTTON); |
nzigic | 0:3af3d8a1d741 | 10 | DigitalOut workingLED(LED2); |
nzigic | 0:3af3d8a1d741 | 11 | Timer debounce; |
nzigic | 0:3af3d8a1d741 | 12 | Ticker flipper; |
nzigic | 0:3af3d8a1d741 | 13 | |
nzigic | 0:3af3d8a1d741 | 14 | //frekvencija melodija |
nzigic | 0:3af3d8a1d741 | 15 | float a4=440.00; |
nzigic | 0:3af3d8a1d741 | 16 | float b3=246.94; |
nzigic | 0:3af3d8a1d741 | 17 | float b4=493.88; |
nzigic | 0:3af3d8a1d741 | 18 | float c4=261.63; |
nzigic | 0:3af3d8a1d741 | 19 | float c5=523.25; |
nzigic | 0:3af3d8a1d741 | 20 | float c5s=554.40; |
nzigic | 0:3af3d8a1d741 | 21 | float d4=293.66; |
nzigic | 0:3af3d8a1d741 | 22 | float d5=587.33; |
nzigic | 0:3af3d8a1d741 | 23 | float e4=329.63; |
nzigic | 0:3af3d8a1d741 | 24 | float e5=659.25; |
nzigic | 0:3af3d8a1d741 | 25 | float f4=349.23; |
nzigic | 0:3af3d8a1d741 | 26 | float f4s=370.00; |
nzigic | 0:3af3d8a1d741 | 27 | float f5=698.46; |
nzigic | 0:3af3d8a1d741 | 28 | float g4=392.00; |
nzigic | 0:3af3d8a1d741 | 29 | float g4s=415.30; |
nzigic | 0:3af3d8a1d741 | 30 | float g5=783.99; |
nzigic | 0:3af3d8a1d741 | 31 | |
nzigic | 0:3af3d8a1d741 | 32 | //trajanje tona |
nzigic | 0:3af3d8a1d741 | 33 | float t1=16; |
nzigic | 0:3af3d8a1d741 | 34 | float t2=8; |
nzigic | 0:3af3d8a1d741 | 35 | float t3=4; |
nzigic | 0:3af3d8a1d741 | 36 | float t4=2; |
nzigic | 0:3af3d8a1d741 | 37 | float t5=1; |
nzigic | 0:3af3d8a1d741 | 38 | |
nzigic | 0:3af3d8a1d741 | 39 | //Santa claus is coming to town |
nzigic | 0:3af3d8a1d741 | 40 | 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}; |
nzigic | 0:3af3d8a1d741 | 41 | 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}; |
nzigic | 0:3af3d8a1d741 | 42 | |
nzigic | 0:3af3d8a1d741 | 43 | //Jingle Bells |
nzigic | 0:3af3d8a1d741 | 44 | 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}; |
nzigic | 0:3af3d8a1d741 | 45 | 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,}; |
nzigic | 0:3af3d8a1d741 | 46 | |
nzigic | 0:3af3d8a1d741 | 47 | //We wish you a merry Christmas |
nzigic | 0:3af3d8a1d741 | 48 | 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}; |
nzigic | 0:3af3d8a1d741 | 49 | 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}; |
nzigic | 0:3af3d8a1d741 | 50 | |
nzigic | 0:3af3d8a1d741 | 51 | float time_delay = 0.5; |
nzigic | 0:3af3d8a1d741 | 52 | void flip(void); |
nzigic | 0:3af3d8a1d741 | 53 | void interrupt(void); |
nzigic | 0:3af3d8a1d741 | 54 | |
nzigic | 0:3af3d8a1d741 | 55 | int main() |
nzigic | 0:3af3d8a1d741 | 56 | { |
nzigic | 0:3af3d8a1d741 | 57 | debounce.start(); |
nzigic | 0:3af3d8a1d741 | 58 | button.rise(&interrupt); |
nzigic | 0:3af3d8a1d741 | 59 | flipper.attach(&flip,time_delay); |
nzigic | 0:3af3d8a1d741 | 60 | int i,j; |
nzigic | 0:3af3d8a1d741 | 61 | |
nzigic | 0:3af3d8a1d741 | 62 | while(1) { |
nzigic | 0:3af3d8a1d741 | 63 | |
nzigic | 0:3af3d8a1d741 | 64 | for(i=0; i<28; i++) { |
nzigic | 0:3af3d8a1d741 | 65 | buzzer.beep(santa_freq[i], santa_tempo[i]); |
nzigic | 0:3af3d8a1d741 | 66 | led1.flash(1); |
nzigic | 0:3af3d8a1d741 | 67 | led2.flash(1); |
nzigic | 0:3af3d8a1d741 | 68 | led3.flash(1); |
nzigic | 0:3af3d8a1d741 | 69 | wait(1/santa_tempo[i]); |
nzigic | 0:3af3d8a1d741 | 70 | } |
nzigic | 0:3af3d8a1d741 | 71 | wait(1); |
nzigic | 0:3af3d8a1d741 | 72 | |
nzigic | 0:3af3d8a1d741 | 73 | for(j=0; j<2; j++) { |
nzigic | 0:3af3d8a1d741 | 74 | for(i=0; i<26; i++) { |
nzigic | 0:3af3d8a1d741 | 75 | buzzer.beep(jingle_freq[i], jingle_tempo[i]); |
nzigic | 0:3af3d8a1d741 | 76 | led1.flash(1); |
nzigic | 0:3af3d8a1d741 | 77 | led2.flash(1); |
nzigic | 0:3af3d8a1d741 | 78 | led3.flash(1); |
nzigic | 0:3af3d8a1d741 | 79 | wait(1/jingle_tempo[i]); |
nzigic | 0:3af3d8a1d741 | 80 | } |
nzigic | 0:3af3d8a1d741 | 81 | } |
nzigic | 0:3af3d8a1d741 | 82 | wait(1); |
nzigic | 0:3af3d8a1d741 | 83 | |
nzigic | 0:3af3d8a1d741 | 84 | for(i=0; i<30; i++) { |
nzigic | 0:3af3d8a1d741 | 85 | buzzer.beep(wish_freq[i], wish_tempo[i]); |
nzigic | 0:3af3d8a1d741 | 86 | led1.flash(1); |
nzigic | 0:3af3d8a1d741 | 87 | led2.flash(1); |
nzigic | 0:3af3d8a1d741 | 88 | led3.flash(1); |
nzigic | 0:3af3d8a1d741 | 89 | wait(1/wish_tempo[i]); |
nzigic | 0:3af3d8a1d741 | 90 | } |
nzigic | 0:3af3d8a1d741 | 91 | wait(2); |
nzigic | 0:3af3d8a1d741 | 92 | } |
nzigic | 0:3af3d8a1d741 | 93 | } |
nzigic | 0:3af3d8a1d741 | 94 | |
nzigic | 0:3af3d8a1d741 | 95 | void flip() |
nzigic | 0:3af3d8a1d741 | 96 | { |
nzigic | 0:3af3d8a1d741 | 97 | workingLED = !workingLED; |
nzigic | 0:3af3d8a1d741 | 98 | } |
nzigic | 0:3af3d8a1d741 | 99 | |
nzigic | 0:3af3d8a1d741 | 100 | //Zaustavlja rad na 5 sec |
nzigic | 0:3af3d8a1d741 | 101 | void interrupt() |
nzigic | 0:3af3d8a1d741 | 102 | { |
nzigic | 0:3af3d8a1d741 | 103 | |
nzigic | 0:3af3d8a1d741 | 104 | if (debounce.read_ms()>200) { |
nzigic | 0:3af3d8a1d741 | 105 | wait_us(5000000); |
nzigic | 0:3af3d8a1d741 | 106 | } |
nzigic | 0:3af3d8a1d741 | 107 | debounce.reset(); |
nzigic | 0:3af3d8a1d741 | 108 | } |