Pritiskom na gumb pokreće se Božićna melodija sa LED efektom, Prilikom ponovnog pritiska gumba pokreće se drugačija Božićna melodija sa drugačijim LED efektom.
Dependencies: mbed
main.cpp@0:e04c382aef70, 2020-09-11 (annotated)
- Committer:
- ividransk
- Date:
- Fri Sep 11 15:01:13 2020 +0000
- Revision:
- 0:e04c382aef70
GLazbena kutija.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ividransk | 0:e04c382aef70 | 1 | #include "mbed.h" |
ividransk | 0:e04c382aef70 | 2 | InterruptIn button(p18); |
ividransk | 0:e04c382aef70 | 3 | PwmOut buzzer(p21); |
ividransk | 0:e04c382aef70 | 4 | DigitalOut A(LED1); |
ividransk | 0:e04c382aef70 | 5 | DigitalOut B(LED2); |
ividransk | 0:e04c382aef70 | 6 | Timer debounce; // Debounce timer |
ividransk | 0:e04c382aef70 | 7 | int counter = 0; |
ividransk | 0:e04c382aef70 | 8 | void Melodija1(void); |
ividransk | 0:e04c382aef70 | 9 | void Melodija2(void); |
ividransk | 0:e04c382aef70 | 10 | |
ividransk | 0:e04c382aef70 | 11 | int main() { |
ividransk | 0:e04c382aef70 | 12 | while(1) { |
ividransk | 0:e04c382aef70 | 13 | |
ividransk | 0:e04c382aef70 | 14 | if(button.read()==1) |
ividransk | 0:e04c382aef70 | 15 | { |
ividransk | 0:e04c382aef70 | 16 | } |
ividransk | 0:e04c382aef70 | 17 | if(button.read()==0) |
ividransk | 0:e04c382aef70 | 18 | { |
ividransk | 0:e04c382aef70 | 19 | counter++; |
ividransk | 0:e04c382aef70 | 20 | if( counter % 2 == 0 ){ |
ividransk | 0:e04c382aef70 | 21 | debounce.start(); |
ividransk | 0:e04c382aef70 | 22 | Melodija2(); |
ividransk | 0:e04c382aef70 | 23 | debounce.reset(); |
ividransk | 0:e04c382aef70 | 24 | } |
ividransk | 0:e04c382aef70 | 25 | if(counter%2==1){ |
ividransk | 0:e04c382aef70 | 26 | debounce.start(); |
ividransk | 0:e04c382aef70 | 27 | Melodija1(); |
ividransk | 0:e04c382aef70 | 28 | debounce.reset(); |
ividransk | 0:e04c382aef70 | 29 | } |
ividransk | 0:e04c382aef70 | 30 | } |
ividransk | 0:e04c382aef70 | 31 | } |
ividransk | 0:e04c382aef70 | 32 | } |
ividransk | 0:e04c382aef70 | 33 | |
ividransk | 0:e04c382aef70 | 34 | |
ividransk | 0:e04c382aef70 | 35 | void Melodija1() { |
ividransk | 0:e04c382aef70 | 36 | if (debounce.read_ms()>100){ |
ividransk | 0:e04c382aef70 | 37 | |
ividransk | 0:e04c382aef70 | 38 | float frequency[]={329,329,329,329,329,329,329,392,261,293,329,0,349,349,349,329,329,329,329,293,293,329,293,392,0, 329,329,329,329,329,329,329,392,261,293,329,0, 349,349,349,329,329,329,392,392,349,293,261,0,196,329,293,261,196,0, 196,329,293,261,220,0,220,349,329,293,392,0,440,392,349,293,329,0,196,329,293,261,196,0,196,329,293,261,220,0,220,349,329,293,392,0,440,392,349,293,261}; //trajanje nota |
ividransk | 0:e04c382aef70 | 39 | float beat[]={1,1,2,1,1,2,1,1,1,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,1,1,1,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1}; |
ividransk | 0:e04c382aef70 | 40 | |
ividransk | 0:e04c382aef70 | 41 | for (int i=0;i<=97;i++) { |
ividransk | 0:e04c382aef70 | 42 | buzzer.period(1/(frequency[i])); //PWM perioda |
ividransk | 0:e04c382aef70 | 43 | buzzer=0.3; // Duty cycle |
ividransk | 0:e04c382aef70 | 44 | wait(0.3*beat[i]); |
ividransk | 0:e04c382aef70 | 45 | if(i%2==0){ //LED-ice |
ividransk | 0:e04c382aef70 | 46 | A=1; |
ividransk | 0:e04c382aef70 | 47 | B=0; |
ividransk | 0:e04c382aef70 | 48 | } |
ividransk | 0:e04c382aef70 | 49 | else{ |
ividransk | 0:e04c382aef70 | 50 | A=0; |
ividransk | 0:e04c382aef70 | 51 | B=1; |
ividransk | 0:e04c382aef70 | 52 | } |
ividransk | 0:e04c382aef70 | 53 | } |
ividransk | 0:e04c382aef70 | 54 | buzzer=0; |
ividransk | 0:e04c382aef70 | 55 | } } |
ividransk | 0:e04c382aef70 | 56 | |
ividransk | 0:e04c382aef70 | 57 | |
ividransk | 0:e04c382aef70 | 58 | void Melodija2(){ |
ividransk | 0:e04c382aef70 | 59 | if (debounce.read_ms()>100){ |
ividransk | 0:e04c382aef70 | 60 | |
ividransk | 0:e04c382aef70 | 61 | float frequency[]={392,330,349,392,392,392,440,494,523,523,523,330,349,392,392,392,440,392,349,349,330,392,262,330,294,349,247,262}; |
ividransk | 0:e04c382aef70 | 62 | float beat[]={8,8,8,4,4,4,8,8,4,4,4,8,8,4,4,4,8,8,4,2,4,4,4,4,4,2,4,1}; |
ividransk | 0:e04c382aef70 | 63 | |
ividransk | 0:e04c382aef70 | 64 | for (int i=0;i<=28;i++) { |
ividransk | 0:e04c382aef70 | 65 | buzzer.period(1/(frequency[i])); //PWM perioda |
ividransk | 0:e04c382aef70 | 66 | buzzer=0.2; // Duty cycle |
ividransk | 0:e04c382aef70 | 67 | wait(0.2*beat[i]); |
ividransk | 0:e04c382aef70 | 68 | if(i%2==0){ //LED-ice |
ividransk | 0:e04c382aef70 | 69 | A=1; |
ividransk | 0:e04c382aef70 | 70 | B=0;} |
ividransk | 0:e04c382aef70 | 71 | else{ |
ividransk | 0:e04c382aef70 | 72 | A=0; |
ividransk | 0:e04c382aef70 | 73 | B=1;} |
ividransk | 0:e04c382aef70 | 74 | } |
ividransk | 0:e04c382aef70 | 75 | buzzer=0; |
ividransk | 0:e04c382aef70 | 76 | } } |
ividransk | 0:e04c382aef70 | 77 |