0

Dependencies:   Box_buzz Box_led

Committer:
valentino14
Date:
Thu Feb 24 14:54:45 2022 +0000
Revision:
0:2898785200f6
Child:
1:0c88d5db040a
0;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
valentino14 0:2898785200f6 1 #include "mbed.h"
valentino14 0:2898785200f6 2 #include "led.h"
valentino14 0:2898785200f6 3 #include "buzzer.h"
valentino14 0:2898785200f6 4
valentino14 0:2898785200f6 5
valentino14 0:2898785200f6 6 Timer debounce; //tajmer koji koristimo za debounce
valentino14 0:2898785200f6 7 InterruptIn button(D7); //definiranje tipke za hardverski prekid
valentino14 0:2898785200f6 8 LED led1(D3); //definiranje pina za crvenu ledicu
valentino14 0:2898785200f6 9 LED led2(D4); //definiranje pina za plavu ledicu
valentino14 0:2898785200f6 10 Beep buzzer(D5); //definiranje pina za zvučnik
valentino14 0:2898785200f6 11 DigitalOut ledica(LED2); //definiranje ledice na Nucleo pločici
valentino14 0:2898785200f6 12 Ticker blink; //definiranje tickera
valentino14 0:2898785200f6 13 int a=0; //definiranje integera u nulu
valentino14 0:2898785200f6 14 int b=0;
valentino14 0:2898785200f6 15 int x=0;
valentino14 0:2898785200f6 16
valentino14 0:2898785200f6 17 //Frequency //Frekvencija svakog tona melodije
valentino14 0:2898785200f6 18 float a4=440.00;float b3=246.94;float b4b=446;float b4=493.88;
valentino14 0:2898785200f6 19 float c4=261.63;float c4_1=130;float c5=523.25;float c5s=554.40;
valentino14 0:2898785200f6 20 float d4=293.66;float d4b=277;float d5=587.33;
valentino14 0:2898785200f6 21 float e4=329.63;float e5=659.25;
valentino14 0:2898785200f6 22 float f4=349.23;float f4s=370.00;float f5=698.46;
valentino14 0:2898785200f6 23 float g3=196; float g4=392.00;float g4s=415.30;float g5=783.99;
valentino14 0:2898785200f6 24
valentino14 0:2898785200f6 25 //Duration //trajanje tonova
valentino14 0:2898785200f6 26 float t1=16; float t2=8; float t3=4; float t4=2; float t5=6;
valentino14 0:2898785200f6 27
valentino14 0:2898785200f6 28
valentino14 0:2898785200f6 29 //"Happy Birthday song" //prva melodija
valentino14 0:2898785200f6 30 float happy_freq[25] = {g4,g4,a4,g4,c5,b4,g4,g4,a4,g4,d5,c5,g4,g4,g5,e5,c5,b4,a4,f5,f5,e5,c5,d5,c5};
valentino14 0:2898785200f6 31 float happy_tempo[25] = {t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t3,t2,t3,t3,t3,t3,t3,t3};
valentino14 0:2898785200f6 32
valentino14 0:2898785200f6 33 void song1()
valentino14 0:2898785200f6 34 {
valentino14 0:2898785200f6 35 for(a=0; a<25; a++) { //petlja za prvu melodiju
valentino14 0:2898785200f6 36 buzzer.beep(happy_freq[a], happy_tempo[a]);
valentino14 0:2898785200f6 37 led1.state(1);
valentino14 0:2898785200f6 38 led2.state(0);
valentino14 0:2898785200f6 39 wait(0.05);
valentino14 0:2898785200f6 40 led1.state(0);
valentino14 0:2898785200f6 41 led2.state(1);
valentino14 0:2898785200f6 42 wait(1/happy_tempo[a]); //paljenje i gašenje ledica u ritmu melodije
valentino14 0:2898785200f6 43 if(x==2){ //pritiskom na tipkalo petlja se prekida i pokreće druga melodija
valentino14 0:2898785200f6 44 break;}
valentino14 0:2898785200f6 45 }
valentino14 0:2898785200f6 46 }
valentino14 0:2898785200f6 47
valentino14 0:2898785200f6 48 //''Scary song''
valentino14 0:2898785200f6 49 float scary_freq[20]={c5s, f4s, f4s, c5s, f4s, f4s, c5s, f4s, d5, f4s, c5s, f4s, f4s, c5s, f4s, f4s, c5s, f4s, d5, f4s};
valentino14 0:2898785200f6 50 float scary_tempo[20]={t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5, t5};
valentino14 0:2898785200f6 51
valentino14 0:2898785200f6 52 void song2()
valentino14 0:2898785200f6 53 {
valentino14 0:2898785200f6 54 for(b=0; b<20; b++) {
valentino14 0:2898785200f6 55 buzzer.beep(scary_freq[b], scary_tempo[b]);
valentino14 0:2898785200f6 56 led2.state(1);
valentino14 0:2898785200f6 57 led2.state(0);
valentino14 0:2898785200f6 58 wait(0.05);
valentino14 0:2898785200f6 59 led2.state(0);
valentino14 0:2898785200f6 60 led2.state(1);
valentino14 0:2898785200f6 61 wait(1/scary_tempo[b]);
valentino14 0:2898785200f6 62 if (x==3){
valentino14 0:2898785200f6 63 led1.state(0);
valentino14 0:2898785200f6 64 led2.state(0);
valentino14 0:2898785200f6 65 buzzer.beep(1000, 0.01);
valentino14 0:2898785200f6 66 break;}
valentino14 0:2898785200f6 67 }
valentino14 0:2898785200f6 68 }
valentino14 0:2898785200f6 69 //Funkcija za detekciju tipke
valentino14 0:2898785200f6 70 void pressbutton()
valentino14 0:2898785200f6 71 {
valentino14 0:2898785200f6 72 if(debounce.read_ms()>100) { //sprečavanje signala da titra
valentino14 0:2898785200f6 73 x++;
valentino14 0:2898785200f6 74 }
valentino14 0:2898785200f6 75 debounce.reset();
valentino14 0:2898785200f6 76 }
valentino14 0:2898785200f6 77
valentino14 0:2898785200f6 78
valentino14 0:2898785200f6 79 //Funkcija za blicanje zelene tipke kada je sklop aktivan
valentino14 0:2898785200f6 80 void active()
valentino14 0:2898785200f6 81 {
valentino14 0:2898785200f6 82 if(x==1 or x==2)
valentino14 0:2898785200f6 83 {
valentino14 0:2898785200f6 84 ledica=!ledica;
valentino14 0:2898785200f6 85 }
valentino14 0:2898785200f6 86 else{
valentino14 0:2898785200f6 87 ledica=0;
valentino14 0:2898785200f6 88 }
valentino14 0:2898785200f6 89 }
valentino14 0:2898785200f6 90 //Postavljanje početnog stanja sklopa
valentino14 0:2898785200f6 91 int main()
valentino14 0:2898785200f6 92 {
valentino14 0:2898785200f6 93 led1.state(0);
valentino14 0:2898785200f6 94 led2.state(0);
valentino14 0:2898785200f6 95 debounce.start();
valentino14 0:2898785200f6 96 button.rise(&pressbutton); //button koja poziva funkciju pressbutton na rastući brid signala tipke
valentino14 0:2898785200f6 97 blink.attach(&active,0.5); // blink ticker koji poziva funkciju active u intervalu 0.5
valentino14 0:2898785200f6 98 //while petlja
valentino14 0:2898785200f6 99 while (true) {
valentino14 0:2898785200f6 100 if(x==1){
valentino14 0:2898785200f6 101 song1();
valentino14 0:2898785200f6 102 }
valentino14 0:2898785200f6 103 else{
valentino14 0:2898785200f6 104 if(x==2){
valentino14 0:2898785200f6 105 song2();
valentino14 0:2898785200f6 106 }
valentino14 0:2898785200f6 107 if(x==3)
valentino14 0:2898785200f6 108 {
valentino14 0:2898785200f6 109 x=0;
valentino14 0:2898785200f6 110 }
valentino14 0:2898785200f6 111 }
valentino14 0:2898785200f6 112 }
valentino14 0:2898785200f6 113 }