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
main.cpp@7:73b6e074ca35, 2021-12-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |