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 21:43:03 2021 +0000
Revision:
7:73b6e074ca35
Parent:
6:3ccf4bf61049
Child:
8:35e50a21f3e8
final final

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