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

https://os.mbed.com/media/uploads/nzigic/mikro_led_bozicne_lampice_800.jpg

Committer:
nzigic
Date:
Thu Nov 26 16:23:40 2020 +0000
Revision:
0:3af3d8a1d741
Programski rad Mikroupravljaci

Who changed what in which revision?

UserRevisionLine numberNew 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 }