0

Dependencies:   Box_buzz Box_led

Committer:
valentino14
Date:
Thu Feb 24 18:17:08 2022 +0000
Revision:
1:0c88d5db040a
Parent:
0:2898785200f6
02;

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 1:0c88d5db040a 8 LED led1(D3); //definiranje pina za zelena ledicu
valentino14 1:0c88d5db040a 9 LED led2(D4); //definiranje pina za crvena 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 wait(0.05);
valentino14 0:2898785200f6 39 led1.state(0);
valentino14 0:2898785200f6 40 wait(1/happy_tempo[a]); //paljenje i gašenje ledica u ritmu melodije
valentino14 0:2898785200f6 41 if(x==2){ //pritiskom na tipkalo petlja se prekida i pokreće druga melodija
valentino14 0:2898785200f6 42 break;}
valentino14 0:2898785200f6 43 }
valentino14 0:2898785200f6 44 }
valentino14 0:2898785200f6 45
valentino14 0:2898785200f6 46 //''Scary song''
valentino14 0:2898785200f6 47 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 48 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 49
valentino14 0:2898785200f6 50 void song2()
valentino14 0:2898785200f6 51 {
valentino14 0:2898785200f6 52 for(b=0; b<20; b++) {
valentino14 0:2898785200f6 53 buzzer.beep(scary_freq[b], scary_tempo[b]);
valentino14 0:2898785200f6 54 led2.state(0);
valentino14 0:2898785200f6 55 wait(0.05);
valentino14 0:2898785200f6 56 led2.state(1);
valentino14 0:2898785200f6 57 wait(1/scary_tempo[b]);
valentino14 0:2898785200f6 58 if (x==3){
valentino14 0:2898785200f6 59 led1.state(0);
valentino14 0:2898785200f6 60 led2.state(0);
valentino14 0:2898785200f6 61 buzzer.beep(1000, 0.01);
valentino14 0:2898785200f6 62 break;}
valentino14 0:2898785200f6 63 }
valentino14 0:2898785200f6 64 }
valentino14 0:2898785200f6 65 //Funkcija za detekciju tipke
valentino14 0:2898785200f6 66 void pressbutton()
valentino14 0:2898785200f6 67 {
valentino14 1:0c88d5db040a 68 if(debounce.read_ms()>100) { //sprečava signalu da titra
valentino14 0:2898785200f6 69 x++;
valentino14 0:2898785200f6 70 }
valentino14 0:2898785200f6 71 debounce.reset();
valentino14 0:2898785200f6 72 }
valentino14 0:2898785200f6 73
valentino14 0:2898785200f6 74
valentino14 0:2898785200f6 75 //Funkcija za blicanje zelene tipke kada je sklop aktivan
valentino14 0:2898785200f6 76 void active()
valentino14 0:2898785200f6 77 {
valentino14 0:2898785200f6 78 if(x==1 or x==2)
valentino14 0:2898785200f6 79 {
valentino14 0:2898785200f6 80 ledica=!ledica;
valentino14 0:2898785200f6 81 }
valentino14 0:2898785200f6 82 else{
valentino14 0:2898785200f6 83 ledica=0;
valentino14 0:2898785200f6 84 }
valentino14 0:2898785200f6 85 }
valentino14 0:2898785200f6 86 //Postavljanje početnog stanja sklopa
valentino14 0:2898785200f6 87 int main()
valentino14 0:2898785200f6 88 {
valentino14 0:2898785200f6 89 led1.state(0);
valentino14 0:2898785200f6 90 led2.state(0);
valentino14 0:2898785200f6 91 debounce.start();
valentino14 1:0c88d5db040a 92 button.rise(&pressbutton); // poziva funkciju pressbutton na rastući brid signala tipke
valentino14 0:2898785200f6 93 blink.attach(&active,0.5); // blink ticker koji poziva funkciju active u intervalu 0.5
valentino14 0:2898785200f6 94 //while petlja
valentino14 0:2898785200f6 95 while (true) {
valentino14 0:2898785200f6 96 if(x==1){
valentino14 0:2898785200f6 97 song1();
valentino14 0:2898785200f6 98 }
valentino14 0:2898785200f6 99 else{
valentino14 0:2898785200f6 100 if(x==2){
valentino14 0:2898785200f6 101 song2();
valentino14 0:2898785200f6 102 }
valentino14 0:2898785200f6 103 if(x==3)
valentino14 0:2898785200f6 104 {
valentino14 0:2898785200f6 105 x=0;
valentino14 0:2898785200f6 106 }
valentino14 0:2898785200f6 107 }
valentino14 0:2898785200f6 108 }
valentino14 0:2898785200f6 109 }