Program se sastoji od 3 ledice, 3 otpornika i piezo zvucnikom. U pocetnom stanju LED lampice i piezo zvucnik je ugasen. Pritiskom tipke na mikrokontroleru pokrece se prva melodija, crvena i zelena ledica naizmjenicno svijetle u ritmu melodije. Drugim pritiskom pokrece se druga melodija, zelena i zuta ledica naizmjenicno svijetle u ritmu melodije. Trecim pritiskom pokrece se treca melodije, crvena i zuta ledica naizmjenicno svijetle u ritmu melodije. Cetvrtim pritiskom zaustavlja se melodija odnosno rad piezo zvucnika, ledice se gase i program se postavlja u pocetno stanje.

Dependencies:   Cicvaric_buzzer Cicvaric_led

https://os.mbed.com/media/uploads/petarcicvaric/shema_-_lampice_sa_3_melodije_i_3_rezima_rada.png

Committer:
petarcicvaric
Date:
Wed Dec 01 13:38:43 2021 +0000
Revision:
4:996bfe97f346
Parent:
0:f3bc28b5b3b1
Child:
5:5ab7aea7322d
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
petarcicvaric 0:f3bc28b5b3b1 1 #include "mbed.h"
petarcicvaric 0:f3bc28b5b3b1 2 #include "led.h"
petarcicvaric 0:f3bc28b5b3b1 3 #include "buzzer.h"
petarcicvaric 0:f3bc28b5b3b1 4
petarcicvaric 0:f3bc28b5b3b1 5 Serial pc(USBTX, USBRX);
petarcicvaric 0:f3bc28b5b3b1 6 LED led1(D2);
petarcicvaric 0:f3bc28b5b3b1 7 LED led2(D3);
petarcicvaric 0:f3bc28b5b3b1 8 LED led3(D4);
petarcicvaric 0:f3bc28b5b3b1 9 Beep buzzer(D5);
petarcicvaric 0:f3bc28b5b3b1 10 Timer debounce;
petarcicvaric 0:f3bc28b5b3b1 11 InterruptIn tipka(USER_BUTTON);
petarcicvaric 0:f3bc28b5b3b1 12 int x=0;
petarcicvaric 0:f3bc28b5b3b1 13 int i=0;
petarcicvaric 0:f3bc28b5b3b1 14 int j=0;
petarcicvaric 0:f3bc28b5b3b1 15 int k=0;
petarcicvaric 0:f3bc28b5b3b1 16
petarcicvaric 0:f3bc28b5b3b1 17 //frekvencija nota
petarcicvaric 0:f3bc28b5b3b1 18 float a4=440.00;
petarcicvaric 0:f3bc28b5b3b1 19 float b3=246.94;
petarcicvaric 0:f3bc28b5b3b1 20 float b4=493.88;
petarcicvaric 0:f3bc28b5b3b1 21 float c4=261.63;
petarcicvaric 0:f3bc28b5b3b1 22 float c5=523.25;
petarcicvaric 0:f3bc28b5b3b1 23 float c5s=554.40;
petarcicvaric 0:f3bc28b5b3b1 24 float d4=293.66;
petarcicvaric 0:f3bc28b5b3b1 25 float d5=587.33;
petarcicvaric 0:f3bc28b5b3b1 26 float e4=329.63;
petarcicvaric 0:f3bc28b5b3b1 27 float e5=659.25;
petarcicvaric 0:f3bc28b5b3b1 28 float f4=349.23;
petarcicvaric 0:f3bc28b5b3b1 29 float f4s=370.00;
petarcicvaric 0:f3bc28b5b3b1 30 float f5=698.46;
petarcicvaric 0:f3bc28b5b3b1 31 float g4=392.00;
petarcicvaric 0:f3bc28b5b3b1 32 float g4s=415.30;
petarcicvaric 0:f3bc28b5b3b1 33 float g5=783.99;
petarcicvaric 0:f3bc28b5b3b1 34
petarcicvaric 4:996bfe97f346 35 //Trajanje tona
petarcicvaric 0:f3bc28b5b3b1 36 float t1=16;
petarcicvaric 0:f3bc28b5b3b1 37 float t2=8;
petarcicvaric 0:f3bc28b5b3b1 38 float t3=4;
petarcicvaric 0:f3bc28b5b3b1 39 float t4=2;
petarcicvaric 0:f3bc28b5b3b1 40 float t5=1;
petarcicvaric 0:f3bc28b5b3b1 41
petarcicvaric 0:f3bc28b5b3b1 42 //Melodija Jingle Bells
petarcicvaric 0:f3bc28b5b3b1 43 float jinglebells_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};
petarcicvaric 0:f3bc28b5b3b1 44 float jinglebells_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,};
petarcicvaric 0:f3bc28b5b3b1 45
petarcicvaric 0:f3bc28b5b3b1 46 //Melodija Santa Claus is coming to town
petarcicvaric 0:f3bc28b5b3b1 47 float santaclaus_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};
petarcicvaric 0:f3bc28b5b3b1 48 float santaclaus_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};
petarcicvaric 0:f3bc28b5b3b1 49
petarcicvaric 0:f3bc28b5b3b1 50 //Melodija We wish you a merry Christmas
petarcicvaric 0:f3bc28b5b3b1 51 float wewish_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};
petarcicvaric 0:f3bc28b5b3b1 52 float wewish_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};
petarcicvaric 0:f3bc28b5b3b1 53
petarcicvaric 0:f3bc28b5b3b1 54 //Funkcija za melodiju "Jingle Bells"
petarcicvaric 0:f3bc28b5b3b1 55 void Melodija1()
petarcicvaric 0:f3bc28b5b3b1 56 {
petarcicvaric 0:f3bc28b5b3b1 57 for(i=0; i<26; i++) {
petarcicvaric 0:f3bc28b5b3b1 58 buzzer.beep(jinglebells_freq[i], jinglebells_tempo[i]);
petarcicvaric 0:f3bc28b5b3b1 59 led1.stanje(1);
petarcicvaric 0:f3bc28b5b3b1 60 led2.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 61 wait(0.075);
petarcicvaric 0:f3bc28b5b3b1 62 led1.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 63 led2.stanje(1);
petarcicvaric 0:f3bc28b5b3b1 64 wait(1/jinglebells_tempo[i]);
petarcicvaric 0:f3bc28b5b3b1 65 if(x==2){
petarcicvaric 0:f3bc28b5b3b1 66 break;}
petarcicvaric 0:f3bc28b5b3b1 67 }
petarcicvaric 0:f3bc28b5b3b1 68 }
petarcicvaric 0:f3bc28b5b3b1 69 //Funkcija za melodiju "Santa Claus is coming to town"
petarcicvaric 0:f3bc28b5b3b1 70 void Melodija2()
petarcicvaric 0:f3bc28b5b3b1 71 {
petarcicvaric 0:f3bc28b5b3b1 72 for(j=0; j<28; j++) {
petarcicvaric 0:f3bc28b5b3b1 73 buzzer.beep(santaclaus_freq[j], santaclaus_tempo[j]);
petarcicvaric 0:f3bc28b5b3b1 74 led2.stanje(1);
petarcicvaric 0:f3bc28b5b3b1 75 led3.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 76 wait(0.075);
petarcicvaric 0:f3bc28b5b3b1 77 led2.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 78 led3.stanje(1);
petarcicvaric 0:f3bc28b5b3b1 79 wait(1/santaclaus_tempo[j]);
petarcicvaric 0:f3bc28b5b3b1 80 if(x==3){
petarcicvaric 0:f3bc28b5b3b1 81 break;}
petarcicvaric 0:f3bc28b5b3b1 82 }
petarcicvaric 0:f3bc28b5b3b1 83 }
petarcicvaric 0:f3bc28b5b3b1 84 //Funkcija za melodiju "We wish you a merry Christmas"
petarcicvaric 0:f3bc28b5b3b1 85 void Melodija3()
petarcicvaric 0:f3bc28b5b3b1 86 {
petarcicvaric 0:f3bc28b5b3b1 87 for(k=0; k<30; k++) {
petarcicvaric 0:f3bc28b5b3b1 88 buzzer.beep(wewish_freq[k], wewish_tempo[k]);
petarcicvaric 0:f3bc28b5b3b1 89 led1.stanje(1);
petarcicvaric 0:f3bc28b5b3b1 90 led3.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 91 wait(0.075);
petarcicvaric 0:f3bc28b5b3b1 92 led1.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 93 led3.stanje(1);
petarcicvaric 0:f3bc28b5b3b1 94 wait(1/wewish_tempo[k]);
petarcicvaric 0:f3bc28b5b3b1 95 if(x==4){
petarcicvaric 0:f3bc28b5b3b1 96 led1.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 97 led2.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 98 led3.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 99 buzzer.beep(500, 0.05);
petarcicvaric 0:f3bc28b5b3b1 100 break;}
petarcicvaric 0:f3bc28b5b3b1 101 }
petarcicvaric 0:f3bc28b5b3b1 102 }
petarcicvaric 0:f3bc28b5b3b1 103 void TipkaStisnuta()
petarcicvaric 0:f3bc28b5b3b1 104 {
petarcicvaric 0:f3bc28b5b3b1 105 if(debounce.read_ms()>200) {
petarcicvaric 0:f3bc28b5b3b1 106 x++;
petarcicvaric 0:f3bc28b5b3b1 107 }
petarcicvaric 0:f3bc28b5b3b1 108 debounce.reset();
petarcicvaric 0:f3bc28b5b3b1 109 }
petarcicvaric 0:f3bc28b5b3b1 110
petarcicvaric 0:f3bc28b5b3b1 111
petarcicvaric 0:f3bc28b5b3b1 112
petarcicvaric 0:f3bc28b5b3b1 113 int main()
petarcicvaric 0:f3bc28b5b3b1 114 {//Postavljanje početnog stanja LED-ica
petarcicvaric 0:f3bc28b5b3b1 115 led1.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 116 led2.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 117 led3.stanje(0);
petarcicvaric 0:f3bc28b5b3b1 118 debounce.start();
petarcicvaric 0:f3bc28b5b3b1 119 tipka.rise(&TipkaStisnuta);
petarcicvaric 0:f3bc28b5b3b1 120 //While petlja
petarcicvaric 0:f3bc28b5b3b1 121 while (true) {
petarcicvaric 0:f3bc28b5b3b1 122 if(x==1){
petarcicvaric 0:f3bc28b5b3b1 123 Melodija1();
petarcicvaric 0:f3bc28b5b3b1 124 }
petarcicvaric 0:f3bc28b5b3b1 125 else{
petarcicvaric 0:f3bc28b5b3b1 126 if(x==2){
petarcicvaric 0:f3bc28b5b3b1 127 Melodija2();
petarcicvaric 0:f3bc28b5b3b1 128 }
petarcicvaric 0:f3bc28b5b3b1 129 if(x==3){
petarcicvaric 0:f3bc28b5b3b1 130 Melodija3();
petarcicvaric 0:f3bc28b5b3b1 131 }
petarcicvaric 0:f3bc28b5b3b1 132 if(x==4){
petarcicvaric 0:f3bc28b5b3b1 133 x=0;
petarcicvaric 0:f3bc28b5b3b1 134 }
petarcicvaric 0:f3bc28b5b3b1 135 }
petarcicvaric 0:f3bc28b5b3b1 136 }
petarcicvaric 0:f3bc28b5b3b1 137 }