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@4:996bfe97f346, 2021-12-01 (annotated)
- 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?
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 | 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 | } |