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

Committer:
ividransk
Date:
Fri Sep 11 15:01:13 2020 +0000
Revision:
0:e04c382aef70
GLazbena kutija.

Who changed what in which revision?

UserRevisionLine numberNew 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